In software development, choosing the right set of tools or technology stack to execute given business needs is always challenging, and in most cases contested amongst the management or CTOs whose responsibility is to ensure a good solution is built.
In some organisations or businesses, a developer / programmer may have the opportunity of choosing her/ his own programming stack or set of tools to develop the business solution.
Most software solutions are used for extended period, so would require constant maintenance and refactoring, or sometimes addition of new features and re-write of some parts – it is dynamic and complex.
And sometimes, the architects or the developers who designed/ built the solution may not be working with the organisation when the solution would require “attention”.
Therefore, it is inevitable for the CTOs or developers to deeply reason and consider certain things before choosing the technology stack for the business solution. In this article, we will enumerate and discuss some of the factors to consider before choosing tools for your business solution. Choosing the right tools can go a long way to providing a great support to your core business values.
The factors to consider before choosing your set of tools are as follow:
- Type of License (Software and Tools)
- Operating System (Dev & Production environment)
- Programming Language
- Development Tools (IDE, Libraries and Frameworks)
- Type of Solution
- Stack Behaviour / Characteristics
- Target Sector
- Community Support
- Business / Company behind the Tech
- Backward compatibility
- Others factors
Either during development or production stages, various tools are involved, and they are licensed. The license could be open-source or proprietary license. The type of license of the software/ tools will determine the cost of developing, running, and maintaining your solutions. Therefore, it is important that a developer considers this before choosing which tools to use.
Although the cloud has made operating systems (OS) a commodity- as the cloud welcomes any tool, platform, programming language and whatever makes one happy – yet OS is quite an important factor to consider either during development or production stages of your solution. Which OS one uses during development will determine the sets of available tools one could use. There are certain tools that are Windows-only, Linux-only, or even MacOS-only.
Notwithstanding that the recent cross-platform culture is blurring this gap, yet OS plays a vital role and should be considered when choosing your tools. It will determine the cost of production and availability of tools at one’s reach. OS is also a crucial factor to consider because of stability, security, productivity, and performance during production/ development stages of your solution.
Programming language is very fundamental, and it is one of the tools that developers are most concerned about. Although developers may prefer to choose their own favourite programming languages, but most times the organisation will detect what to use. Because of cross-platform nature of the programming ecosystem, a programming language can be cross-compiled or transpiled to different targeted platform.
In addition to the capability and behaviour of the languages, it is also important to consider the popularity and userbase of the languages. This contributes to the longevity of the language, as well as easiness during recruiting developers. For instance, look at the below results of surveys from Stack Overflow in 2019. This will give you or your team an idea of how popular a language might be and its usage, and whether it is loved and wanted by the community.
Development tools are as important as programming languages. Most times, they determine which programming languages a team can adopt and even development platform to adopt. For instance, if your loved and preferred Integrated Development Environment (IDE) runs only on Windows or Linux, you would like to develop on the OS and prefer software development platform that runs perfectly on it.
The development tools to consider include IDEs, Libraries and Frameworks. Because of their cardinal importance, it is inevitable that one chooses his or her IDEs/ Framework very well – because one should use whichever IDEs/ tools make him or her happy. And when developers are incredibly happy, they can be productive.
IDEs and Libraries are expected to provide good debugging experience, refactoring capabilities, code analysis, code inspection and suggestions etc. So, a developer should consider the business support and community usage of these tools as it would affect his/ her productivity.
This is a straightforward one to make. There are some business solutions that require peculiar tech stack. The organisation cannot just use "anyhow" tech there in the wild -either it is developed internally or use supported tech from other reliable companies. For instance, some of the tech stacks used by NASA to land its rocket on the moon are highly specialised tech – they are not readily available there in the wild (maybe, things have changed). So, it is not something the developer can easily choose from the wide as it pleases him / her. Therefore, this is another crucial factor to consider before choosing a tech stack.
Another example is the highly regulated markets such as banking/ financial, intelligence and oil/ gas sectors. They are careful of the tech stack and platform they use as their business dealings are quite sensitive.
Therefore, when choosing a tech stack, always consider the versatility of the tech – whether the same tech and skillset can be used in a wide variety of business solutions. Some tech stack are highly specialised to a particular solution – which is very good – but most times organisations tend to use a tech stack that would enable them to re-use their skillset be it in the web, desktop, IoT, AI/ ML or Big Data; and some tech stack are good at this. So, such tech stack would be considered as viable option for a business solution.
The type of tech stack to choose for a business solution also depends on the target sector – the sector in which the tech will be used e.g. banking, oil & gas, education, or government sector etc.
Although open source techs are gaining tractions, but not in all the sectors, because of the license and fidelity of the techs. For instance, the banking and oil & gas sectors would consider the license of the tech and the business supporting the tech before adopting it. Inversely, such sector as education and NGOs would go for reliable open such techs because their culture is geared towards adopting open-source techs. Not that they will not use proprietary tech when the need arises, but they will by default search for open-source alternative first. So, tech stack that have been in the open-source space are mostly used in the education sector.
But the security agencies and government, using open-source tech are not their default culture – they would rather pay highly for proprietary tech stack and be sure of vendor support and security. So that is why most times developers in these sectors are forced to use certain tech stack.
Community support of given tech stacks is important and should be considered when choosing tech stack for your solution. Community provides lot of values in diverse ways such as providing answers to challenges developers face while using a stack. Sometimes, the community provides adequate documentations and resources and help to propagate the tech stack.
So, when developers are having some difficulties they can go to such communities as GitHub, Stack Overflow, or some Fora to get help. So, the healthier the communities, the more viable the platform/ tech stack. Therefore, community support should be considered when choosing a tech stack for your software business solution
The support behind a technology is important – be it open-source or close-source/ proprietary. This is because of various support, continuity/longevity, and progress of the tech.
There are many great open-sourced projects on GitHub which are not being widely adopted because they are being managed by an individual as a side-project or the company behind the projects is not “big” enough. Most times before organisation or companies choose a tech stack to use – especially open-sourced tech – they usually check for who is behind it; whether they could get a support when needed and if the tech would be continued and evolved with time. And, when reported issues or bugs are not being effectively dealt with by the owner of the project, companies tend to shy away from such project.
For example, tech stack such as Angular, TypeScript, React Native, Flutter, .NET, Xamarin, Python etc., usually get attention and popularity by developers because of the resources and company behind them. A lot of developers – both internal and external – work on them on daily basis; providing support and resolving customers’ reported bugs. Hence, end-users (companies and individuals) will have confidence adopting such a stack for their projects.
These techs are all open-source and are backed by giant tech companies. So, one can argue that the support and investment these techs will receive from the backers would be enormous. The tech will be evolving progressively, and long-term support will be guaranteed to some degree. For instance, Twitter Bootstrap (a CSS framework) is backed by Twitter and it has received wide adoption and viable community, as well as good support by the community and Twitter. And this gives other software companies the confidence to adopt the framework, and they also can contribute to its development on GitHub.
I should say, all the big fortune companies consider this factor before choosing a tech solution. Compatibility is of high importance to these companies as most of their important and sensitivity business solutions depends on older piece of tech – so any new tech stack must, to some level, have backward compatibility.
And this is where Microsoft shines the most and many big companies trust Microsoft for it. For instance, VB6 runtime can still run on the latest Microsoft Windows OS – Windows 10. So, companies can just migrate their solutions having faith that they will work with minimum effort - without rewriting the entire solutions.
Many banks, medical companies and NASA are still using Windows XP and Windows 7, and Microsoft is still providing security patches and supporting these legacy OSes. And this is what most companies consider before adopting tech stack and deployment environment.
Also, there are billions of lines of code in production, so adopting new tech that will not give the companies full fidelity or assurance regarding the support of their already existing system, is not an option. For instance, the Python programming language community is still suffering the dilemma and dichotomy between Python version 2 and 3.
Other factors to consider while choosing tech stack for your business solutions are:
- Cross platform "Ability"
- Availability of developers and architect
- Web-based or desktop-based solution
- Cloud "Ability"
This is not an exhaustive list, neither should this list be exhausted while choosing your tech stack for your software solution. Some of the points in the list might not be necessary or applicable to your own team or solution you are developing. This is just a guide to assist you in choosing the most practicable tech stack for your solution.
In this article, we discussed the choice of right technology and solutions for your business, and how to make the right choice and the factors to consider while choosing solutions for your business.
- Considering Cost is important
- Business Support and Bug Fixing
- Platform with good documentations and resources
- Good community support/ Materials
- Availability of developers
- Flexibility and extensibility of the tech stack
- Knowing which companies are using a tech stack is important as well
- And the evolving and innovating ability of the chosen tech stack