Member-only story
My Only Skill Is Debugging
My only skill is debugging. I have worked as a programmer — software engineer, software developer, or whatever you want to call it — for many years.
I possess only this one skill. It is the only skill I have required.
I: Building Blocks of Debugging
In 2007 I was unemployed and living with a friend in my college hometown. The room I rented was shared with my roommate’s pet rabbit. I had an old suitcase with some clothes and toiletries, some books, and a cheap laptop.
I had a college degree, but I did not have a plan. The more salient issue is that I did not have any money. I had worked an internship at a bank and decided it wasn’t for me. Since I couldn’t decide what I wanted to study in graduate school, I needed to get a job.
I knew I was going to be a programmer of some sort, and I knew I wanted to do something with the internet, but I didn’t know what. I had learned web development and designed some websites in high school for fun. I liked the internet. I liked making things.
I liked the logical structure and rigor of math and physics. But I also enjoyed reading and writing. I found programming an interesting combination of mathematical thinking and the kind of creative expression found in poetry.
I set out to make a living from these building blocks, with absolutely no idea where it would take me.
II: Discovering the Skill of Debugging
I got hired by a small local company in central Illinois developing a CMS. I had to google “CMS” when I started. I had no idea how a CMS worked, but I had seen some PHP code before, and I had written a bunch of Perl in high school and college.
The job itself was unglamorous. I was given an old desktop PC and a monitor than took 20 minutes to turn on every morning.
I found out pretty quickly that I needed to get my workspace setup so that I could “fiddle around” with the code. All I could really do with the PHP environment was change something and reload the page.
As rudimentary as this setup was, it was enough for a simple test.
Load the page with state A. Observe. Load the page with state B. Observe. Note the differences, if any.
Gradually, I was able to make sense of what each piece of the application was doing. With that bit of…