Saturday, February 21, 2009

Ship/No Ship

At the end of a typical project the dev team holds a ship/no ship meeting, where the programmers and testers are expected to bless the Release Candidate build for formal signoff. I have been present at a number of these, and they're almost always a formality. The dev manager goes around the room and asks if you think it's ready to ship.

Usually there's that one curmudgeon who rates the build a solid D+ and makes a show of hemming and hawing, but it's very rare for someone to actually vote "No Ship." You just don't normally get to that meeting without everybody already on board. But I can remember one time when the vote wasn't unanimous.

The situation was this. About a month before the scheduled ship date we started to run into rare, intermittent kernel panics. They only occurred about once per day in a lab of six machines after hours of automated stress testing. And despite our best efforts we never could find a reproducible test case. This crash persisted through all subsequent builds, up to and including the Release Candidate. It was never isolated, and consequently never fixed.

So there we were on ship day, in a conference room with the team assembled and the director of our group on the speakerphone. The manager started going around the room for everybody's input, and like always there were no dissents.

They had gotten about halfway around the room when it was my turn. I told them I felt obligated to vote No Ship. When asked for my rationale, I asserted: "We don't ship software with known kernel panics." I remember there being a brief pause, and then the meeting continued. I was the only person to vote against shipping.

So we shipped with a known kernel panic, and I was forced to revise my assertion.

No comments:

Post a Comment