One of the best anecdote on consulting comes from Professor Clayton Christensen. Andy Grove, Intel chief, asked the professor what his theory of disruption means for Intel. Instead of giving a direct answer, the professor taught Andy Grove, "how to think" about the problem. I have followed this method for decision making. Instead of seeking answers, I seek "how to think" about a particular problem. Such method has helped me make decision in varying situations. In the similar vein, let me give three guidelines to design tech-stacks for startups.
When a fly invaded his meeting, President Obama rolled up a magazine and whacked the fly. He didn't ask for a gun or call up his army generals, or punch-in nuclear codes. He picked a near-by magazine, rolled it, and whacked it himself.
I'm often asked if .Net is better or Python is better or node.js is better for building a startup product. If there is a technology co-founder, my advise is always to start with the stack that they know. Later as the product grows, add what is needed, or move to a more suitable stack. Marco Arment coded backend for his popular overcast podcast player in PHP because that is what he knew. Later when it grew he switched to Golang. Likewise, Twitter was originally written in Ruby and then switched to Scala.
As it should be clear now, the right stack changes as the startup goes through its growth stages.
Startup is all about validating ideas quickly. So choose a tech-stack that gives you this advantage. Validating ideas quickly is not only about tech-stack. It is also about company's devops process. It is also about having probes in the application to give you operational insights. This combination of tech-stack, devops, and application analytics help validating ideas quickly.
Most technology teams in startups don't invest in devops and application analytics. Lack of devops and analytics limits their agility and speed, more than the tech-stack.
Every business executive has to take ton of decisions. Lack of data complicates the decision making. I use a rule-of-thumb to help me decide. I ask myself, is this something money can solve at a later time? There are few problems that money can't solve.
Company culture is one problem that more money can't solve. In fact, money amplifies what is already there. So if a company starts with a sexist, dishonest, authoritarian culture, more money later won't turn the culture around later. Uber is an example.
However, lot of problems can be solved by bringing more money. Logo, website design, and tech-stack are some of the problems that money can solve. As I said earlier, Twitter switched from Ruby to Scala. Dropbox is experimenting with Golang. Facebook invested in writing its own compiler for PHP.
If more money can solve a problem, choose to iterate fast. You shouldn't wait on more data. Decide by your gut feel and most probably it will work out ok. If not, bring in more money to solve that problem.
If more money won't solve a problem, think deep. If needed, get outside help. Talk to people who have already solved the problem. These decisions will have lasting impact on the company. Getting them wrong will be a disaster for the founders and the company.
You can read the full article on my blog