I don't know how this works in practice, but it sounds like a great system even when dealing with code in a lower-risk setting.
I don't know how this works in practice, but it sounds like a great system even when dealing with code in a lower-risk setting.
See: http://en.wikipedia.org/wiki/Poka-yoke
If a bug got through, and you don't test. Then obviously its because you don't test. Not because the programmer isn't superhuman, and doesn't make mistakes.
Everybody makes mistakes, design the system to handle it.
When push comes to shove, it doesn't matter who made a mistake, all that matters is that things didn't work. And that's all you really care about. The result.
People make mistakes. But systems let mistakes into production.
Which is awful.
If you have a billion dollar program where a failure will kill people and create a political storm that will get your management chain fired or sidelined, you can justify spending $100M on the process (ie lots of people + less ability) to push quality.
The actions of the deceased often contribute to their death. The only lesson from assigning blame to the pilot for pilot-error is "Try not to make mistakes". Placing the system at the center of the investigation makes for better checklists that reduce the probability of pilot error for many pilots.
"Don't wear red and march in a straight line" is a better tactic than "Don't get shot."
I try to do this with my team as much as possible. I am limited by my superiors, who don't hold the same beliefs about maintaining morale and intrinsic motivation.
1: https://codeascraft.com/2012/05/22/blameless-postmortems/
2: http://www.amazon.com/Field-Guide-Understanding-Human-Error/...