Crouching tiger, coding monkey

Space shuttles and higher quality without the junk food

Filed under: Programming, Space Shuttle — Grant May 1, 2008 @ 4:35 pm

Isn’t fun to be blamed for doing something wrong when writing code? Nothing quite like having QA, or even worse a customer, find some major issue with something you wrote. Writing software is a hugely personal thing; there is a tendency for developers to think of their code as reflection of themselves. So when a big screw up occurs, the stages, not go all Kübler-Ross on you, go kind of like this:

Denial: “That’s not my fault.”
Anger: “Why were you using it like that anyhow?!”
Bargaining: “Let me just do a quick a fix, you don’t need to write it up.”
Depression: “How could I do that? I don’t deserve to use a compiler.”
Acceptance: “Oops. I should fix that.”

The question for the day then is how do we make writing software less a reflection of self? Let’s take a look at how one place tackled this.

The classic example that comes to mind when talking about projects that need high quality software is space travel. And why not, it has all the traits of good storytelling. Massive amounts of money, it’s incredibly dangerous, and if one tiny thing goes wrong it becomes a huge news story.

See Orbiter, Mars.

There was an article from a while back that talked about the on-board shuttle group of the Lockheed Martin space division. It it gives us a not surprising peak into the development process of writing software for the space shuttle and the steps they take toward having extremely high quality. From the article:

“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.”

It also mentions why the quality is so critical:

* Shuttle costs about $4 billion dollars
* Lives of astronauts
* The focus of a nation

“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.’ ”

Brings a whole new level of seriousness to it doesn’t it?

I read a fair number of developer focus message boards and a recurring theme is the desire for things that are standard issue in this group.

* Everyone has an office
* Strictly 8 to 5
* They are mostly adults with spouses, kids, and lives outside of work
* A single client with a single platform
* There are essentially infinitely deep pockets thanks to the US government

I’m sure if working conditions like this were posted on the same forums there would be a digital stampede of resumes flying in. There is a downside though. Many time developers try to sell what they do as being part art, but from this next list there doesn’t appear to be much painting or songwriting.

* Planning, planning, and then some more planning
* Mountains of designs and specs
* Everything is reviewed, reviewed, and then reviewed
* There is no creativity. There is one way to do everything.
* No more stacks of Mountain Dew and empty pizza boxes.

It has been my experience that these items are the bane of the normal developer. Heck, one could argue that an entire methodology of software development has been created to stay away from this stuff.

There’s a bunch of other really interesting things in the article but it is the final of their four key tenets that really stuck at out me, and the one that answers our question from earlier is:

“4. Don’t just fix the mistakes — fix whatever permitted the mistake in the first place.”

This is really critically important, the concept of blaming the process and not the person. As soon as developers start getting defensive is when things like code reviews and refactoring become toxic operations. The shuttle software is certainly an extreme case and requires a level rigor not even remotely close to most software development but I can’t help but imagine that the process improvement/blame business would be useful. Once everyone bought into it the whole thing might even be embraced and quality would go up too.

I don’t know, for the cost of less soda and pizza it might just be worth it.

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment