The way I see it (and I’m sure I’m not the first to put it this way), there are a couple of ways you can approach communication:
The Open Hand invites others in, offers to share and support, while the Closed Fist signifies anger and warns others away.
What concerns me is that lately I think I’m seeing a lot more of the Closed Fist in our industry, particularly when discussions of software craftsmanship are concerned. With the caveat that I am broadly sympathetic to, and supportive of, the goal of improving the craft of software design and development, too often it seems that folks who are admirably passionate about their craft allow their passion to get the better of them.
In several instances, including a discussion last week that was instigated by a blog post by Michael Neel (commenting on a post by Joel Spolsky) on the subject of “duct tape programmers,” I’ve either heard or read folks who seem to believe it’s their duty to convert the unwashed masses who have not yet joined the software craftsmanship movement, whether they want to join or not.
Again, I am broadly sympathetic to the effort to improve how we as an industry develop software. But when I hear folks assert that those who don’t follow this or that practice or pattern, or use the hot technology of the day (whether that be TDD, MVC, MVVM, Rails, etc.) are “close-minded” or “afraid of change”, I have to wonder whether those folks understand that they are essentially presenting a Closed Fist to those they purportedly wish to convince.
It just seems to me that if you want to get people to change their behavior, it’s likely to be far more effective to show them the success you’ve had with a given pattern or technique than to essentially tell them they are fools for not following your wisdom.
In fairness, not every advocate of software craftsmanship is leading with the Closed Fist. But enough are (in my opinion) that I figured it wouldn’t hurt to raise the subject for discussion. I think there’s room in our industry for all kinds of developers, whether they use duct tape or a slide rule. I admire the passion of the folks who are constantly looking for ways to improve the craft…and I hope to see more of them using the open hand (“here’s what’s worked for me”) rather than the closed fist (“if you don’t agree with me you suck”).
I’ll close with a link to Uncle Bob Martin, who has what I think is a pretty solid (sorry, couldn’t resist) middle-of-the-road take on duct tape programming:
So. Be smart. Be clean. Be simple. Ship! And keep a small roll of duct tape at the ready, and don’t be afraid to use it.
His post also has a funny comment that captures well why so many don’t always follow what most of us acknowledge as best practices:
TDD … is also like flossing – everyone thinks it’s a great idea, but most people never get around to it.
I think that captures it pretty well…if TDD is like flossing, and you’re the one chiding someone about not doing it, that makes you the dentist. Do you REALLY want to be the dentist?
For the record, I DO floss…most of the time.
What do you think…do we need more Open Hands in the development community? Or am I overreacting to a few isolated debates on Twitter?