Recently, I’ve been trying to convince my colleagues to make more use of wikis and forums, rather than writing word documents and having face to face convesions about them.
This, perhaps not surprisingly, has met with a range of reactions from amusement to confusion to derision!
Why the hell, people want to know, are you engaged in a heated debate (read flame war) on the forums, with the bloke who sits next to you?
Lest you get the wrong idea, let me say quite categorically that I’m all for face to face interaction - in fact I reckon we could do with a bit more of it on my current project.
The problem with face to face, though (at least until technology catches up with us) is that there is no permanent record of what was said. Making a decision is all very well in the here and now, but what happens in six months time when we are sitting round scratching our heads and asking ‘how the hell did we get here?’. What happens when I get run over by a bus and some other poor sod has to pick up where I left off?
Yes I can look at the design document (we do have such things!), but most of the time it represents the start of the discussion, not the end. The design usually sparks a conversation, or a gradual process of discovery, and that’s what I want to capture.
There’s an interesting tension in programming teams, between having too much management and not enough.
Anarchie doesn’t really work when you are trying to build a complex system, and it takes an exceptionally talented and well balanced group of programmers to spontaneously form themselves into a productive, non hierarchical group. Not for nothing has managing programmers been likened to herding cats…
So ok, loath though we are to admit it, we do need to be managed. But hierarchy, in itself, isn’t management. Standards, procedures, methodologies, are not management. Dictat from on high isn’t management.
Sure, it helps to be organised. Of course, having a common approach is important. Certainly, splitting a big problem into smaller ones, a large team into smaller units, is a sensible approach in all walks of life.
The glue, however, the key ingredient, the thing that holds it all together, is communication. For me, promoting and enabling good communication is the true role of the manager. Helping to refine the different ideas, resolve conflicting ideas, and forge a common vision is important. Dissemenating that vision to the team, keeping it alive and evolving, is vital.
Here’s a nice article from a guy who worked at Metrowerks, and then at Apple. He gives some interesting perspective, a lot of which confirms the worst fears (at the time) of anyone who was watching Metrowerks from the outside…