Give me your hand and let’s imagine a scenario together. You are the lead developer/CTO of a new and shiny Startup. The wireframes, the designs, a document that describes the main features – all are ready. It seems that on the product side of things you know pretty well where you are headed.
The next stage of course is to choose the right startup tech stack to implement the idea and make the product “come to life”. In this post, I’ll try to outline the major things you need to take into consideration for this.
- Runway – one of the most important things you have to ask yourself is how much money do you have until you hit rock bottom? This can have a lot of impact on your decision what stack to choose. For example – if you have 5 years of runway, it might be OK to chose a technology you are not very familiar with and hire some strong developers to assist you. On the other hand – if you have only one year worth of runway you better stick with something you know well. In addition, if you have a lot of runway you can choose a technology that takes more time to develop in the short run but has stability, scalability and maintenance benefits in the long run. For instance, if you have a lot of runway you might chose a compiled language (I’m thinking Java here) which adds an overhead of compiling the whole thing before you run your code to test if it works (this can add up to a lot of hours pretty quickly). Instead of using something that can facilitate “quick and dirty” programming (ehm, PHP). Last but not least – if you have a lot of runway it makes sense to choose an LTS stack that will serve as a foundation for years to come.
- Existing Code– if you have an open source project or at least some libraries that can give you features out of the box and they are written in a certain language. Or if you have legacy code you can base on. It might be worth while to stick to using this specific stack or at least do a through check of how much functionality can be implemented with zero to minimal customization. You need to take into account the issue of licensing though (GPL and friends).
- Tech Stack popularity – if it’s really warranted you sure can (and should) choose a relatively obscure tech stack to get things done. For instance, Whatsapp has been built on Erlang. A little known at the time functional language and VM. However, for Whatsapp it was the right tool to build a billion messages per day infrastructure. However, if you can implement a product by several solutions, it makes a lot of sense to take popularity into account. The more popular the tech stack – the easier it will be for you to find solutions for problems that will definitely pop up sooner or later (ehm, StackOverflow). In addition, it will be easier to hire a software architect and/or developers for your team.
- Familiarity – this one is a bit straight forward. The more familiar you are with a specific tech stack, the faster the development will be. The more aware are you of all the “nuts and bolts” of the language, DB, framework and etc. – the easier it will be to debug, test and deploy your code.
- Support – if you are not an expert on the particular tech stack you intend to choose, it’s always helpful to have commercial support to assist you. StackOverflow and Google in general are great – but there are cases where the answer is just not there.
Choosing the right startup tech stack can have a crucial impact on the success of your startup. It can determine whether you launch a product before your money runs out or not. It can determine whether your product will scale at a later stage. It will also determines the kinds of problems you might encounter down the road. So choose wisely 🙂