Most programmers would never admit how bad their code is. Most posts about computer code are about how to improve code, make it better. This however, is about something else, something more primal, more basic than even the most basic “Hello World”. This is about the impact of the programmer’s emotions on code.
I recently lost my boss and good friend Bill to cancer. I say “I” because I took it very personally. While he may have lost his battle, it was I that lost him, it was I that had to carry on and it was I that had to walk into work the day after his funeral and keep working on the plans and ideas we had developed as a team.
Bill the team and I literally worked side by side. Bill had his own office, but more often than not, he would come down and sit with us. We coded and he tested. If the conversation drifted too far from the task at hand one of us would say “Squirrel”, our code word for “get back to work” and we would settle down and get back to it. He would fend off the user issues and stack them neatly into ticket when needed. Other times, he would walk the user though issues that were not really software issues, but misunderstanding of how the software was supposed to work.
Bill’s other great gift was keeping upper management informed and setting their expectations, then if we missed that expectation, he would keep them off our backs while we worked like hell to catch up. He had been in the IT and software industry long enough to walk that fine line like a pro, giving us room to do what we do best.
By now you should be able to tell the type of boss Bill was. I did not always agree with him, but I always respected his knowledge and direction.
Work was less like work and more like kids playing war, making plans, trying to find the best way to take it just a little closer that that next level. We were coconspirators, looking for the next great way to wow ourselves, and the people we worked for.
As Bill got sicker and sicker, my focus was less and less on the code and more and more on the pain I had at loosing a great boss and friend. Knowing that soon he would not be their and oh so wanting him there for just one more day.
The project we were working on was not that hard, in fact the complexity was far less than what we had done in the past. It should have been a walk in the park, but I just could not keep my head in the code. Looking at the code now I can see the entire team just did not have their head in the game.
Coding, good coding, is a personal struggle, a personal journey. It is the struggle with your self to overcome your own internal biases and preconceptions. To look at the problem and break it down to the n level, building your solution without building your self into corners. Sometimes it is almost a spiritual journey, where the answers come from deep inside, when you type something and realize that you just created something from nothing, and it is better than anything you have ever created before. You see the beauty, the symmetry and are in awe of your own creation. Looking at the last project I worked on with Bill, it is apparent that was just not there.
In fact, looking at the code now triggers that same pain of loosing Bill; I have never had such a reaction to computer code before.
But, and here’s the thing, the show must go on, Bill would not approve of not doing our best. It would dishonor all those great memories to not push on, to carry on the plans and schemes we worked on together. To push just that little bit harder to wow ourselves, and the people we work with.
I have pushed the last project I worked on with Bill to the new programmer. It’s crap code, but I know the new guy will be able to do a better job with it than I can. I feel bad pushing it off to him, but I know I will never be able to work on that code and give it my best. The show must go on.