Ever since I started in this industry, I’ve noticed that software developers have a curious aversion to criticism of their work product. On an emotional and creative level, I understand why this is so. But on a logical, business-minded level, this kind of personalization makes no sense.
Case in point: Much of my custom development business consists of crisis management – clients who chose poorly when selecting a developer suddenly find themselves with a failing project or a broken application on their hands, and I am frequently the guy they turn to to get things back on track. All too often, one of the problems cited with the previous developer is a lack of responsiveness to, and acceptance of, bug reports. One stakeholder of such a project recently complained to me that after the initial delivery, every bug report was met with a retort of “that’s not a bug, that’s a user error” from the previous developer.
Now, I have some pretty hairy user error stories. I have seen some people do things that I will not characterize as dumb, but rather unexpected and therefore unaccounted for in the code. But I have never seen a case where every single bug could be attributed to user error (even if I had, I’d be inclined to think that allowing a user to get themselves into that much trouble is in and of itself a bug – but that is a rant for another day).
No, that was simply a case of a developer being defensive. The code was poor quality, and I’m sure the developer – who was somewhat inexperienced – knew it but simply didn’t know what to do about it or how to ask someone for help. That is OK. What is not OK is knowingly refusing to take steps to correct the issue.
What more developers need to realize is that a bug report is not a personal referendum on your worth as a human being. In fact, I’ll go a step further and say that a bug report is not even a comment on your worth as a software developer (although a dozen bug reports against the same piece of code just might be). Now listen carefully, ladies and gents, I’m about to get to the heart of the matter: a bug report is an opportunity. No more and no less. When that user presents a bug to you, it is a plea for help, even if it is phrased in a way that sounds damning. It is also a challenge. And most of all, it is a business opportunity.
Call me a freak, but I get excited about bug reports. Not little-kid-on-Christmas-morning excited, but excited. And no, I don’t salt my code just so I can get the emotional payoff (and additional billable) of being the hero who fixes the crucial bug just in the nick of time. I know guys who do that, and I find it despicable. No, I get excited about bug reports for a few reasons:
- The fix is often a chance to make something within the application faster/cleaner/easier to use, etc.
- If the bug is due to a failure of spec, it is often a chance to learn something new about my client’s business
- The fix is often a good excuse to either learn a new technique or apply one recently learned
- I know that fixing the bug will make the customer happy, thereby contributing to a good relationship and continued revenue
I know that last point sounds a bit mercenary, but let’s face it – nobody gets out of bed each morning just to break even (again, this is a rant for another day). The point is, I find all these things exciting.
Sure, once I’ve delivered something that appears to work well, it stings a little to find that there is a flaw hidden away in the product someplace. But the sting quickly gives way to passion – passion to write software that just works, software that solves problems for people, software that people actually want to use, software that makes someone’s life better in some way, even if it is only their work life. I appreciate bug reports because it means that the users are engaged, paying attention, and care enough about what they are doing to want their tools to work. I usually reward a bug report with a smile and a “good find” comment rather than a long face. Obviously, if the client is upset, I immediately switch into serious, empathetic mode, but I will never give a client negative reinforcement for reporting a bug. I want them to feel like they can come to me when things go wrong. I know this sounds very touchy-feely, but it really does matter to the people who depend on software apps to run their businesses or do their jobs.
The bug report is your friend, people. The bug report is your key to a more solid work product. The bug report is your chance to challenge yourself. The bug report is an opportunity for you to improve your business. Do you have what it takes to swallow your initial “I am an artiste!” reaction, investigate the bug, and deliver a fix to your overjoyed client?
If you do, congratulations! Whatever kind of development you are doing now, you’ve got the right attitude for it.
If not, then for the love of all that is holy, do not go into business for yourself unless you can afford to hire someone to code behind you and clean up all your messes. Trust me, your clients will not appreciate you having an aversion to bug reports. In fact, they might even cut you loose and call me in to finish your project just so they can see the excitement in my eyes when they make a “good find!”