A very common question for anyone who works with startups, or even with new products or services in a larger organisation, is ‘what technology stack should I use to build my new web, cloud, mobile service or product?’.
A technology stack, in simple terms, is a defined set of components or functions that are built together to support a solutions – e.g. a particular database, web server, backend and front end frameworks etc.
The first tech stack to really start being referred to in this way was probably LAMP (Linux, Apache, MySQL, PHP/Perl/Pyton). This was the most common tech stack for new web applications around 2000 as we started a new century.
For larger enterprise applications, many were built on a J2EE or a ASP/.NET stack.
As Javascript became more popular as a backend as well as a front end language, the MEAN (MongoDB, Express.js, Angular, Node.js) stack became more prominent, closely followed by MERN which replaces Angular with React and MEVN which use Vue.js instead of Angular or React.
In parallel, language or technology specific stacks emerged including Ruby on Rails, Python based stacks like Django and Flask and newer Java based stacks like Spring and Stripes.
None these stacks are absolute and different DB’s, web servers and front end frameworks etc can be mixed and matched but there are advantages with starting with a set of technologies that has a good sized community using them together.
So how to decide? The correct answer is, of course, that it depends on many factors including what particular service or product you want to build.
And that really is the correct answer – to give as accurate an answer as possible you need to look at the service, the likelihood of change and growth, the devices and geographical regions you want to target, the existing skill sets in your organisation and the pool of talent in your region etc.
In reality, many startups either don’t have the time to investigate the best options, or they inherit parts or even all of the stack from previous work they are building on.
On the flip side, there is a real danger of getting stuck in analysis paralysis – continually debating the tech stack to use rather than working on the project. Technologists often have very strong opinions on a particular framework, technology or programming language and debates can get quite heated.
So to get started and to help to break any deadlock, it really is useful to look at example current and trending technology stacks. It’s clearly important to focus on examples close to your own target solution – i.e. if you are building a mobile and web app with a cloud backend, you will want a different tech stack than someone building an embedded system based consumer device.
When selecting a Technology stack there really is no magic answer