A couple of years ago I collaborated with David Hussman. David likes to use music metaphors, and one in particular got me thinking. David talks about music production, and studio work, and describes three phases of work in a studio:
- Pre-production
- Finding your groove
- Keeping the band together
I have experience playing in bands and recording in studios, so those concepts grabbed me immediately. Preproduction: If you don’t figure out where you want to go prior to getting started, you can burn up your studio time and not have a good finished project. Finding your groove: it takes time and practice to get your work to be at its best.
Keeping the band together: recording and writing music is stressful, and there are a lot of things that can cause friction, dooming your project. Furthermore, if you play together for a while, you can get bored, or in a creative rut, so you need to do things to keep things fresh and interesting. (For more on music production, check out Bobby Oswinski’s work and think of how his descriptions and advice might relate to software projects.)
This led me to think about software projects, and I re-framed those concepts like this:
- planning and getting started
- getting productive
- staying productive
As an industry, we’ve done a lot of work on #1 Planning and getting started, so much so that we often ended up over-planning, and working on too much speculative, up-front design and didn’t leave much time for the actual product creation. When I started out, I could find books on software development topics that were filled with planning ideas. Often, actual implementation ideas were a bit light.
The backlash against too much up-front planning came in the form of processes like Rapid Application Development, the Spiral model, Evo, and eventually the Agile methods. These have helped us address #2, Getting Productive: we have a lot of processes and tools that helps us get productive. We have practical advice on how to execute the technical aspects of our work, and manage them.
That leads me to #3, Staying Productive. How do you keep a team productive in the face of so many threats?
- following a process that worked in the past, even though it isn’t working very well now
- getting bored with the technology and tools
- personality and team conflicts
- changes in the market and demand for your product
- disruptive technology threatening your existing stack
- teams becoming too cohesive and comfortable, so they stop innovating and productivity drops
- others
We have a lot to draw on for planning and getting productive, but the concept of staying productive is often lost on us. How a team can sustain value creation over the long haul can be fascinating, and we overlook it at our peril.