The Law of Net Design Costs
software.rajivprab.com
software.rajivprab.com
What's so hard to estimate in software world is because the shear amounts of unknown. An abstraction leaking library, a not-fitting-exactly-your-use-case SaaS, ever changing standards, end-of-life of mission critical component, no-easy-fix vulnerability, emotional stress from team member, a dying cat, a never stop talking non-engineering colleague, there are more than "code" in software. Be prepared for change
This is where the experience of Solution Architects comes in, the whole design decisions gets a whole more complex once you start throwing in infrastructure choices and percieved future options.
As a genernal rule I find a large percentage of Solutioning follows the latest new framework.
Going through past designs for many projects over many years and looking at the key design decisions is fascinating - it's almost like being a an Archaeologist looking at latest 'in fashion' technology at that time
Is it "there is no substitute for judgement"??
If you add something and later decide you don’t need it, you can remove it. If you added it badly, with loose couplings etc such that it is now painful to remove or replace, well there’s your problem. Flexible, modular patterns are the better solution for that, not a blanket stand against adding stuff.
> If you add something and later decide you don’t need it, you can remove it. If you added it badly, with loose couplings etc such that it is now painful to remove or replace, well there’s your problem.
I don't understand this logic at all. If it's not something that needs to be deeply intertwined with other logic, then it's no trouble to add it later. If it does need to be deeply coupled to the rest of the system, then ipso facto it'll be painful to remove.
Flexibility and modularity are no substitute for simplicity; indeed it's often much harder to add something to a modular system if the module boundaries aren't in exactly the right place (and they usually aren't).
So for you, YAGNI is a useful corrective notion to try to keep in mind. For me it’s playing to my worst instincts. This is the case for all one-sided and unbounded advice like YAGNI. It is useful for people who need to hear it and harmful for those who don’t.
I prefer the idea of “everything should be as simple as possible, but no simpler”. The last bit is crucial for me and is missing from “YAGNI”.