Agile and upfront design

One of the things I get annoyed by is that people consider Agile being a methodology without any form of design. Big upfront design, like the waterfall method has, is not a good thing. In most cases you don’t know exactly what needs to be build and what all the constraints are. And that is why big upfront design leads to frozen ignorance: bad technical choices, caused by a lack of understanding, make a system hard to change. Another consequence is that the system is hard to work with because you have to deal with unnecessary complexity.

But my feeling is that some Agile developers are out of balance, because they reject any form of upfront design. Doing some light up front design (maybe a few hours in front of a white board), especially for more complex systems, can be a big help. Often there are some architectural patterns you can use like MVC, Layers, Pipes and Pilters, etc and it helps you to get a better understanding of the system. This makes it possible to do a calculated guess. My personal experience is that a good guess often pays of. If it doesn’t pay off, you should not stick to the choice, and refactor it so becomes the best solution for the problem (if this is possible).

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: