If we built cars like we build software, then every morning you would have to be worried that your car might crash in the middle of the road or it would stop steering all of a sudden. We used to joke about this a lot 15 years ago. Software back then was terribly unstable and many will remember the horror of the famous Windows blue screen, which basically told you nothing except that quality control had failed somewhere.
To be fair, an operating system like Windows is constantly bombarded by requests from all types of different software, not all of which has been made by professionals. Not all of that software adheres to the standards set forth by the makers of the operating system. So the fact that quality control failed must mean that somebody at some company delivering software products was not taking their job seriously or an error just went unnoticed for a while. This is where the Germans come in. As anybody will tell you in Germany, Germans are very proud of the quality products they deliver. Everybody is. And that is important.
Only if every factory worker is proud of the total product they are making, only if every detail matters to everyone, then you will see that every car leaving the factory has no quality control issues. All of its nuts and bolts will be screwed with such precision, the metal will melt before any one of them comes loose. Why is that? Well, the biggest part of quality management is control. If you cannot control your process it becomes a free-for-all. The workers in that factory need to love their job, trusting each other and the managers to come up with the optimal possible process and then stick to it. Germans are pretty particular about rules and processes (let us leave the why to cultural anthropologists). Also German factory workers will check each other’s work and report mistakes back immediately to the people who made them. They will be bound by honour to fix the error. No failure would go unnoticed.
The software industry can learn something from that. When we build software, we should really have an honour system in place, which motivates all programmers to:
1. Take pride in their work as part of a bigger picture
2. Worry about integration as much as about their own piece of code
3. Feel compelled to fix errors as soon as possible
4. Check each other’s work
5. Report any error immediately, even if it is not part of their job description
And that is why Germans really do build better software. Jokes aside, while I do have German roots, I am by no means implying that nationality is a factor in determining the quality of cars or software. It is not about being German or of any other particular nationality, it is about taking quality assurance seriously and getting it into the minds and hearts of everybody involved. German cars are admired all over the world. Every German is proud of that.
Make sure every employee in your software company can be proud of your product and feels responsible for it and you will be able to build better software. Also anyone involved should constantly be checking every detail of the software. If you see something which can be improved, you fix it or make it an issue.
Having said that, software quality did improve a lot in the past 15 years. Methods like agile scrum, which emphasize the responsibility of the team and cross-skilling, help enormously to achieve the goals set out above. The move towards Continuous Integration is a move towards automating the quality control process and improving control. The move towards simplifying software helps us check each other’s work and makes it easier to find and fix errors. In many ways we are all moving towards becoming just a little bit German when it comes to software quality. Maybe you will remember that when you give your next presentation to management about the quality of your company’s software.