Why great products need strong foundations12 May 2021
You've probably heard someone quote Norm Kerths' Prime Directive during a retrospective
Regardless of what we discover, we understand and truly believe that everyone did the best job they could, given what they knew at the time, their skills and abilities, the resources available, and the situation at hand.
In my experience, engineering teams doing their best at that time inevitably end up having to shoehorn features as requirements change or new information becomes available.
In this post, I'll discuss why great products need strong foundations.
A solid product foundation
A solid product foundation can:
influence an engineering teams morale
A poorly architected product can kill any motivation for innovation as there will be a significant amount of effort required to make improvements. Engineers may choose the easiest rather than the right thing to do.
impact extensibility, maintainability and stability of the product
When a team has to accommodate changes that don't fit existing patterns, conventions and standards, the harder it will be to keep things simple, consistent or easy to follow.
allow for more accurate estimations
The more complex a product architecture, the less accurate the estimation becomes as it is harder to know the side effects of changes.
effect the organisations' ability to adapt to the market in the long run
Once a team cannot release confidently, the business will find it hard to adapt to the market or user needs.
This is more than technical debt
I've used this shopping bag analogy with clients I've worked with.
To begin with, you take a shopping bag to the shops to pick up two orders placed by your partner. At the counter, a staff member gives you the first order containing three things you put into the bag.
Then you are given the second order containing another three items that you also put into the bag.
Not ideal, but you can live with that.
Maybe you can take the hit and file it under technical debt.
The staff member then hands you three additional items that were also in the second order.
They are awkward to fit into the bag.
If you've had known about the items at the start, you would have organised your bag differently.
You have two choices.
You could add the items. However, the cost of doing so means you can't use the handle making everything you do next awkward and challenging.
Or you could take the time to empty your bag and organise things so you can carry them home.
What should teams do?
One is a long term win. The other is a short term win for which the consequences are unknown, and the precedent for 'temporary fixes' has been set.
Stakeholders, product managers etc., should trust engineers in what they think is the right thing to do before a complete rewrite is required or it becomes problematic if not impossible to add value to a product.