First off, this article does not apply to machine learning, deep learning, or more generically, the artificial intelligence field of programming. A.I. programming is significantly complicated, and debugging A.I problems are exponentially tricky. The scope of this article is traditional software development. Since my personal experience is primarily in web applications, I have applied the debugging approach mentioned in this article in finding solutions to software defects a.k.a bugs.
When you write a Web application and hit a defect, your debugging process can be thought of as a two-dimensional (2D) grid.
On the X-axis, you have algorithmic bugs (AB1-ABn), and on the Y-axis, you have the implementation bugs (IB1-IBn).
Using the signals (error messages, exception, logs, etc.) from the bug event, you can intuitively eliminate one or more cases (white circles) and focus on a few suspect cases (various grades of yellow circles).
Why Do I Care?
Experience and discipline are your primary weapons against software defects. So why do I care about how to think of solving defects? Because there is always a method to the madness of computer programming. It is not just an art form that many would have you believe. It is more science than art. Web developers often lack excellent debugging skills because they don’t think of the solution space, methodologies, and logical organization of thoughts in defect management. This article is to encourage such behavior.