Choosing programming languages in software engineering is at the heart of building apps, API’s and backend services. It’s one choice in a sea of many that a company must make when taking on a ‘digital transformation’ strategy.
For many companies the choice of programming language is partly contextual (based on their current skillset and resources) and partly historical (based on what they currently have). It is often pre-determined but it’s important to choose them wisely given the sort of ramifications they have on your entire software manufacturing lifecycle.
This article is not about cutting corners, it is meant to promote a conversation around simplifying the toolset and the number of skills a company must hire for.
- Standardised Tooling and Frameworks
- Better Code Re-Use
Let’s dive in deeper…
Tooling And Frameworks
Firstly, a quick recap on what tools and frameworks are!
Tool – a tool is something your organisation uses to make their development team more productive as they ‘write code’. Tools may; spot errors, clean up formatting in files, allow developers to create build variants (for deployment into multiple environments) and more.
Framework – a framework is something you use in your organisation to ‘get stuff done’. It is typically some code written by someone else that allows a developer to do things faster because all of the common work is done for them. We can have mobile app frameworks, web app frameworks and even logging and security frameworks.
One of the main costs of an organisation is salaries. Time spent on salaries includes the time it takes for developers needing to learn new things related to the job at hand. This includes learning new tools and frameworks.
For example at Logic Room we have a fairly standard toolset and framework set. We use things like React, Node, Webpack and Fuse.js. When we build multiple apps me and my colleagues can quickly understand them because as a team we have common understanding and shared knowledge.
Choosing a single language has a direct effect on speed because less learning needs to be done. Reducing this learning allows more time for development which will make delivery faster.
When a team builds an app they are building two types of code. They are building code that leverages the framework and code that models the business problem or rather they should be.
If you want teams to be able to build software faster; sharing code is a strategy that can be used.
If we share code across some apps and backend services then we need a way to distribute this code.
I worked on a project a few years ago where we had a few different apps that all needed common functionality within the organisation. They all needed the same way to handle security, authentication and also text formatting. The company would set the policy on security and needed to be sure all the apps were implementing it in the right way. And some of the text display that the company needed was implemented in the marketing department and needed to be rolled out across all apps.
We found that by simplifying to one language we were able to more rapidly implement features because a lot of the plumbing work had already been done (in the packaged code).
By choosing a single language in your company you can begin to get better code sharing across your teams which helps you become more productive and deliver faster!
There are many types of language you can use. For example C# is a very popular language with good tooling and frameworks from .net.
This gives you the option to use the very powerful React and React Native universe of web and mobile frameworks.
Modern distributed systems in a company have more than a ‘few’ moving parts. Companies want to integrate backend systems, liberate and monetise data, build customer touch points and re-engineer internal systems to make their workflow more efficient.
- Reduce the amount of time developers spend learning new frameworks
- Improve quality because standardised tooling can be used company wide
- Share code on multiple platforms using ‘package management’
I am the founder of Logic Room.