Thursday, June 28, 2012

Achtung!

Michael Feathers has an excellent post on a hitherto unremarked value of builds, including this line:

Development is an attention-focused activity, and for me at least, a sense of closure is important for that focus and important for morale. 

And for me, this is yet another example of the critical importance of rhythm in the development process. XP is a hierarchy of rhythms,  from regular releases through iterations and daily standups down to the Red-Green-Refactor cycle.

But it's not just XP:  every developer who hasn't burnt out develops some kind of rhythm. In an environment based on an ideology like Waterfall that's seriously disconnected from reality, corruption is inevitable, and the developer's personal rhythm is not going to be good for the project.  I've run into this on my current project, which is "corporate Agile" - i.e., largely about daily standups. I've tried to convince team members with no real Agile experience that TDD is personally satisfying. Many of them don't buy it, not for intellectual reasons, but because it's completely contrary to their own rhythms, which involve writing a lot of code, building up the tension, and then manually testing it, which provides the release.  It leads to complex and overengineered code that's nearly impossible to create automated tests for.

I think Kent Beck's most original insight about development was that it's done by humans, not machines. (Okay, so it wasn't that dramatically new - Weinberg brought psychology into the methodology conversation, even if it was based more on an abstract ideal than a felt reality.)