There’s a reason you don’t stick your hand into fires, walk into traffic, or use Windows Vista. Humans, along with pretty much every other organism with a central nervous system, have evolved fear as a defense mechanism that protects us from doing things that cause us pain. We can override this to a certain extent, but fear is instinctual and basic.
Now, a lot of the ideas and practices that fall under the umbrella of “Agile,” exist largely to remove fear and pain from the software development process. Detailed and extensive tests remove the fear of breaking things when we make changes; pair programming and collaborative work remove the fear of getting stuck on a problem, or learning a new domain or technology, or having someone leave the team. Rapid iterations and rich feedback remove the customer’s fear of not knowing the true progress of the project, or having not having the really important stuff done when the deadline comes.
On top of this, we build more tools every day to make our lives easier and less painful. Rails itself is a great example: it removes the painful and tedious bits of creating a website, removing the fear a web developer might have of becoming mired in details and configuration. But, are all of these tools that reduce fear good things? After all, we’re much more likely to jump headlong into something we don’t fear.
Bug management systems are an example of this. They exist for one reason: to make dealing with a lot of bugs less painful. If a system has three bugs then there’s no real reason to prioritize or filter them. If that system has three thousand bugs, then the situation is quite different. Just looking through the bugs without some form of sorting or filtering would be quite painful. But, isn’t an out of control bug count something we should be afraid of? Do bug management systems make it too easy to manage a situation that we should be doing anything to avoid?
Exception notification systems for Rails are another excellent example. Personally, I like ExceptionNotifier. It sends an annoying email to, ideally, your entire team. That’s it, no frills. Now there are systems like HopToad and GetExceptional that manage these exception in a friendly way. Again, do these tools remove the wrong kind of pain? Shouldn’t we be afraid of runaway exceptions?
Personally, I like the idea of leveraging basic animal instincts to keep us on the straight and narrow. Programmers will tell you that they know the right thing to do, that these tools don’t create any disincentive to do the right thing. But, I suspect that someone with an anesthetized hand would be a lot less careful about sticking it into a fire.