The majority of time debugging is not spent removing bugs but understanding code behavior. Once you understand why undesirable behavior is happening it is usually relatively easy to fix this behavior.
Programming is a constant game of mental Jenga: one line of code stacked upon another, building a tower of code you hope is robust enough not to come crashing down. But it always does, as code never ...