Notes:
So, I've given you some problems, and maybe some advice about listening to your users — which of course I tempered with the dispiriting notion that even if you listen to your users you can't respond to their feedback anyway, so what do I think you should do?
Well, I've got my eye on this bunker where we can all hide out as we wait for the inevitable downfall of civilization when the mad fever dream that was the general purpose computer finally comes to an end.
But no, more seriously, I don't think that this is an apocalyptic vision. In fact, I don't even think it's particularly new.
--
Roads were originally designed for a primitive form of car propelled by some sort of a four-legged ungulate.
Notes:
Backwards compatibility and technical debt have existed since long before computers existed. There are thousands of miles of railroads laid with specific gauges all around the world that it would be incredibly expensive to change. At some point a network of roads originally designed for horses and carriages had to be retrofitted to accommodate cars and trucks.
I don't think I have any one answer for you, but I can give you a few heuristics that I imagine most maintainers of large projects have internalized at least to some degree.
--
Design for change.
--
Avoid tight coupling.
--
Minimize your public interface.
--
Be decisive.
--
Notes:
At the end of the day, though, the real lesson to be taken from the stable interface paradox is that because keeping a stable interface and responding to user feedback are in tension, there is no one right answer to how to run a project. These heuristics will help, but you will get into an uncomfortable position where you must balance stability against responding to user feedback.
--
# Churn budget
- How important is the change?
+ How many people will it affect?
+ How painful will it be for affected users?
+ How much goodwill have you spent recently?