5 Tips for Choosing Your Startup’s Technology Stack
Having worked as a CTO and technology consultant to many startups I can tell you that choosing the initial technology is an important decision where you have to take into account several factors:
1. Prefer What You Already Know
Moving fast when working on a new startup is important. If the founding team is already experienced in a specific stack, its an advantage to choose it and work within their comfort zone rather then re-learn a new technology.
2. Consider The Problem Space
Sometimes the space your product is in dictates the stack. Some technology stacks are specifically strong in certain areas (due to technical limitations, or just strong community) making them the go-to environments in those areas.
For example, if you’re writing an IoT embedded solution, a graphics engine or an AAA game you’d probably need C\C++.
Python, with libraries like Pandas, SciPy and NumPy (and a strong community around them ) is specifically strong solving computational problems like ones you’d find dealing with machine learning and data science.
Ruby has Rails and a community focused on Web Development.
And so on… So its best to explore the problem space and see which tools and technologies are common and why before making a decision on your own stack.
3. Consider Hiring Advantages\Disadvantages
Using an obscure or an uncommon technology stack can make recruiting hard. You want to aim for a stack that’ll make it easy to recruit people. Granted, good developers can learn any stack, but the question is, will the want to? For example, if you’re writing a chat server in Erlang it’ll probably be a lot harder for you to find Erlang developers (or people willing to learn Erlang) over finding people proficient with Java\Ruby\Python…
4. Check the Community
When shit hits the fan you want to know you have somewhere to go — somewhere to ask question and\or get help. When choosing a product to use I’d look at:
Any big names behind it as sponsors\users?
How active is the community? Is there a Slack channel\mailing list\public JIRA? are questions being answered on StackOverflow? are people writing about it in blog posts? (I’d look for pros\cons posts, comparisons to competing products and migration\success stories)
If open source — when was the last commit? is the code actively developed and maintained? Are the authors responsive to PRs?
5. Time to reach your first few milestones
As a startup, getting fast to market is your top priority. It’s easy to fall into pre-optimization mode and forget you don’t have to support a Facebook scale just yet ;) Figure them out a set of realistic goals and milestones and choose your technology accordingly.
You might be able to work just fine with a relational database instead of a complex NoSQL cluster.
You might be able to do just fine with a hosted service and avoid managing servers and deployments to a certain point in time.
It’s important to pick a technology that will let you get things done fast and meet your goals while not limiting your ability to scale or migrate to a better system in the future… (Its best if you can plan the roadmap to such a migration so you know where you’re heading)
For example, in one of the companies I’m working with, we started managing our data pipeline using Google’s Dataproc, which is essentially a hosted version of Apache Spark.
At our current scale we don’t need a Spark cluster running 24/7 so using Dataproc we can schedule jobs that start a cluster, do their thing, and shut it off. In the future we’ll be able keep the cluster running on Dataproc 24/7 or even (since we’re using Spark which is open source) migrate away from Google’s service and manage our own cluster(s).
(Bonus Tip) — Watch out for The “Tech Stirrer”
Back in dapulse (now monday.com), we had a nickname — “Tech Stirrer” (sounds better in Hebrew) — for developers who’s always chasing the latest new fashion and keep trying to add new technologies to the stack and rewriting existing code without a real need…
The technology world is plagued with passing fashions. When consulting with friends and industry people you’ll always hear how you’re better off switching to the new latest and greatest. There is no perfect technology. Everything has its Pros and Cons. Watch out taking advice from people who can’t see the cons…
Switch to a new technology based on specific advantages to your business rather than technology hype.
This post is an adapted and expanded version for my answer to How do startups typically choose a technology stack for their product? on Quora