I’ve spent a long time working in and around startups. By startups, I mean the early stage type, where seed funding is the key and trying to find some kind of decent product market fit.
One of the things I’ve learned over the years is technologists think that the technology is really important to the business.
I hate to burst your bubble, but the technology is at best a “non-hindrance” rather than the key.
The best technology for a startup is actually the kind of technology you never notice in your bottom line.
That means that the technology team is not enormous
and the feature velocity is high
and the team is not restricted by a bunch of bad technical debt
etc
Notice something here: that the technology isn’t important in this.
You can build a startup on Wordpress (but please don’t ever do this actually) and you can build a startup on Django or on Serverless or on a bunch of things.
The technology is simply a tool to make your startup business work.
The key task for a CTO is to make that technology as quickly and efficiently as possible for the long term.
Often that means tech shortcuts, and shortcuts mean technical debt.
So the best thing to do is to pick the technology that gives you the most efficient solution with the most manageable technical debt. Note that it’s not the least but the most manageable… e.g. not Wordpress, because that becomes more and more unwieldy over time.
So when someone tells you their startup is built on great technologies, that’s actually not that important.
Have they built it in a maintainable way?
How does it impact the business?
How is the tech team going to grow over time?
How much needs refactoring to get to the next stage?
These are business questions, not tech questions, and it shows that the impact of the tech choice is limited.
My experience with Serverless technologies — Functions/FaaS + scalable data storage and event driven design — gives me confidence in approaching these issues with a business.
Serverless may be harder to deliver in the first place (although more and more tools are coming out to help with that) and it may take some shift in thinking for a developer, but it definitely does provide a really solid basis for building a startup.
The fact that logic in functions is uncoupled from other logic is complicated to develop, but adds significant benefit for the business by ensuring that changes don’t impact other elements of the technology.
The fact that the system is event driven benefits the business by only using resources when needed rather than maintaining resources (servers/instances) when not needed.
The fact that the system has a web scale basis from the start (assuming you know how to do good data design) gives the benefit of not needing to consider that (yet) which means that the business can focus on things like product market fit rather than scaling issues early on.
All these things are doable to differing degrees with other technologies, like Docker, or even Django and Heroku of course.
But the Dockers and Herokus of this world don’t, in my opinion, allow a startup to shortcut to a highly scalable and maintainable system in as efficient a way as possible.
Serverless is the future.
No… it’s not.
Serverless is now.