Whether you are a developer who is still in school or you just have a couple of years of corporate experience and have decided to dawn the entrepreneurial-hat as a tech-(co)founder / CTO of a start-up, this article will help you navigate through various aspects of choosing a Tech-Stack for the success of your startup.
The motivation behind this article is to enable Tech(Co)Founders who are in the nascent age of their start-up journey to become Tech-Leaders.
Evolution in Technology
Programming languages evolved from machine to assembly to high-level (HLL) simply for the sake of development-ease. Afterward, how evolution took place is quite interesting to understand.
In the 80s, developers started using C to build enterprise-level applications because it provided better control on UNIX-based systems. When enterprise applications became the mainstay of the software revolution, people started realizing that it’s difficult to maintain these applications as businesses were using different hardware & platforms. C & C++ were not the best (not platform-independent) when it came to the maintenance & support aspect of the applications built-in C/C++.
Then, came the JAVA. It made developers’ work easier than before. Now, developers didn’t have to worry about platforms. Their entire focus was on building one piece of code for all the systems. Yeah, there were trade-offs. It required more system resources to be consumed but as the cost for hardware was declining, JAVA became the go-to-choice for the enterprise applications.
Then came the age of the internet. JAVA being the populist choice, web-frameworks like Spring/Struts started getting attention but then the problem statement also evolved. Firstly, JAVA was designed for enterprise solutions so it was a bit beefy compared to what was needed for a pure web-based application. Secondly, alternatives like PHP had an easier learning curve than JAVA. Also, dynamically-typed languages reduced the development cycle (preferred choice because the servers operating the code in production-environment is now under control hence maintenance & support became easier) in conjunction with the agile-process of development. And thus, PHP like languages started replacing JAVA for web-development.
The evolution of web-frameworks, platforms, databases, etc to the current date progressed similarly. The idea behind exploring this evolution is to make you understand that the choice of a tech-stack is subject to the reality of the present time.
So, coming back to the original question “how to choose the right technology stack”.
Understand your Business Needs.
Depending on your business needs, the choices can be zeroed in by either elimination or selection. But, as a Tech Co-founder, you understand, what your needs are. As in, you need a relational database (ACID compliant) or not or need it partially. You need a read-intensive or write-intensive system. How advanced, your caching requirement is. Anything that you are building you need to have it in mind that it should be horizontally scalable to the least. You may not know the intricacies or might not have a deep understanding of scalability but you should be aware enough, about the possibility.
If your business is B2B & it’s about building a core tech platform say like Uber or on-demand database-as-a-service or Docker like application, etc
Since it’s a core tech platform and your business revolves around providing scalable tech & optimal solutions [CRITICAL] to other businesses (B2B), so the core has to be robust in terms of resource utilization to scale it vertically as well. The success of your business is dependent on the success of your clients. Now, if you goof-up with their customers, you will be screwed too. So, “move fast & break things” do not work in these scenarios.
So for every SaaS business, the core has to be close to the native?
Not necessarily !!
If you are providing a ticketing service to your clients or a chatbot service or marketing email service, etc.
Your success still depends on your client’s success only. The thing to understand is you are providing an important solution to your clients but it doesn’t fall in the category of TIME-CRITICAL for a majority of your clients. So if that’s the case, in the beginning, your focus should be to look for ease of development, keeping iterations & stability both in mind. Later, you might have to change your tech-stack but well, you will have resources for that.
What about B2C businesses?
In B2C businesses, the challenge is to get the right product-market fit at the earliest. And, that can be figured out, by multiple rounds of iterations. So, something which requires development time to be minimal should be your preference. To gain a perspective, Facebook was built using PHP & MySQL. Quora was built using the Python-Django framework.
More iterations does not mean developing an unstable system, the point to note here is “Ease of development”.
2. Ageing & Community Support’s role in Choosing a Tech-stack for start-Up.
We have shortlisted a few possible frameworks, databases, stacks, etc but now what?
Simply, look how big the community is. The only troubleshooting guide you have in case you face issues is Google. If the community is big or backed by big companies/communities, you’ll get your way out easier if you’re struck somewhere.
My thumb-rule: Opt for something which is neither too young nor too old.
3. Choosing a Tech-stack for your start-Up depends upon your Location.
This is something that works as a tie-breaker and also acts as an aspect of technology not becoming the hindrance in scaling the business. Based on your start-up location, you need to be aware of the fact that how easily you can find development resources especially in areas where the knowledge-expertise is a must. It’s not a hard-and-fast rule and depends on the complexity of the product, how well-versed you are to provide backup support in emergency situations but it plays a major role in making the choice.
4. What is your Expertise?
In 100% of the cases, Tech Co-Founders write code when they start-up. If you don’t, either you should start writing it or look for a different role.
If you are quick with experimenting & figuring out new languages, frameworks, etc, that’s good. But if it slows you down, you should opt for something which you are comfortable with because your aim is quick turnaround & go-to-market. You can always come back to this when you have resources in hand.
5. Start-Up growth
Best Case Scenario: If your start-Up scales massively, how hard is it to scale your tech?
Obviously, the answer to it depends on the scale and most of the entrepreneurs live for the best-case scenario. But if you can be pragmatically optimistic and come up with the best-case scalability figure then having an idea about ease of scalability can help you make your decision simpler.
6. How much money are you willing to shell out?
How money is related to finding the right tech-stack!!
It’s related but not in a sense that money decides the tech-stack but when the business is proven and investors have poured you with money and now, you have to build the right product for your business. In such a case, your business has a decent runway; you have to think about your tech-stack in the long-term perspective.
What that means is, you’ll not have the liberty of changing your tech-stack from scratch in midway when you have the visibility of your business growth. You might have to plan your product-development processes in such a way that it does not slowdown iterations, but changing your tech-stack would be a crime at the time of growth.
TECH SHOULD ENABLE THE BUSINESS TO FIND RIGHT MARKET FIT AND SHOULD NOT BECOME HINDRANCE WHEN THE BUSINESS IS GROWING.
What We Suggest
According to us, the best solution for Choosing a Tech-stack for start-Up would be to find options that can efficiently solve the problem, the system can be scaled easily if not efficiently, and the developers are easily available when needed.
In the meantime to get more Tech updates regularly, follow us on Facebook and LinkedIn