There exists a recent and disturbing trend in the software quality space for people to view themselves as “test automation engineers” or similar, and to focus on creating large automation suites post-hoc. These suites are normally generated verbatim from acceptance criteria and mapped directly to UI-automation tests. The guiding principle appears to be that no bug shall ever reach production. While this goal is noble in theory, it’s destructive in practice. Worse, however, it also distracts us from the realisation that software quality is about much more than testing.
In this talk, we’ll cover a number of other, often-overlooked elements of software quality such as code design itself, monitoring, logging, instrumentation, SRE, synthetic transactions and production verification tests. We’ll look at production error rates and how to assess what an acceptable error rate is, and we’ll cover measures such as mean time to detection (MTTD) and mean time to remediation (MTTR) as key metrics for the overall quality of a solution. Critically, we’ll then put that into the context of what the system’s purpose is and whether that system is Good Enough.
Here’s a version of “Good Enough” Software that I delivered at Evolution by ThoughtWorks in Sydney and Melbourne in 2018.
I'm Head of IT & Engineering at Etax, one of Australia's largest tax agents. Other interesting places I've been before Etax include Octopus Deploy, ThoughtWorks, Readify, Zap BI, Realex Payments and TRL.
I'm a fan of high-quality code, domain-driven design, event-driven architecture, continuous delivery and, most importantly, shipping software that works and that solves people's problems.
I have a number of small open-source creations, including Nimbus, ConfigInjector and NotDeadYet, and am an occasional contributor to several more.
I'm a regular speaker and presenter at conferences and training events. My mother wrote COBOL on punch cards and I've been coding in one form or another since I was five years old.
Cyclist. Runner. Hiker. Budding skydiver. Photographer. Ballroom dancer. Motorcyclist. Occasional sailor. Lapsed fencer. Legatee.