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.
In this article we will talk about ‘speeding up development’ by choosing only a single language. Many people don’t like talking about ‘speeding up’ in software development because they worry it may lead to ‘cutting corners’.
This article is not about cutting corners, I am advocating having a software development ‘strategy’ and part of this strategy may include choosing a single language.
There are two main benefits/impacts from working with a single language;
- 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.
By choosing a single language companies can cut down on the number of frameworks and tools they use because now they can adopt company wide standards. By standardising across apps and teams they can reduce the overhead of developers having to constantly learn and re-learn how these frameworks and tools work. They get a productivity hit because of this and this will mean developers will be faster in their development efforts.
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 we want teams to be able to build software faster then 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.
So what we did was to write all the apps in a single language. By doing this we could use something called a ‘package manager’ and put all the common/shared code in the same location. When we needed to change one app we simply pulled in the correct ‘version’ of the common code. We could do this because we had very good automated testing across all of the 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.
I help our clients build robust and flexible software by either doing it for them with my team in Reading or coaching their in-house team to do it.
If you would like to reach out to me please do!