Why debugging sucks
For the past five months I have been involved in debugging a Java application. I hate debugging, but it wasn’t until recently that I understood why. I think there are three main reasons why developers hate debugging.
The first reason is that developers like to solve problems. They like to understand a business problem/domain in its entirety and implement a solution to that problem in code. Debugging is simply fixing someone else’s solution; it is not solving real problems. In many ways it feels like you are coming along after and cleaning up other people’s mistakes.
The second reason is that it is always harder to read someone else’s code then it is to understand code you have written yourself. The result is that to fix a bug takes considerably more work then it took the original developers to implement the solution originally. This makes debugging long, hard, tiring and frustrating work as you struggle, on every bug, to understand what someone else has written, and worse, what they intended.
The third reason is that due to the very nature of debugging it is incredibly difficult to understand the entire problem space. This is caused by the fact that you are solving a bunch of random bugs that jump all over the source code, never allowing you to stop and fully understand any one area of the implementation.
The result is that you work on an application for months and months and never feel that you understand it; never feel that you have contributed anything to it. The application never becomes yours; it always belongs to those who implemented it. You are simply a trespasser fixing those small errors left behind by those who went before.
How true! Can’t agree more, http://niravthaker.blogspot.com/2007/03/six-reasons-why-tdd-is-necessary.html.