CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Peter's Gekko

public Blog MyNotepad : Imho { }

A program manager should be an architect

What is an architect ? There are many definitions around, varying from "an elitist in an ivory tower throwing down incomprehensible documents" to "a developer more equal than others". In a previous post I quite boldly stated that an architect always should be a coder and nearly everybody seemed to agree on that. But an architect is more than just a coder. Constructing a building is not throwing an amount of bricks and timber on a heap, you need an architect who will split and organize the job in building walls, constructing the roof, laying the plumbing, etc. To construct software you also have to split the project into manageable parts. To get a separation and lineup of user interactions, concerns and dependencies you need a person who knows how to do that. And that's imho a good workable definition of an architect: somebody who gives a technical structure to the project. For this structure to be constructible the architect has to speak the same language as the constructors, he has to code.

In comes the program manager (PM). What are usually his roles ?

  1. Coach and motivate his team members
  2. Organize the work to be done
  3. Report to management

The first role is a matter of personality. The PM might be a total jerk but just one guy on the team with radiating passion and humor can boost the morale and productivity to unknown heights. He (she) does not have to be a technical wonder, just making the workplace a pleasant place is the wonder itself. No PM required.

The second role is the hardest. To organize the work you need to be able to split the work to give each developer a well defined part to work on. This is important for a "junior" or somebody new on the project to prevent them from drowning. But this is even more important for somebody I call the "over experienced developer". They have been everywhere and done everything. But on their way they forgot the main mantra of software development "keep learning" and still write software in the old DOS style. Their lines of code own the machine. In making their lines work they will change and adapt code all over the project. This may sound somewhat exaggerated but I have seen people like this singlehanded completely ruining a project. Several times. The role of the PM here is to restrict these people, give them a well isolated piece of work.

My main point is that to clearly separate the work the PM needs knowledge on how to do that in a technical way. In other words he has to be an architect.

So what to do with a PM who can't get along with his team-mates and doesn't understand architecture ? This leaves the third role. All that needs is a couple of Office macro's and a cell phone. Everybody can do that. So a good PM should have a social personality (having an Xbox might be enough) and be an architect (and thus be a coder). Which is a rare combination. Real good PM's are rare.


Published Oct 12 2007, 10:02 AM by pvanooijen
Filed under:

Comments

Derick Bailey said:

I disagree with your 2nd role for the PM entirely, and partially with your 3rd role (the description of, anyway). See my response over at my blog for more info:

www.avocadosoftware.com/.../764.aspx

# October 13, 2007 9:50 PM

pvanooijen said:

Derrick

Good article which makes clear that the company you work for has their things better organized. My lists of tasks for the PM are those whis I observe over and over agaian over here. The combination of tasks is pretty hard, resulting in few good PM's. You are lucky enough to have two distinct people, a real architect besides an organizational guy, to fullfill these tasks. But still the PM has to understand a lot about architecture to communicate well.

But I disagree on the third role you have in store for the PM, that of being _the_ contact with the customer (See Derick´s post for detials). Imho it is quite important for the other people in the team being in direct contact with the customer themselves. To prevent things getting lost in translation. Where a good guidance of the PM helps a lot.

# October 14, 2007 2:17 PM

Derick Bailey said:

"a program manager needs an architect"  - 100% agreement on this.

Looking back at how I originally responded, I think I may not have been considering the different situations that some companies are in. I think I should have stated that the way my company is currently organized, is my ideal setting - where we have a distinction between PM and Architect. In situations where this isn't possible, and there is only one PM/Architect as the same person, then I would agree with your original statement that a PM should be an Architect should be a Coder.

I can see the benefit of certain members of the development staff being in contact with the customer - and this does happen in my company. I don't think the entire dev staff should be, though. Providing the smallest responsible set of contacts for a customer will help to ensure that communication is consistent between the development company and the customer. If the PM is translating things inappropriately, then they need to be trained better or have the Architect / assigned dev point of contact do the initial translation for the customer, or at least review what the PM is sending before it goes out.

# October 14, 2007 6:36 PM

pvanooijen said:

So we do agree :)

When it comes to contact with the customer I don't beleive in consistent communication, only in communication which works well. The kinds of interaction you need with your customers is so diverse it is hard to formalize that. Again the same, your company seems to have your things sorted out pretty well. The chance to review what is going out is great. I've seen far to ofeten a PM (or sales) promising customers the wildest things (often not hinderd by any knowledge on the matter) leaving the developper wandering how in earth he's ever going to implement that.

In the end it all boils down to good people (whatever their formal role) who know how to communicate. Not enough of them around. You're a happy  man to work in a place who has them.

# October 15, 2007 3:05 PM

Derick Bailey said:

it wasn't always this happy place, though... the history of this company has been plagued by the exact scenarios you talk about. Fortunately, as we have grown (from me being the 9th developer hired, to how having 40+ developers a year and a half later, and looking to double again) we've been able to bring aboard very strong leaders with a lot of experience to help correct the course and set us in the right direction. i just hope it continues to improve like this, as time goes by.

FYI for anyone that is wondering where such a dream job exists: http://www.mclaneat.com :)

# October 16, 2007 4:44 PM

Auto Modellista » A program manager should be architect said:

Pingback from  Auto Modellista » A program manager should be architect

# November 14, 2007 2:14 PM

Paul said:

Sorry, if one examines PMBOK as well as leading edge PM universities, you will find that a PM is not a SME and that a failure in a project is when the PM believes they are the architect . . . . sorry to burst the bubble but no person is an island onto themself, it requires team work and bringing together a series of professionals

# December 29, 2007 9:18 AM

Leave a Comment

(required)  
(optional)
(required)  

Enter the numbers above:
Add
Check out Devlicio.us!