My father worked for many years in QA at Beckman, an American medical instruments firm. His job was to ensure that newly-manufactured centrifuge rotors would hold up when spun at thousands of RPMs. He used to tell me that the Beckman philosophy could be summarised in one sentence — “There is no substitute for quality”.
When it comes to software development, the same attitude must apply. The emphasis on quality must be relentless. But quality is often about the details, and when a development team is under pressure to deliver a product, a constant focus on the details can be tiring. But software quality often comes from one small detail after another — and all those small quality improvements add up to a great product.
A relentless drive to quality requires stamina. For example, asking an engineer to perform a global search-and-replace, so that a variable has a better name, may only seem like a marginal improvement. Haven’t we got better things to do? When acting as a team lead I like to remind my teammates that “I’m always thinking of the next guy”. I find my fellow developers always empathize with this statement — they can picture the next person reading their code, and realise it will be they reading someone else’s code tomorrow.
When building a large computer system, one must get the big things right — the high-level design, ensuring it’ll operate sanely when components fail, and that it can be effectively managed by the Operations team. And because we are working with computers, the details matter enormously. After all, to the electrons flowing through the transistors, there is no difference between the high-level design, and what’s implemented. It’s all details.