DFE-Digital / technical-guidance

Principles, standards and guidance for digital delivery teams
https://technical-guidance.education.gov.uk/
Other
22 stars 18 forks source link

Programming / scripting languages in use #35

Open luke-slowen opened 4 years ago

luke-slowen commented 4 years ago

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 commented 4 years ago

Happy to input too.

luke-slowen commented 4 years ago

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

mattonfoot commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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:

@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 commented 4 years ago

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 commented 4 years ago

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

luke-slowen commented 4 years ago

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

himal-mandalia commented 4 years ago

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:

DEFRA example is great.

Will message you.

luke-slowen commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

@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.