One particular chart in the State of Agile survey for 2011 tells a familiar story. Have a look.
First up, C - Unit Testing at 70%. That’s reassuring. And unit testing is and should be distinct from L - Test-Driven Development. Test-driven development is about the design of code, not testing. Good. But what specifically is agile about unit testing? The reference to unit testing is ambiguous.
Moving on, G - Continuous Integration at 54%. Oof!
H - Automated Builds at 53%. Oof!
J - Coding Standards. Are people still worried about coding standards? Haven’t we moved on to expressive code that tells us what it’s doing and why it’s doing it?
K - Refactoring at 48%. Yikes!
And back to L - Test-driven development at 38%. Holy shit! In this day and age?
P - Pair-programming at 30%. Ah yes - that’s because everything would cost twice as much, right? Because creating software is just data entry. Or is it more about ego and fear?
Q - Collective Code ownership at 28%. Yeah baby! That piece of code belongs to me so hands off! You mean that piece of code stinking out our codebase?
R - Automated Acceptance Testing at 25%. Really? Come on!
U - Continuous Deployment at 24%. Getting the last mile in place in the first yard continues to be a problem for companies. How come getting a production environment up and running isn’t being cracked in iteration zero? We’ll be publishing a whitepaper on the last mile and doing some talks on it later in March.
Y - Behavior-driven development at 9%. Sad!
I’ll be honest. On the one hand I’m inclined to be skeptical about the validity of data from surveys such as this. Do people complete the survey based on their espoused theories rather than their theory in use? How representative is the sample? I wonder how many people actually walking the talk didn’t bother responding to this survey?
On the other hand, as you can see from the points I pulled out above, it supports my cognitive bias. Awesome! FTW. Taking the data on face value I might deduce that a lot of bad software is being written out there and much of this thing called Agile is about process. Anyone remember something about people over process? Anyway, I wonder how much of that bad software actually delivers value to customers with a total cost of ownership that makes it a business asset? There will hopefully come a time when more people will realize that being agile is about being able to respond to changing business needs quickly, affordably and with little risk. That’s what businesses really want and need. To do this you need shit hot code, not shit code.
The results of this survey are unsurprising. It’s still alarming.