3 ms·
>There is a misconception among Agile proponents that the more upfront design there is, the harder it will be to make changes. That once you put something in th
by pydry 5y ago
>There is a misconception among Agile proponents that the more upfront design there is, the harder it will be to make changes. That once you put something in the design, then it becomes hard to change.
The point is that design decisions become better the later you leave committing to them because the later you leave it the more information you can accrue to determine the correct shape of the design.
This isnt just about writing code based upon design decisions but also whether when you write the code whether you double down on a previously made light touch design decision.
There are hundreds of microdecisions needed every day like this and I see "up front first" people double down prematurely and dig themselves into holes unnecessarily constantly.
It isnt really about "when you make the decision" because yes, decisions made today can be cheaply reversed tomorrow if you havent actually done anything with them. It's entirely about whether it's possible to defer commitment to a decision and still achieve your intended goals.
It took me a long time to finally figure this out for myself. My final "aha" moment was that iterative design and product development is really about recognizing that when you are building 99% of software projects, the future is shockingly chaotic, unknowable and surprising and that deferring design commitments actually helps deal with that. You're not building a house or planting crops.
Most bad designs aren't bad for the future that was envisioned, it's just that the future that was envisioned never came to be.
Unfortunately agile is vague as hell and was designed more as a pseudo religion to sell billable consulting hours so it says useless things like "defer design decisions as late as possible" without being explicit about what counts as "a design decision" or what counts as "as late as possible" and the side effect of that is that, like religion, we have to endlessly argue about divergent interpretations.