This post originated from an RSS feed registered with Agile Buzz
by Keith Ray.
Original Post: Smokers and Unit-Testers
Feed Title: MemoRanda
Feed URL: http://homepage.mac.com/1/homepage404ErrorPage.html
Feed Description: Keith Ray's notes to be remembered on agile software development, project management, oo programming, and other topics.
What inappropriate metaphor can I write about today, which will annoy the most people? How about smokers and non-smokers being analogous to undisciplined developers (the majority) and the disciplined developers (like those who participate in successful XP projects).
A smoker may say that his smoking doesn't bother anyone else, and a typical developer who never writes unit tests may say his lack of discipline doesn't bother anyone else, but they're both wrong. If I'm in the same room as a habitual smoker, or on the same project as a undisciplined developer, I'm going to suffer to some extent -- from the physical odor of the former, or the code-smells of the latter.
The larger context also sees problems: higher health-care costs for the smoker [and thus higher expenses by insurers and governments]; longer project times (for debugging) and lower-quality products from the undisciplined developers.
Some strategies for trying to get stop people from smoking get you a deserved "anti-smoking zealot" label, and trying to promote XP and test-driven-development by using unflattering analogies [like I did here] can get you an "agile zealot" label.
Preaching the good things that happen to people to quit smoking doesn't seem to affect the nicotine addicts -- even when that preaching comes from the converted. Larry Niven finds himself writing about food in his more recent novels, because now his taste-buds are operating much better than they were when he was smoking. To people who expect all software projects to have bugs, an XPer saying how his XP projects that had fewer bugs seems to have no impact. Either the XP project is judged to be full of exceptional developers, or the projects are judged as being not "as hard" as others.
It's a quality of life thing. A non-smoker can climb stairs easily and taste his food; a disciplined XP developer can deliver quality software with less suffering. A crisis, or a particularly bad example, can sometimes move a non-smoker to stop smoking. [Best fictional example: Kenneth Branagh offered a cigarette by someone who smokes through the hole in his throat in Dead Again. His response: "I just quit."]
If there is no personal crisis - late, buggy software and heroic bug-fixing are considered normal, and the company isn't failing and people are still getting raises - then software developers are going to continue with their usual habits.
Fortunately, there does seem to a be trend to adopting test-driven development or at least unit testing... unit test frameworks are freely available for most platforms, and the frameworks themselves are not too difficult to use. For some programmers, the benefits of higher quality, more-modular, code is worth the effort, even if their co-workers don't see the point in it.