Software is… hard. There are so many things to think about, even when creating an offering as simple as an automated email message. Click on the image on the left and you’ll see what I mean. Notice the link in the bottom status bar and the highlighted link in the text. It’s for Hertz.com, but the actual link reference is for Hertz.com. – an added “.” period. Note that it is also an SSL secure website, which means that the security certificate needs to exactly match the URL if you don’t want the browser to pop up a scary “security exception” notice. Someone at Hertz.com didn’t get it right. More likely several someones.
Creating good software takes an attention to detail that the “engineering” discipline attempts to enforce. But unlike many traditional engineering tasks, there are many different ways of accomplishing the same task, and they can all be valid at one point or another. The number of systems, concepts, languages, end customer environments… it’s staggering how much a programming “maven” needs to keep in his or her head.
Processes and project roles are a big help. A project manager to plan and maintain the big picture, designers who sweat the details, developers who are experienced and focused, quality assurance folks who nitpick every little comma and period. Every one of those roles has a responsibility to catch that “Hertz.com.” error.
- Did the project manager ensure that the wording in the email is correct?
- Did the designer check the text, the fonts, the highlighting colors?
- Did the developer know how to construct a link in both HTML and Text formats?
- Did the QA folks actually click the link – and clicked it using a “clean” environment?
I remember a tester who worked on my EasyACCT stuff back at Tax and Accounting Software Corporation (TAASC) in Tulsa – Brian Anderson. He was a superb tester, and later became a developer as well. He owns Hostek.com, where this website (and my others) are hosted.
He would sometimes come up with the craziest sequences to duplicate an error – press Ctrl-Shift and then down arrow five times, type “Q-2” and press Enter, and you see this error message. Maddening. But if Brian tested it, then I was confident that my application was thoroughly tested and working as good as mortal man could make it.
A great tester is worth his or her weight in gold, as is a nit-picky designer, a thorough and knowledgeable project manager, and a careful and experienced developer. Don’t skimp on your people, and always have at least one truly experienced person in your project team. Programming is an art, not a science. You put chlorine onto gold, you’ll get dissolved gold and a very unhappy investor. There aren’t variations when those two elements are mixed. You design an application, and there are dozens if not hundreds of ways that things could be mixed to create the working application. Experience is absolutely necessary if you want Quality.