Understanding Engineering Management Through Shipping Metaphors

May 31, 2009

We completed our first release with our new client ExpertCEO and were pleased to read the blog post of CEO Ken Ross about the update and the role our team played.   Open Mountain experts work as engineering management to oversee development and guide near shore teams to successful releases.  Ironically, we sometimes find ourselves explaining engineering management to companies even when their own experiences tell them software teams need leadership.  I’ve joked that you don’t know what engineering management is, but you know it when you have a good one.

Ken described our leadership as “oversight services to ensure that all of the technical, architectural and operational aspects are synchronized.”  Mario Chaves, CEO of our development partner Avantica, described Open Mountain another way, “[Open Mountain] experts improve communication, refine requirements and ensure all parties work seamlessly as one integrated team.”  These explanations certainly help to clarify our duties.  Perhaps a metaphor might help explain things better?

Developing software is like shipping cargo

Developing software is like loading a ship with cargo and navigating calm or rough seas to get to a final destination on time.  The captain puts together his best crew hopefully using seamen he has worked with before.   The navigator is the architect planning the journey.  The helmsman is the lead engineer and has the best sense for how the ship is handling.  The crew maintains the engines, cargo and supplies.  The captain, of course, is in charge of the ship and crew.  Let me provide some examples of how this metaphor is useful.

I took over a project in trouble at a previous job and described the project like this.  The ship was on a trip from Hawaii to San Francisco and right now they’re half way to Alaska.  We need to make a hard right turn and we may lose some of the cargo and crew overboard to get there on time.  This translates to making some decisions to change the direction of the project and that may include changing the team and cutting features.

Prioritizing features is like loading cargo.  We need to be in San Francisco within 3 months and you still have cargo on the loading dock.  You need to make some decisions fast and get this ship going or we’ll have no chance to arrive on time.  Load the ship too full and the ship will travel slowly.  Let’s quickly decide what needs to be loaded and shove off.

Agile development is like using a small, fast ship.  The client need not decide all the cargo he wants right away because the ship will be back in a month to pick up the next load.  It’s easier to select some items to load on a ship returning soon than trying to decide the only cargo you can bring in one shot.  As you can see, shipping works quite well.

Engineering management is like being the captain on the ship

The job of engineering management is to act as the captain of the ship.  The captain’s first job is to get the ship underway.  He helps the client decide what cargo to bring while selecting the crew and loading supplies.  The captain reviews the plan with his navigator and helmsmen, and manages the team to get the ship to sea as quickly and efficiently as possible.

If your development leader is pushing you to decide what is in a release, that’s because he knows the decisions you make start the journey.  He still needs to navigate the boat out of the harbor and across the ocean.

A good captain watches the early part of the journey intensely to verify his decisions.  He makes sure everyone knows their job, that the course is clear and the weather is known.  Making major course corrections in the middle of the ocean is definitely more difficult.  He makes sure the cargo is tied down and the supplies are sufficient just to be sure.

The role of the crew is clear to the client.  The navigator did the navigation, the helmsmen steered, and so on.  But if you refer to my earlier comment about engineering management, the captain was in charge but the client can’t say for sure what he did unless he was on the ship or talks to the crew.

Most captains I know are fine with this.  If the cargo arrives on time, the client is happy.  A well managed crew walks off the ship content.  If a captain made good decisions early on and tracked progress with an experienced eye, then the job was well done and the cargo is on its way to the final destination.

Had enough of this metaphor yet?  How about one more time?

Weather is unpredictable

Like it or not, projects get in trouble despite the best laid plans.  You’ll find out the hard way if you have a good captain when this storm hits.  An ocean storm can loosen your cargo or create a leak in your hull.  At that moment, the captain is the only crew member not assigned to a specific task and this probably is not his first storm.

A good captain will know that the leak is the most serious.  He’ll make sure that the navigator and helmsmen have their marching orders and put his best men on the leak.  The rest of the crew will be assigned to battening down the cargo and doing other less critical tasks.

By having the knowledge and leadership from experience, and the freedom to asses and assign, the captain is in perfect position to restore order and get the ship under control until the storm clears.  Most captains will simply confirm for the client they hit the storm and apologize for the damaged cargo.  He might ask for an extra long furlough for the guys.  And that’s really how you know you have a good captain!

So you see, a good engineering manager will do his best to create a project that runs on schedule and without hitches.  He’ll work with the team to define the work and make sure the engineers understand what needs to happen.  Throughout development, the manager tracks the progress of the team validating his decisions just like the caption of a ship checking in with his navigator and crew.  If things go awry, the engineering manager is the one team member with the experience, bandwidth and responsibility to get the project under control and manage it through to completion.

Three rules for selecting a good captain

Here are a few guidelines for helping you assess if you have an experienced and reliable engineering manager:

1) Has he been to many destinations encountering different weather patterns and obstacles along the way?  Is he an experienced manager and can he describe projects that were challenging to manage to completion?

2) Does he know how to build a good crew and does he bond with them and treat them well?  What does the team say about him?  Do they respect his experience and leadership?

3) Is he familiar with the most common and reliable boats used for shipping?  Is he familiar with the latest technologies?

These guidelines should help you select the best engineering manager for your project.  If you can’t find a sea worthy captain, a good leader will work provided you pair him with an experienced navigator and helmsmen.

Whatever you do, don’t head out to see without a captain.  If the ship hits rough waters, someone is going to have to step away from the job they are doing to get the crew under control and he may not have the experience to get the ship to port with cargo and crew intact.

Here’s to calm waters and white sandy beaches!

DSCN0636