Most companies start with an unsuitable tech-stack, and they use most of the funding to carry this baggage or to scrap it and redo it. I will try to give an overview hoping that you will not be the one! People often trust Google trends. Google trends are very misleading since they tell you searches, conclusively, how many people are learning a language or are beginners.
Don’t prepare to fail
Most companies develop a plan for failure. Instead of selecting most suitable technologies, they start with a manpower availability in the local area that is why most Indian startups that don’t make a headline starts with a Java (being a subject of bachelor’s) Manpower availability shouldn’t be a deciding factor because we have many sites for remote hiring!
Before you even begin!
There are two ways to do it but both ways end up in one way, it is just a matter of time otherwise, your dream will end up in a bag of dust.
Two ways are:
Stick with one or two technologies
Start with one or two technologies
For a startup, finding out if an idea works is critical. Thus, rolling out an MVP in the minimum time possible should be the first focus rest you must leave on customer’s feedback, this eliminates many static languages since they often take a lot of time. You should start with a language that has libraries or inbuilt functionalities of your requirements and should be very quick to develop without considering the trends and hype. Hence, research first, code second. If you have a technical leadership with time, try BDD, it saves a lot of time which goes wasted in coding unwanted features because of misunderstanding. Premature optimization is also a curse at this stage.
On a hint of success!
A continuous integration alone would save your one hour a day and possibly manpower. Unit-tests will ensure that your application doesn’t break as a surprise. Auto-scaling of your servers will provide a peaceful sleep and most importantly now is the time to switch to a different language in various parts of your projects or integrating tools for queues, search, caching and mailers. Quantify everything otherwise you will be shooting in the dark.
At this stage, optimize the product management. In a technical leadership, love for a particular technology is a most harmful thing to your company. I bet, you must have met at least one person who would claim to solve all of the problems with just one programming language. This is not the kind of person you would want to hire to make technical decisions for you since answers will always be same. So getting an unbiased technical leadership is essential. Try the one who still knows how to code. Ask yourself, can you eliminate a team manager? Do you need a product owner? If a team is self-motivated, you don’t need to manage them.