ASP.NET Security Consultant

I'm an author, speaker, and generally a the-way-we've-always-done-it-sucks security guy who specializes in web technologies and ASP.NET.

I'm a bit of a health nut too, having lost 50 pounds in 2019 and 2020. Check out my blog for weight loss tips!

Why software developers make lousy testers

Published on: 2012-02-05

Developers make lousy testers, and I say this both because I've been a developer and because I've been a team lead/project manager who watched over other developers. Yet companies continue to expect their developers to QA their own work. Of course developers need to test their work before giving it to someone else – it's just too easy to make an obvious programming mistake. But allowing code to be put into production without a non-developer viewing the code is a bad idea. Here's why:

Developers are used to working around problems.

When I'm testing something I've built, I might have made a change that affects several pieces of functionality, but I'll test items one at a time. Whenever an unexpected problem crops up in an unrelated piece of functionality, I will make a note of it, but I will work around it in an effort to finish my original test plan. As a result, I've gotten good at working around problems in web sites. I will do it on third-party sites without thinking. It means that I sometimes will overlook errors because I forget that the end user can't diagnose technical problems and work around technical issues as easily as I can.

Developers get used to quirks in their software.

I'm disappointed to say that I can't think of an application that didn't have some quirk in it that I wish were eliminated. The issue is similar to the one above in that we see an issue, think "I'll fix it later", and never do. After seeing that quirk for a period of time, it just becomes a normal part of the interface. When this happens, and the user doesn't say anything, these quirks get to production. Having a thorough testing by a knowledgeable tester can help eliminate these issues.

Developers focus too much on "does it work", rather than "does it make sense"

Developers are primarily paid to turn a design into working software. Therefore, their focus is on making the design work, not making the design. When the design isn't user friendly, or if the design was done by a developer, user interface difficulties become low-priority to fix. End-user testing can help eliminate these problems that annoy the user.

This article was originally posted here and may have been edited for clarity.