Putting the Cart Before the Horse
Why application quality starts with good design, not implementation.
The focus of so much “training” around the quality space misses a great opportunity. Whether the training takes the form of a blog; an article; formal training; a meetup; or a conference, the primary and overriding focus is on the implementation of a quality solution, usually in the form of some shiny new technology or automation. But the really valuable challenge is about designing the quality solution in the first place, and this is largely neglected.
The solution, in the shape of a holistic quality strategy, forms the foundation of any subsequent solution implementation. A good quality strategy can make the difference between a project that is high-quality, timely and cost-effective, and one that is not.
There’s a myth that the Americans spent a million dollars developing a pen that would work in space, and the Russians took a pencil. Whether it’s true or not, good strategy and process should be the basis of any implementation.
Trying to implement a solution without the strategy puts at risk the very thing we are trying to achieve.
A quality strategy touches upon a broad spectrum of the SDLC (Software Development Life Cycle):
- Process -> Acceptance Test Driven Development, definition of done
- Software development -> test helpers, contract first design, independent delivery through stubbing, shared code repository, SOLID principles
- Test development -> layered testing driven by architecture, contract-based testing, Behaviour Driven Development
- QE skill -> pairing with Devs, various testing approaches such as model based, bug bashes, crowd testing
- Static analysis -> peer, code analysis, code coverage, pairing
- Production release risk -> scaling, switching, diagnostics, recovery
- Continuous improvement -> capturing metrics on quality, such as functional test code coverage, continuous integration time, escaped bugs, quality health checks
- Etcetera etcetera etcetera
Here at the Telegraph we have started actively rolling out a number of initiatives to the technology teams, that shift the initial focus away from the test solution implementation to the strategy. Our key focuses include; ATDD, Contract Based Testing, layered test architecture, Behaviour Driven Development, a common codebase for tests, quality metrics, and quality health checks.
If the quality community invested more time and effort into articulating our thoughts around strategy before implementing solutions, then we would be building our “quality house” on a firm foundation. If training, the internet, conferences and others focused more on strategy, principles, and good practice, I believe that the implementations of quality solutions would be far more efficient and cost effective, and our “quality house” would be fit for purpose. (A learned colleague pointed out that there are four mentions of ‘quality’ in this paragraph — doh! that makes five — … the benefit of static reviews.)