A Debugger’s Life

Project development time literally stops when trying to squash out a bug while running code. In my recent project, the worst “stopping” of time occurred for three working days. By the morning of the third day, I kind of felt like I was already at my wit’s end. I forgot the type of that bug and the workaround that ensued. All I remember is the frustrating feeling of not knowing where to alter your code after all possible solutions have been exhausted and all google keywords have been typed. And then sometimes, the bug turns out to be so simple that you will beat yourself for not having seen it immediately.

Today, it’s just an almost half-day of doggedly trying to figure out some sort of hiccup in my current task. Not knowing the answer is slowly killing me, so I decided to type in my thoughts on debugging while trying to unblock my poor head from my present mind-boggling debugging. (That just sounds so retarded.) It’s a javascript implementation issue that I could not fully wrap my head around, for some reason. I have a strange and insistent feeling that the answer to the problem is right under my nose, and I only need to step out for a good bowl of spicy ramen before I figure it out.

For years, I have heard of the word tenacity in motherhood statements and career advice columns. If there is one job that helps build tenacity, it’s a job in web dev, definitely. It’s not for the fainthearted. Sometimes, in one’s quest of searching for how to make it work again, it feels like a totally futile exercise. And basically, you soldier on in the middle of that futile feeling and try to achieve it anyway. Some random chillax streaming music often helps. And when it does not, I blog.

Web development taught me not just how to render frontend via HTML5 and CSS, or tinker at the backend with PHP, Python, and Javascript. It taught me that sometimes I can plug away with significant chunks of my effort and time and to the rest of the world, and it may only appear as a tiny speck, a comma, or a line. From learning how to code, I have learned that what you see on the outside is really only the tiny tip of the iceberg, that there are universes of meaning that coldly goes underneath a single word or character.

Having said that, I think that I have finally learned to affirm myself somehow in a way that is sufficient to roll with all the punches, to be comfortable with what other people think as awkward, to make decisions not based on what’s flashy and fancy and boombastic to the eyes of many, and to have faith even when I can only see the white screen of death on my browser.

I have not yet immersed myself well enough to be a ninja coding master, though I surely hope that it will happen someday. I have taken much solace in slowly but surely getting my feet wet with the nuances of version control, database management, web mapping, and app development. First, I have a tiny paddle and a swimsuit in the form of basic git, basic dev, basic programming languages, and basic schema designations. Next time, I am hoping that I’ll eventually have the complete diving gear to this vast and ever-changing body of knowledge.

Debugging taught me that a tiny hiccup on my code is part of the grand design, that the very work itself is indeed its own reward (I got that from an XKCD comic strip), and that life’s jolting and obligatory pauses in the form of taking a break or a debugging problem is just as important as life’s movements. These pauses, these debugging moments, provide the rhythm and the variation in patterns that make it all so interesting with just the right bite of complexity. And it makes all the rewards of deploying a functional piece of programming artwork so sweet and meaningful to celebrate.

A debugger’s life is not an easy life. It’s one that stares at the nothingness of a text editor for long hours and turns it into something else that people may or may not see, use, and recognize. While the rest of the end user world can be motivated and happy to see the results, a developer needs to have the faith in his code before it comes to its fruition, whether other people appreciate it or not. The developer is the one who conceives the idea, and visualizes how the user experience goes even before the actual users experience what he has created. And when the idea is being attacked for a lack of visuals that the layperson can see, it is the developer who continues the work with the knowledge that things are forming and happening in its rightful way even when other people just see a bunch of lines, a dark terminal window, and little UI to show for it.