You never get it right first time. Especially when you are a tech startup.
I’ve worked on a large number of different startups in many different ways, and the one thing that can always be counted on is that you just don’t know what you need to know before you start doing anything.
In fact, you rarely know anywhere near enough to start developing anything, but you have to start somewhere.
The current wisdom passed down over years of developers doing startups is to not overdo it on the initial startup technology. Learn as you go. Bite off bits at a time and keep developing. Basically, make sure you don’t over-engineer it before you have even coded a line.
Everyone in the startup world thinks they do “Agile” (although mostly, they genuinely don’t) and everyone in the startup world seems to use the word “MVP” to denote “the first version”. The problem is that stating what process you are going to use before you actually know what you’re supposed to be doing is frankly stupid. You should build what you need in the way it’s needed, not decide on structure. That could be doing everything via an Excel spreadsheet (I’ve seen it done) and phone calls.
It seems to me it’s more of a skill to know when not to code.
The thing is that with all the startups I’ve worked with, the initial idea of what that MVP is is just plain wrong. It’s not completely wrong, but it’s very often still over-engineered, or badly engineered, or doesn’t work in some way that is fundamental to how the original idea started. It’s probably 50% wrong or worse most of the time.
So my solution to this?
Build that first version to be thrown away aka HACK
When you do that, it actually hones the mind and the project in two ways
- You will not intentionally build anything superfluous and therefore you will spend less money (not save, just spend less)
- You will not try to get your code perfect, but just “good enough” which will mean spending less time coding (again not save time, just use less)
This might sound obvious, but so many startups get this very very wrong. They are very good rules of thumb to live by in the startup world.
And utilising a microservices/cloud and API driven approach with SPAs rather than client-server code (as most people still seem to do — why? WHY?) will give you even more flexibility going forwards.
And if by some fluke, you get most of it right first time, you have given yourself space and time to build the business on top of the simple stuff you’ve already done, rather than having to reverse engineer problems out of at larger code base.
It seems a no brainer to me to do this now. Hindsight is a wonderful thing.