Debugging: Software and Agile Wetware

Although Agile testing techniques have helped us to create higher quality software, many software developers still spend significant amounts of time debugging their own or other people’s software. Some of the most difficult software to debug is code that has “evolved” over time in a mostly arbitrary way. The software is not well structured or organized and the rationale for much of the behavior is not clear and often forgotten even by the original developers. If the original developers still develop and maintain the code, they may be comfortable with the numerous bugs due to familiarity with the software and their personal connection to it. They may even resist any suggestion that the software could be refactored or redesigned to be much more effective and relatively bug free.

It’s easy for an Agilista to criticize this type of situation, especially if we must interact with the buggy software or otherwise depend on it in some way. However, don’t we have the same attitude towards our own buggy “wetware”, the software of our mind? I see many examples of buggy thought processes in myself and others, but it’s uncommon for us to test our own thoughts and work to improve the programming behind those thoughts and related behavior. In the same way that some of the buggiest software “just happens” with little conscious intent or rationale, our own minds “evolve” through mostly arbitrary experiences. However, because of our obvious personal attachment to our minds (and because of the existing bugs in it) we tend to just accept ineffective programming.

We claim to be able to effectively write agile software and build agile teams that develop high quality software, but is this truly possible without an equally agile and bug free mind?

How would we start debugging our wetware given the wetware itself is the only tool we have to do it? Once the wetware has been refactored or redesigned and the major bugs have been eliminated, how do we minimize regressions and how do we design the wetware to be resilient to change? The answer is… well, I don’t know the answer with any certainty but I have a few ideas. I’ll discuss them further in future posts. I’m also interested in hearing your ideas and suggestions.

A common form of wetware bugs are fallacies used to persuade of ourselves and others of the correctness of some belief or action. Using fallacies for this purpose are often effective for this purpose because a buggy brain will readily accept them as truth. However, my impression is that most people using the fallacies for persuasion aren’t aware of their buggy thought process.

Some information related to fallacies follows. We can use this information to look for wetware bugs in ourselves and find ways to improve the truthfulness of our thoughts and actions. Have fun.

Resources:

Wikipedia: Fallacies
Why Smart People Defend Bad Ideas
The Logical Fallacies
Biases Affecting Information Processing
38 Ways to Win an Argument, by Schopenhauer

Add a Comment

Your email address will not be published. Required fields are marked *