An anonymous reader wrote in with a fascinating story of what can happen when siloed teams of developers working on different parts of the stack optimise for their own happiness.
To cut to the end:
The lack of full-stack teams meant everyone was crying NIMBY [Not In My Back Yard] to avoid their team from doing unpleasant work. Ideally, everyone would have compromised to deliver value for the customer, making better use of existing data and taking their share of gluing data together.
Because of the way this engineering organisation was set up (horizontal teams organised by level in the stack), nobody took on work which would have been high value for users, but low on value for developers. Working as a product manager or designer in this environment would have been tough.
Some work we do is just not that enjoyable. But in product development work, it’s unrealistic to expect that your work will be fulfilling and enriching 100% of the time.
To make use of a software engineering cliché, Conway’s Law also applies here:
organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations.
In a horizontally structured organisation, producing a coherent and valuable change to a product for end users requires a huge amount of cross-team co-ordination and ownership. It requires visionary and single-minded leadership.
This is hard to come by, so instead individuals are rewarded for making decisions that don’t cross boundaries and don’t rock any boats. It’s just easier that way.
This means it’s easy to collectively neglect other constituents of the system - end users being just the most obvious and visible group.
I’ve found that working as a front-end engineer has given me sharp exposure to challenges like this. We sit nicely in the middle of the product development process - a good position to spot problems. We can use this point of view to raise awareness and make the case for change.
Easier said than done, though!
All the best,