Saturday, September 12, 2015

Summit Everest! Surviving the engineering death zone.




The lifecycle of a software product can seem mysteriously vague,  complex, or overly simplified depending on the audience.  I liken it to a climb with the highs, lows, and ultimately a conquest or defeat.

Base Camp

The beginning of a new project and the buzz of fresh energy throughout the team is palpable.  Ideas, roles, and a vision of the possible emerges from every situation or get together. The morale and excitement is at an all time high! Every creature comfort is available and the team starts off as well rested and prepared as they will ever be.

Camp One

Camp one is reached in record time, the time to market forecast is being wildly exceeded as sheer energy and momentum lifts the team seemingly without effort. Prototypes and functionality appear weekly out of nowhere.  Checkins litter the git history from what looks like 24/7 output people trying to write as fast as their brains can think.  Product management is struggling to keep track of all the new work.
   

Camp Two

Camp two is also quickly reached but the renaissance of creativity yields to the thinner air of coalescing effort. Some time is now being spent acclimatizing instead of rapidly moving forward, fewer feature branches appear as product management steers a unified course up the mountain.  Some re-planning and adjustment are implemented.

Camp Three (Lhotse wall)   

Arrival at camp three is signaled by the teams progress velocity returning to real world numbers. It took longer to get here then expected, maybe a lot longer. A unified codebase along with the requisite build and test process has appeared. Creativity is scaled back to solving many of the initial hand waves done earlier in the climb that kept the forward momentum at the expense of problem solving each detail.  Some doldrums will set in and those truly in shape will seem less affected,  leaders may rise and fall here.

Camp Four (The death zone)

You have reached the death zone, this is the 10% of remaining work that will take 90% of the projects total effort to complete.  The go to market schedule which was insanely optimistic and ahead of schedule now suddenly seems to be behind.  The engineering progress as been reduced to a crawl. Any small change in requirements,  code refactoring, or new feature development has wide ranging implications that can tie up the team for days to sort out.  As people sip oxygen from what remains in the tanks it takes supreme confidence and leadership to overcome the fear and exhaustion for the final push to the summit.  Lingering at camp four seems to go on forever,  you must have confidence.

At this point it can sometimes be necessary to bring in finishers to help with the final push. Finishers are fresh eyes and legs that can give some perspective to the team that is not tunnel visioned or snow-blinded from fighting up every inch of the trail to this point,  A fresh perspective can help chart the easiest path to the summit, it can also lead you into an avalanche so the right guide is CRUCIAL.

Summit 

What needs to be said here really, pop a champagne and take a picture. But don't tarry or bask too long on the top of the world its dangerous to do so. Quickly get back down to basecamp to rest and rebuild the team, and begin to prepare for the next climb.

No comments:

Post a Comment