Tuesday, April 17, 2007

Perfect Code


The article linked above discusses the attitude towards coding among the team that writes the software controlling the space shuttle and how different it is to the generally accepted norm. Some choice quotes:
What makes it remarkable is how well the software works. This software never crashes. It never needs to be re-booted. This software is bug-free. It is perfect, as perfect as human beings have achieved. Consider these stats : the last three versions of the program -- each 420,000 lines long-had just one error each. The last 11 versions of this software had a total of 17 errors. Commercial programs of equivalent complexity would have 5,000 errors.

The group writes software this good because that's how good it has to be. Every time it fires up the shuttle, their software is controlling a $4 billion piece of equipment, the lives of a half-dozen astronauts, and the dreams of the nation. Even the smallest error in space can have enormous consequences: the orbiting space shuttle travels at 17,500 miles per hour; a bug that causes a timing problem of just two-thirds of a second puts the space shuttle three miles off course.

NASA knows how good the software has to be. Before every flight, Ted Keller, the senior technical manager of the on-board shuttle group, flies to Florida where he signs a document certifying that the software will not endanger the shuttle. If Keller can't go, a formal line of succession dictates who can sign in his place.

Bill Pate, who's worked on the space flight software over the last 22 years, says the group understands the stakes: "If the software isn't perfect, some of the people we go to meetings with might die."

Talk about pressure... And one last one:
Ten years ago the shuttle group was considered world-class. Since then, it has cut its own error rate by 90%.

They have a large enough budget to do what they need, they have formal practices in place to stop problems almost before they come into existence, and they don't get singled out and punished for mistakes (after all, if a mistake makes it through the process then other people also didn't spot it, and there must be a flaw in the process that can be fixed to prevent this happening in the future). Sounds like a perfect working environment to me :-) Now... where can I raise $35 million per year and find a crack team of coders to do my work for me?

No comments:

Post a Comment