TL;DR. Instead of wasting effort designing for an uncertain future, you should design your code to be replaceable.
Don't outrun your headlights
In software development our headlights are limited, we can't see too far ahead into the future.
Take small steps - always
Always take small, deliberate steps, checking for feedback and adjusting before proceeding.
Try to stick educated guess, not fortune telling / wild speculation.
You can find yourself fortune telling when you have to
- Estimate completion dates in months
- Plan a design for future maintain/extend-abilities
- Guess user's future needs
- Guess future tech availability
But how are we supposed to design future maintenance? Only as far ahead as you can see.
🔥 Instead of wasting effort designing for an uncertain future, you should design your code to be replaceable.
Making code replaceable will also help with cohesion, decoupling, and DRY, leading to a better design overall.
And at the end of the day, there's always the chance for a black swan around the corner.
References:
- The Pragmatic Programmer: Your Journey To Mastery, 20th Anniversary Edition (2nd Edition)
