Aug 112009
 

In my post­ing about becom­ing a Scrum Mas­ter, I talked about teams with non-cod­ing pro­ject man­agers often being more effect­ive than teams with pro­ject man­agers who also code. It seems that that’s a minor­ity view; most com­pan­ies appear to assume that any pro­ject man­ager should also act­ively code. I agree that any pro­ject man­ager in the soft­ware industry should have a cod­ing back­ground; if you haven’t been in the line of fire for a cus­tom­er deliv­er­able, or a demo for a con­fer­ence, then you don’t under­stand the needs of the coders on the team. You also won’t under­stand when they’re pulling the wool over your eyes, or mak­ing excuses because they don’t feel like doing some bor­ing but neces­sary task.

In a mid-sized to large com­pany, a pro­ject man­ager does the bor­ing stuff, talk­ing to leg­al about copy­right or licens­ing (for open source pro­jects in par­tic­u­lar), talk­ing to sales people about when the pro­ject might become a product they can sell to their cus­tom­ers, mak­ing sure the vari­ous parts of the team not only talk to each oth­er, but under­stand each oth­er, and mak­ing sure the vari­ous parts of the pro­ject mesh togeth­er. A pro­ject man­ager makes it pos­sible for the team to work as effi­ciently as pos­sible. This might mean shield­ing them from a man­ager who wants to change require­ments every day (one of the good things about Scrum, BTW, is the sys­tem for mak­ing sure that does­n’t hap­pen), or schedul­ing the secur­ity reviews for the right phase of the product design and release cycles.

In a small com­pany, the pro­ject man­ager is often also the product man­ager, doing all of the above as well as talk­ing dir­ectly to cus­tom­ers, tak­ing part in online dis­cus­sions, attend­ing con­fer­ences, and tak­ing part in rel­ev­ant stand­ards activities.

All of these are neces­sary activ­it­ies, and they all involve meet­ing with oth­er people, wheth­er in per­son or via some oth­er com­mu­nic­a­tion mech­an­ism. They aren’t tasks that require you to shut your­self away and think for hours, unlike, say, design­ing the serv­er-side archi­tec­ture, or hunt­ing down a recal­cit­rant bug. Paul Gra­ham recently wrote a rel­ev­ant piece entitled Maker­’s Sched­ule, Man­ager­’s Sched­ule. Using this ter­min­o­logy, each team mem­ber is a maker. It’s the pro­ject man­ager who takes care of the man­ager­’s sched­ule on behalf of every­one else, it’s the pro­ject man­ager whose sched­ule is inter­rupt­ible. The pro­ject man­ager does­n’t have the lux­ury of look­ing for­ward to a whole day of unin­ter­rup­ted work, the time to get deep in the zone, the abil­ity to ignore the phone and email. A lead developer will get more done, and the team as a whole will get more done, if s/he does­n’t also have to worry about HR issues, or nego­ti­at­ing an NDA, or telling a sales per­son why that large fea­ture for one cus­tom­er can­’t be added between now and tomor­row morning. 

  4 Responses to “Coding vs Non-Coding Project Managers”

  1. […] Cod­ing vs Non-Cod­ing Pro­ject Man­agers | Any­way In my post­ing about becom­ing a Scrum Mas­ter, I talked about teams with non-cod­ing pro­ject man­agers often being more effect­ive than teams with pro­ject man­agers who also code. It seems that that’s a minor­ity view; most com­pan­ies appear to assume that any pro­ject man­ager should also act­ively code. I agree that any pro­ject man­ager in the soft­ware industry should have a cod­ing back­ground; if you haven’t been in the line of fire for a cus­tom­er deliv­er­able, or a demo for a con­fer­ence, then you don’t under­stand the needs of the coders on the team. You also won’t under­stand when they’re pulling the wool over your eyes, or mak­ing excuses because they don’t feel like doing some bor­ing but neces­sary task. (tags: agile Product_Management devel­op­ment) This was writ­ten by Chuck Allen. Pos­ted on Tues­day, August 11, 2009, at 10:05 am. Filed under Uncat­egor­ized. Book­mark the permalink. Fol­low com­ments here with the RSS feed. Post a com­ment or leave a trackback. […]

  2. That’s an inter­est­ing obser­va­tion. Part of why I’ve chosen to be a “cod­ing man­ager” is because I know in order to main­tain an atmo­sphere where I can lead by example I have to be hit­ting the code. Espe­cially when I’m try­ing to drive “new” things like test driv­en design, code reviews, etc.

    How­ever, I’ve also made sure that every­one in the com­pany knows that if they want to inter­rupt someone on my team, they inter­rupt me. Then we fig­ure out when we can get some of the devs time if they urgently need it. Say, just before (or after) our morn­ing Scrum meet­ings so that the makers can spend the next 2–3 hours push­in’ code through.

    I admit, it’s kind of crazy doing both Makers and Man­agers sched­ules. I have a hard time bal­an­cing them both and it’s quite often where I get the feel­ing that I’m slip­ping in one respons­ib­il­ity or the oth­er. Long term, I don’t think it’s a sus­tain­able pos­i­tion if I want to max­im­ize the teams abil­it­ies and potential.

  3. I whole­heartedly agree with this post. The notion of a “cod­ing man­ager” is a fantasy for an organ­iz­a­tion that wants to be around for the long term. What such employ­ers want is some­body cap­able of hold­ing down 2 jobs (with the hours to match). This works in the short term, but you can­’t build a long career or busi­ness on that. Paul Gra­ham described that in his essay where he did the man­ager work between 12PM and 5PM, and the cod­ing work between 7PM and 3AM. i.e. 2 jobs. 

    How­ever, if you are an investor, these kinds of cod­ing man­agers are ideal. It helps reduce costs of a star­tup, and since most star­tups only last a few years (because they fail, or grow), you don’t have to worry about burn­ing out your long-term asset (the cod­ing man­ager), or the burnout will come when some­body else is run­ning the show.

  4. […] had a couple of inter­est­ing com­ments on my piece about Cod­ing vs Non-Cod­ing Pro­ject Man­agers; in my case it was the way things worked out rather than a deliberate […]

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

/* ]]> */