Writing code is not easy. Actually, it is very hard. Even the best programmer in the world can't foresee any possible alternative and flow of the code.
This means that executing our code will always produce surprises and unexpected behavior. Some will be very evident and others will be very subtle, but the ability to identify and remove these defects in the code is critical to building solid software.
These defects in software are known as bugs, and therefore removing them is called debugging.
Inspecting the code just by reading it is not great. There are always surprises, and complex code is difficult to follow. That's why the ability to debug by stopping execution and taking a look at the current state of things is important.
Everyone, EVERYONE introduces bugs in the code, normally to be surprised by them later. Some people have described debugging as...