My latest article just appeared on Reg Developer: Hafta Man and the threat to agile design. That's hafta as in "we hafta do it this way because..."
The idea behind the article is that there are essentially 3 design mindsets:
1. We "hafta" do it this way because...
2. Wouldn't it be great, if it could work this way...
3. My grand design is just getting started!
Mindset 1. generally leads to a whole load of compromises and a project that creaks worryingly every time it moves. Mindset 2. is the opposite: a flat-out refusal to compromise on design quality, especially when maintainability is at stake.
Mindset 2. for me is the agile mindset, because I see agility as constantly reviewing the design for maintainability. However one of the comments following the article calls me out for mixing a different notion of agility (as in "start with a little something and build up from there") with "Big Design Up Front" (BDUF, or extended design). Are these two approaches incompatible? To put another way, if you start a project or iteration with an extended design process, does that mean you lose your agile badge?
Couple of things: First, I wouldn't rate an agile badge as any more valuable than the cheap tin it's made of. I'm much more interested in whether a project is ready by its deadline and whether the customers and users are happy, than whether the project was truly agile or not.
Secondly, that just wasn't what I was talking about in the article anyway. Reading back through it, I can see where the confusion lies. (Note to self: must write more clearly in future, and not just assume that people instantly know what the heck I'm talking about...) When I talked about "taking the time to get the design right", I wasn't specifically talking about up-front design - although that qualifies too. Spending more time getting it right means stopping for a moment and thinking about whether the approach you've chosen is the right one, and being prepared to change it (even once development is in full swing) if it's patently obvious that the approach needed changing.
(Mindset 3., by the way, is 2. taken too far: instead of rethinking
the design in terms of maintainability, grand designs and frameworks
are implemented just because they're supposedly "best practices", or
happen to be the Design Pattern of the Month on TheServerSide.com).







Comments