Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Programming / scripting languages in use #35

Open
luke-slowen opened this issue Mar 10, 2020 · 13 comments
Open

Programming / scripting languages in use #35

luke-slowen opened this issue Mar 10, 2020 · 13 comments

Comments

@luke-slowen
Copy link
Collaborator

We need clarity around the programming / scripting languages in use across the department and clear principles / guidelines for use.

@himal-mandalia @hsmahal - let's use this issue as a starting point to gather info and populate a new page in the technical guidance. I'll create a new branch for us to work in.

@OutKa5t
Copy link
Contributor

OutKa5t commented Mar 10, 2020

Happy to input too.

@luke-slowen
Copy link
Collaborator Author

New branch and page to capture 'the list' - fill your boots

@mattonfoot
Copy link

mattonfoot commented Mar 13, 2020

I find it a little confusing to list supersets, frameworks and runtimes for JavaScript but not other languages such as C# ( presumably .NET, .NET Core, MVC and Web API ) and Ruby ( presumably Jekyll, middleman and Ruby on Rails ) after all i'm not sure how many developers I know could get a complex web app running with just C# alone and some developers I have met assume you mean .NET MVC when you say C# along with the ones that assume ReactJS when you mention FrontEnd or JavaScript. Also we don't mention Express, Connect or Hapi which ever is used.

Maybe JavaScript and NodeJS should be listed seperately as if they were individual scripting languages, due to the fact that browsers and NodeJS include access to different global objects, and many people attribute these global objects with the language ( i.e. "document" and dare I say it... "console" ).

HTML, CSS, SASS and LESS are not mentioned.

For API definition / client generation do we include Swagger and JSON Schema as supersets of JSON, also what about HAL do we not use that ? and presumably if we include Dynamics we also need to include API Gateway and ... Power Apps ?

If XML is "legacy" - which we need to define - presumably XSLT is too ?

We appear to be bringing applications, tools and platforms into the conversation, i.e. Excel and Dynamics, but not the languages they support like VBScript in Excel, not sure about Dynamics or is JSON + C#.

Should this be including application specific configuration formats such as used by Logstash, and Graphana or standardised configuration file formats such as INI and dot env.

Is there also Dockerfile and presumably docker-compose, I haven't seen Terraform or Helm yet.

Additionally I think this is a very good repository of standards and principles that we could adapt for our purposes https://github.com/DEFRA/software-development-standards

@pgchamberlin
Copy link

I wonder how much this could be owned and contributed to by practitioner user groups around the department? In my experience it works well to bring people together and support them to define these things for themselves (with appropriate guidance and oversight of course).

With the GDS Way we started with something quite bare bones but built it up with contributions from the various specialist groups in the department. A "GDS Way Forum" meeting happens monthly to shepherd the ongoing work, bringing together TAs, "Head-of"s, and leads in dev and ops. It's evolved into something that's actively maintained and has a wide range of contributors.

@OutKa5t
Copy link
Contributor

OutKa5t commented Mar 13, 2020

Hopefully the idea is that the whole repo can be maintained by the wider community along with https://github.com/DFE-Digital/technical-guidance although I do wonder about the bleed between both repos and in this case specifically https://dfe-digital.github.io/technical-guidance/guides/default-technology-stack/#the-dfe-digital-technology-stack

If this is a true list of languages for whatever reason why dont we just write the output from the API https://developer.github.com/v3/repos/#list-languages ? Granted those using non Github repos wont get collected but it gives you an evolving and easily maintained list.

Agree with @mattonfoot that some of the list seems inconsistent.

@himal-mandalia
Copy link
Contributor

Nice to see some activity on this.

So right now I believe this is an info gathering exercise to get a "lay of the land" in terms of languages, frameworks and technologies being used. Pulling together the points raised in the various comments, I would recommend:

  • The output from https://developer.github.com/v3/repos/#list-languages could be a good starting point to work up a rough list of what's in the wild, as suggested by @OutKa5t
  • We'd need to do some categorisation, not just by type of language/framework/technology but the context it is used in, as some can have multiple contexts. Ties into @mattonfoot's comment
  • Users/community - we'd want to follow up with the people using all this. We want the contributors and maintainers to be the practitioners, and in some cases use this as a driver to create communities where disparate and isolated sets of users exist. @pgchamberlin's point

@OutKa5t - https://dfe-digital.github.io/technical-guidance/guides/default-technology-stack/#the-dfe-digital-technology-stack is a quick and dirty placeholder for something which should be broken out into sections in future.

@luke-slowen thoughts?

@luke-slowen
Copy link
Collaborator Author

Thanks all, really valuable insight and input.

Agree on your summary points @himal-mandalia, would also like to get Andy Emley to take a look (as the unofficial gatekeeper until we bring in a Head of Software Development profession) - will ping this thread on to him.

Very much just an info gathering exercise at present, so we don't want to go too heavy on the output just yet.

@luke-slowen
Copy link
Collaborator Author

Some starting points on user needs for related guidance and approach. Please expand, add, correct :)

  • As a new supplier / contractor to the department, I need to know what programming languages are supported and that the department has the capability to run with, so that I can be sure what I develop can be iterated and supported in future
  • As a new developer, I need to understand what the standards are I need to work to, so that…
  • As a developer, I need to understand the what platform operability exists (e.g. logging and monitoring), so that…
  • As a greenfield team, we need a clear steer on technology / development choices (e.g. what is standard / common), so that…
  • As someone seeking to assure consistency in software development across the department, I need... so that...

@luke-slowen
Copy link
Collaborator Author

A great set of coding standards from DEFRA - https://github.com/DEFRA/software-development-standards/blob/master/standards/common_coding_standards.md

@himal-mandalia
Copy link
Contributor

himal-mandalia commented Jul 9, 2020

Really good points @luke-slowen and thanks for refreshing this. It's timely since we've just had a Principal Developer start and the Head of Software Development campaign is in flight.

We need to greatly expand this skeletal guidance to cover the general and the specific:

  • General coding guidelines, how we do pull requests, testing etc
  • Specific style guides and patterns for languages, frameworks and technologies, e.g Ruby, C#

DEFRA example is great.

Will message you.

@luke-slowen
Copy link
Collaborator Author

Agree @himal-mandalia - Andy Emley was really keen we focus on the user needs, then develop the guidance to meet those. Let's get the new Principle Developer on board.

@peteryates
Copy link
Member

peteryates commented Jul 9, 2020

I think SQL is worth covering in addition to programming/markup languages. Its use varies by project (and many will exclusively use an ORM) but it's extremely easy to quickly make a mess. Gitlab have an excellent SQL style guide.

Edit. But they're wrong wrt spaces vs tabs 😪

@himal-mandalia
Copy link
Contributor

@peteryates don't start the ancient spaces vs tabs war! (Emacs vs Vim to follow no doubt)

Good suggestion. I'm not sure how much hand coded SQL goes on but definitely something we should look into. There's also idiomatic differences based on flavour, e.g. PostgreSQL vs SQL Server.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants