Product release cycle decoded
Allan came in this morning and told me about his odyssey working with one of our systems that he thought had crashed. Upon reflection at lunch, I started to think about the phases of product maturity. Now you have to understand that I have been doing engineering and product management at many companies, from small to gigantic for more than 15 years. I wake up with night sweats muttering "alpha, beta 1, beta 2, release candidate 1, release candidate 2, FCS."
The reality is that those terms are all code words, shorthand if you will, for the following:
- Alpha -- It crashes when doing the most basic tasks, or every five minutes, whichever comes first. When interacting in a large system, if something happens, it's definitely our fault.
- Beta 1 -- Somebody, long ago, came up with Beta 1 to fool management into thinking we're making progress. It's really still Alpha and thus it's still our fault.
- Beta 2 -- It finally doesn't crash when doing the most basic tasks, but still crashes at least daily. It's probably our fault.
- Release Candidate 1 -- Things are finally starting to stabilize. Maybe it's not our fault.
- Release Candidate 2 -- This is here to fix all the stupid stuff that inevitably slips through RC1. It's probably not our fault.
- FCS -- Ship it. What bug?
Allan's experience suggests we, Vyatta, are crossing that line between "probably our fault" to "maybe it's not our fault." That's a good sign. Progress happens in slow, plodding steps.