“We need someone to go to site X this week”, said our team lead. There was a sigh among the developers in the room. “I know, I know,” she apologized, “but we need to do this to keep management off our backs.” Site X was a real pain. Some of the servers had the habit of crashing at random times. Sometimes it worked fine for a week, sometimes it crashed several times a day. Nobody wanted to touch it. We knew it would mean sitting in a server room in the middle of nowhere, waiting for a crash to happen, and hoping we could debug it when it finally did.
Up until now our team lead had managed to protect us from having to deal with this. This was the only site having this problem. Sending a developer there would be costly (this was before broadband connections where available everywhere). The case was bounced from department to department. Nobody wanted to touch it. After a lot of hesitation, I was one of the two developers who reluctantly agreed to go. Little did I know that I would change my attitude as soon as we arrived at our destination.
When we arrived, we were greeted by the site administrator. “I’m so happy you’re finally here!” he exclaimed. We could immediately see that he was exhausted. While waiting for us to fix the problem, he had been forced to connect a watchdog to the server. Every time the server crashed his cell phone would ring and he would have to drive to the site and restart the servers. The phone had become a ticking bomb that could go off at any time. During the last month he had been constantly on call, he had not been sleeping properly, and he had not been able to go away for weekends. Needless to say it was an extremely stressful situation for him.
After hearing his story, all of our reluctance to work on this problem was suddenly gone! We really wanted to help this guy out. After some really hard work and more than our share of luck, we finally managed to find and fix the problem before our flight back home. The look of relief on the site admins face was priceless. I still remember him calling his wife while driving us to the airport. “Honey, they fixed the problem! Yes, really! I love you too. I’m coming home soon.”
By learning the personal story behind that anonymous item in the bug tracking software that horrible assignment had turned into one of the most satisfactory moments in my career. This is what software craftsmanship means to me: keeping situations like this from happening in the first place. Every time we take a shortcut, skip writing that test, or guess at what is meant by a user story instead of asking, we risk that someone will suffer from it. If we can keep this in mind we will increase our chances of creating software that is useful and proudly call ourselves professional software developers.