— Because we need more of it, not less —
🧵👇
You can also call this "flexibility."
You want your software to be flexible, to bend under pressure.
This means that you can handle —with relative simplicity— any changes that come your way.
👇
▫️Ideas evolve
▫️Complexity increases
▫️Users become more sophisticated
▫️Competitors show up
▫️Libraries get deprecated
▫️New technology becomes available
▫️Team members go. Others come
Change is the only constant you'll have to face at every step.
👇
— How long would it take to reverse this decision?
If the answer scares you, you should get back to the drawing table.
You want to ensure there's always a way to reverse course.
👇
Achieving reversibility is about abstractions, decoupling, reducing duplication, among other good practices.
👇
(Hi YAGNI folks!)
As a rule of thumb, try to stay away from the extremes: neither too much nor too little flexibility.