When starting a new project, you want to do it right.
Otherwise you’ll run into a sh*tload of scalability problems down the line.
But you also don’t want to over-engineer, because that’s bad for your time-to-market.
I’ve worked on several greenfield projects that went on (and scaled) for years, and I’m coaching startup projects on their technology stack. Here’s how I choose technologies for new projects.
The Golden Rule
Pick boring tech that you know well.
Let me explain.
When choosing a tech stack for your startup (or any project in a new business domain), you need to balance several objectives:
- Reducing time-to-market
- Reducing development and maintenance time
- A secure ecosystem
You get to this by:
- Using tech you already know
- Choosing old tech
- Selecting widely adopted tech
And here’s more background why choosing boring tech you know well is a great idea:
- You want to keep the number of (unknown) unknowns as low as possible. And since your new business domain already contains a lot of (known and unknown) unknowns to figure out, not to speak of the myriads of other topics you’ll need to face if you’re a founder like marketing, sales, product development, and leadership, you’ll want to reduce every other unknown as much as possible. Yes, i know the lure of shiny new technologies very well. But not having the luxury of 100’000 accepted answers on Stack Overflow for your backend framework will cost you weeks you should invest in more valuable tasks...
- It’s easier to hire for well-aged tech. If a new hire has already worked with a tech, they’ll be productive faster than when you’re using an exotic 3-month-old beta of a new framework.
- You’ll be able to move faster because many people have solved similar problems to the ones you’ll encounter. As an early stage startup, you want to avoid being the first one to solve some tech issue (at least if that’s not your value proposition). So with mature tech you get the benefit of tens of thousands of blog posts, articles, videos, courses, Stack Overflow questions and solved GitHub issues.
Btw: old doesn’t mean tens of years. Esp. in web, “old tech” can mean anything from 2 to 5+ years.
This post is inspired by years of experience, and wildly nodding my head while reading the “boring technology” presentation.