I’ve been thinking about doing a series of posts on this for a while. For some reason I’m inspired to write it now. I’ve been involved in a number of software companies and projects of a variety of shapes and sizes but I find there is a similar rhythm across them all.
I’m going to divide the software release cycle into three phases and write one post on each. The three parts (named after the phases of a chess game) are:
Every software project I’ve seen has these aspects to some degree. The scale can vary from days to months, the formality can vary from casual to anal, and the process can be all over the map, yet I’d contend most software developers would recognize these phases.
In successful teams, this rhythm is tangible. You can ask anyone on the team, and they know where they are in the cycle, what activities are going on, and what comes next. If people have different views of where they are in the process or are completely unaware of the existence of the process, the team is probably dysfunctional and likely to fail. It’s kind of the difference between a marching band and a bunch of people wandering around holding instruments and farting.
Sometimes I struggle to describe this rhythm to people not involved in creating software. I might announce that we’ve released a new version of the product to my wife and she’ll say “Great, so you’re done?” Err…not exactly. Just moved to the next cycle.
In many ways, it reminds me of the turning of the seasons, which is something I never used to really think about. Now I relish the rhythm of the year and the feel of each passing season, even if it makes me feel like an old fart. I love watching my kids sail through it oblivious, delighting in every holiday, weather, and birthday that comes along.
But enough of the philosophizing… here begins part 1: The Opening.