A Debugger’s Life
I have extremely poor vision; when I wake up, if I did not know how many fingers I had on each of my hands, I could not tell you by looking. When I moved into a new place, this was an issue. I’d grope around every morning, feeling the cold tile on my feet, and orienting myself with the cracks (and occasionally unforgiving stub of the toe), by hook or by crook, I’d make it to the restroom to put on my contacts (a set of $1,000 contact lenses known as “scleral lenses”, designed for those who would otherwise be legally blind). Managing to plug the sink, I’d then proceed with the nearly hard-coded exercise of putting in my contact lenses (a process which would require its own boring article). Working on code you’ve never seen before is a lot like that.
The parallels are immediately obvious. When you live in a natural state of half-blindness, you sort of manage to do certain things with your other senses (you cannot wear hard contact lenses for nearly as long as you can wear soft contact lenses; or at least not without risk of severe injury). In this state, you have an immediate familiarity. You see a blur which could be a cat or a box, but you assume it’s not a cat because it’s immobile. But even so, you have an intimate familiarity with the way in which you interact with your environment. When the specifics of the environment, however, change, that poses a problem: you feel lost and set adrift; however, every single day that you are exposed to this environment, it becomes intimately familiar until the day that you are careening through it with abandon, sight be damned!
Some may be wondering why a degree in computer science or its equivalent would not be enough to pick up on any project immediately; it’s all just code after all. To those doubting Thomases, I’d point them toward the bowels of tort law, and see how much their knowledge of English comes in handy when in a strange and novel environment. They would fare no better than I would robbed of my contacts and woken up in a strange new building.
But even with a new building comes assumptions which come in handy. For example, the restroom tends to be near bedrooms. It tends to be in a part of the building which, for obvious reasons, would not offend if used for its intended purpose. And, if more exploration of the building were required, the right hand rule of traversing mazes combined with the spatial knowledge that bathrooms tend to be stacked on top of one another come in handy. Thus, the more one works on projects (or the more odd buildings one finds oneself in in a half-blind state), the more one is able to adapt to new ones. At least I hope that extended metaphor is true, dear reader, for I am in a situation in which it must.