Watts Humphrey and a commitment to quality
I don’t know a single software developer who doesn’t process a commitment to quality – and who believes anything except that he or she designs, writes and publishes solid, secure applications filled with clean, efficient code.
I don’t know a single development team manager who won’t insist that his/her team writes great software – and who would be mightily offended if you suggest otherwise.
I don’t know a single IT professional who gets up in the morning and says, “I’m going to do a really lousy job today.”
Yet software has bugs. Platforms have vulnerabilities. Applications sometimes don’t meet requirements. Systems experience crashes, Blue Screens of Death, kernel panics. Hackers find a way to penetrate networks, servers, websites, applications and databases.
Clearly there’s a disconnect. Thinking about the great Watts Humphrey (see “‘Father of Software Quality’ Watts Humphrey dies at 83”) got me thinking about these issues. I hope this news got you thinking about quality, too.
The challenge isn’t that our teams suck. It’s not that we write crappy code. It’s not that our architects and designers don’t care about security and application performance; it’s not that our programmers are idiots; its not that our testers are asleep at the switch.
We don’t have bugs because we’re losers. It’s not because we don’t use the right agile methods, or because we don’t care, or because we don’t use the right software suites or “best of breed” solutions, or because we haven’t “built a culture of quality.”
There’s no silver bullet. The truth is that writing complex software is hard, and our modern platforms and protocols are very complex. No matter how hard we try, bugs, inefficiencies will always creep in – and in terms of vulnerabilities, there’s always something we haven’t thought of. So, for any non-trivial application, we’l always be fixing and patching.
Let’s say it again: There is no silver bullet.
What we need to remember, and what we need to communicate to our teams, is that we acknowledge that that quality is hard. So what? It’s our job. We must constantly find ways to do better, learn from our mistakes, stay responsive to our customers and their requirements, and keep doing the best job that we can.