A good friend of mine has a saying;
Perfection is the enemy of good enough.- Ben Davies, 2020
It was first said, and I first heard it, when we were attempting to ship some new features to customers and the team were spending hours/days discussing some minute details which were preventing us from shipping.
Now there are a lot of quotes that are similar and likely said by people much wiser than myself and Ben - but stick with me. It's something that I try to keep at the front of mind when I'm writing code, so let me dig a little deeper.
I've been at Hospitable, where I work my 9-5, for over 4 years now and the company has grown steadily whilst I've been there. When I started the ARR was $1.3m, up until the last 12 months the engineering team was around 4-5 people, those 4-5 people (a couple of those people changed over time) worked to increase ARR to ~$5m.
We did ship good code, fast. We did focus on shipping customer value. We were relentless at it.
We did pick a language and a framework and stick to it - PHP and Laravel - they might not be the 'best' but they do the job and they allow us to ship fast.
We didn't spend too much time figuring out the perfect structure for our monolith. We didn't argue about what pattern is the best, nor whether a controller was too fat or a model too skinny.
That doesn't mean we didn't take time when appropriate to think things through or to plan a feature but what our collective mindset allowed us to do was to "disagree and commit" - have the discussions, pick a road and follow it, even if it wasn't your road.
What I try/want to encourage my team to do is write the code that is good enough, that solves the problem, provides customer value and can be shipped today.
Today we are approaching a team of 15 engineers and whilst we are growing we still want to retain that ability to ship code that is good enough.