Yesterday I was visiting Scania when their R&D department had a family-day where they demonstrated what they are working with. Scania, for those of you who don’t know, is famous for making high quality trucks and buses. What struck me when we went from room to room and hall to hall was that wherever we went, there was an automated testing rig!
They were unit testing small components like crankshafts, integration testing larger components like frames, and system testing fully featured trucks in climate chambers and on test tracks. A lot of the tests they had were long-running tests that went on for days or weeks or more.
Everywhere they had boards about their improvement groups, responsible for the never-ending work of building even better products, every day.
The most impressive thing, however, was the display case where they had the “bottom five parts”, i.e. the parts they had to replace that cost them most money. The display case was not there for the family day, it was real, and it was placed in a junction where a lot of people pass by every day. They wanted people to think on how to improve those parts to get them out of that display case. That’s what I call transparency!
My guess is that Scania wouldn’t be where they are today if they had continuously wasted their customers money by making bad products that broke down when heavily loaded, or after a few days on the road. That is just not on their map! Instead, they are totally devoted to make things that don’t break, period. And they make everything a little bit better today, tomorrow, and the day after that, and the day after that…
In the same way, we in the software industry must stop wasting our customers money!
We have to start delivering things that really work for the end user, that has quality built in from the start, and down to the nuts and bolts of the systems, we must have high quality. We need to test more in an automated fashion, and we shouldn’t start building things before we know what needs to be done.
This is not the sole responsibility of the developers; the customers must facilitate the operations so that the developers have the knowledge and resources they need. That may be usability expertise or actual users of the system, or it may be testing rigs (e.g. computers) that can test the whole system from a lot of aspects. The customers also need to commit to constantly improve the way they work, every day.
Finally, everybody, and I mean everybody, must provide the highest level of transparency possibly. Otherwise feedback is distorted or blocked, and no improvements can be made.
I think this is where software quality is going. We can get there by wisdom, or by pain. The choice is ours.