Long before plastic surgery, the invention of the knife began changing the look of the human face. Recently, anthropologists discovered that the shape of human faces were greatly impacted when we developed the ability to cut meat with a knife. Before this invention, early humans would have to chew a great deal in order to swallow the raw meat they ate. Creating sharp edges on stone allowed them to cut their meat before chewing. This reduced the effort needed to chew, and ultimately made large teeth, jaw bones and facial muscles unnecessary. As this simple tool began to make eating easier, it literally changed the face of humanity.
To Err is Human
While the exact process humans took to arrive at those early stone knives is not known, the first versions of this invention were probably not perfect. For example, our ancestors may have found some types of rock difficult to work with. Or, they may have first created stones with broad edges but soon learned a tool with a finer point is necessary. No matter what is being created, there is something very human about this process of trial and error. It was part of making simple tools in the past, and it definitely plays a role in making today’s more complex tools, like computer software.
To Trial and Err is Software Development
Software is highly prone to the “error” side of the “trial and error” equation. While many problems present themselves clearly as pop-up boxes or harsh messages with red lettering, consider all that goes wrong with a software application where no error message appears:
- User Interface: everything is working but not in a way that makes sense to the user
- Unexpected Use: the user is able to accidentally “break” the product by doing something the developer did not expect
- Security Issues: a user can intentionally “break” the product, exposing data or causing failure
- Unmet Requirements: the software works but it does not do everything that was promised
- Regressions: an effective addition to one area of the software makes another area unusable
Enter, Quality Assurance
To make sure a software application is both useful and usable, it helps to have a person who can verify the functionality of the software while exposing the kinds of issues mentioned above. Unchecked, these can devastate even the most promising development projects, and this is exactly the point where quality assurance becomes an important part of any project.
However, a question arises—can’t a software developer adequately test what they are creating, or better yet, make sure the code is solid in the first place? Of course, a competent software developer will test their code as they create it and will be aware of the requirements of the project, working to avoid errors ahead of time. However, being the only tester for one’s own code is like being the sole editor for one’s own writing.
Code Writers’ Bias
Publishers never rely on writers to edit their own work. One of the many reasons for this is that a writer can be biased toward their own choice of words. They may not be able to look at them critically and the writing suffers. This stems from a kind of confidence successful creators have in their own decisions, which on one hand enables them to create well, but on the other hand makes them blind to what is not working.
People must feel that what they are creating is valuable in order to forge ahead with their creations. However, in software development, this can lead to the problem of misplaced confidence, where developers underestimate their code’s vulnerability to error and overlook something important.
Quality Assurance: A Catalyst for Success
This doesn’t have to be an issue when Quality Assurance is actively involved. Why not allow the developer to have that confidence, and let QA give them helpful feedback or report problems as they arise? This kind of oversight is what brings the “assurance” into “quality assurance”. It means that what is being made is worthy of the developer’s confidence. In this way, by watching out for failure, they become a catalyst for success.
So the next time you slice through a tough cut of meat, think not only of the early pioneers of cutlery, but also the accomplished, though primitive, “QA staff” that supported the effort. Of course, this may have only consisted of a few early meat-eaters, chewing away around a fire, but the process of innovation is, in principle the same as what we have today. It could be considered one part of an on-going effort to change the face of humanity.