I was recently witness to an interesting twitter exchange between Stu Herbert and Dan North on the subject of development practices. It occurred to me that the disagreement was fundamentally that they were addressing different groups. Stu felt that the term “best practices” implied “optional” to too many people who should be using automated testing. Dan, on the other hand, dislikes the term best practices because it’s devoid of context.
As Dan explained in an old Oredev talk (watch it if you haven’t), the problem with best practices is that their purpose is to drag people at the start of the Dreyfus model up to competency. However, there’s a downside: enforcement of best practices exerts a drag on people beyond the competency stage. From an expert’s point of view, everything is optional and is simply a matter of cost benefit analysis. The problem is, good advice for experts is lousy advice for novices and vice versa.
I Don’t Understand It, So It Must Be Easy
The Dunning-Kruger effect is an observation that, the less competence you have at something, the easier you think it is. I suspect it’s about to be renamed the “Apple Maps” effect. Here’s where we really hit Stu’s problem: pretty much everyone thinks they’re an expert, except possibly for the experts. Everyone with a stand up meeting is an authority on lean and agile. I’ve seen team after team in my career who thought they had the experience to determine whether or not automated testing was appropriate to their project when not one of them had even tried it. (In fairness to these teams, most uncoached first attempts at TDD are disasters.)
An Idiot Is Someone Who Doesn’t Know What You Learned Last Week
So, how do you push teams like this along the path of skills acquisition? Well, usually, you proclaim that something is The One True Way and convince them that, by doing these things, they will be superior to other teams that haven’t embraced The Truth. Despite having an element of the cargo cult about it, this will actually be true. You’ve managed to circumvent the DK effect for a while, but it’s not gone. As with all cognitive biases, they’re never, ever, gone.
If you haven’t ever used an IoC container, TDD or CI, I pretty much guarantee that trying them will make you a better developer. Usually in ways that you’ll find hard to explain to people who haven’t. If you’re stuck in the tar-pit, Scrum and other prescriptive agile methodologies will get you further along the path of understanding how to deliver value. But any rules-based understanding is only half the journey. Once we’ve climbed the hill, we’re still only at the competent stage. All too often, we’ve set up camp. If you walk in any direction, we’re going down again. But anyone who cares to look can see beautiful mountains in the distance. Let’s go visit them.