For the past few weeks, I have had a bug assigned to me that a client had found. The problem was that I couldn’t reproduce the bug. Even our QA team couldn’t reproduce it. However, when we went to the clients environment, there it was - as clear as the stars in the country.
We have struggled with the problem time and time again. It really hits your ego pretty hard and wears you down. There were so many different possiblities, but we would keep proving that they were dead ends.
My manager had been speaking about a line-by-line code review to find the answer. It was something that I really wasn’t looking forward to. I came in to work and started searching code in the database. Shortly there after, I found the problem. I slapped my head and couldn’t believe my eyes. Just then, my manager walked in.
I went to her and exclaimed that I think that I had found it. We needed confirmation that we could duplicate the problem. I gave her a plan and we both sat down and tried it. Sure enough, we were finally able to duplicate the bug.
So what was different between the two environments? I’ll tell you. Humans. That’s rite. It is the plural word for human. A developer such as myself was only one person testing an isolated system.
For more technical details, I’ll say that it was a trigger in the database that updated everyones data rather then the specific person who had just inserted a new piece of data.
The fix was easy and my manager gave me a high-five. She made a joke (I think) about deserving a bonus. It was just a problem that everyone in the office was confused over. I felt like there eyes were on me to fix it quickly.
The real clencher is that this is a database problem. The database is the main thing that I take care of these days at work. I am responsible. I inherited most of the architecture, but this specific feature was designed by yours truly.
There was nowhere to pass the blame except for myself. The reason being is that I would try and point this specific kind of problem out to the guy that I inherited the database from. He had always assumed triggers would be updating only one record at a time. The phrase “Do as I say, not as I do” comes to mind.
I take a lot of pride in my work. While everyone else was happy, I was dissapointed in myself for this bug.
A lot of stress was released from the past few weeks. I was able to concentrate my efforts on some of the few bugs that we have left. I got caught up working with the iCalendar format and timezones. I was so involved with it that before long, it was time to go home. I left work on a positive note and feeling better about myself.
Tags: Work, Database, Bug, Client, Fix, Programming, Troubleshooting, Trigger, Ego, Blame