This post is part of a series of posts with my personal notes about the chapters in the book “The mythical man-month” by Frederick P. Brooks. I write these posts as I read through the book, and take notes on the concepts I find more relevant. I do, however, advise reading the book to get the full benefit out of it.
This seventh chapter is about how a software development department should communicate and how it should be organised.
Communication is key!
But how should teams communicate?
By every way possible:
- Informally, by just walking up to each other or using an online chat system;
- Formally, in regular project meetings where each team gives a briefing of their work;
- Workbook. Create a centralized place for all documents regarding the project. This central document store must be;
- Well organized;
- Easily available to all project stakeholders;
- Be under some kind of changes tracking system.
Furthermore, good organization is key to reduce the amount of communication and coordination needed. Organization means:
- Division of labour;
- Specialization of function.
Communication doesn’t follow a hierarchical tree-like structure, it is, in fact, a network.
A successful organization structure
A successful organization structure must have the following essential elements:
- A mission;
- A producer;
- A technical director (aka Architect);
- A schedule;
- A division of labour;
- Interface definitions among the parts.
All these elements are pretty clear except maybe for the roles of the Producer and the Technical Director:
The Producer:
- Assembles the team;
- Divides the work;
- Establishes the schedule;
- Acquires the necessary resources (human and otherwise);
- Establishes patterns for communication and reporting;
- Adjusts organization to ensure the schedule is met, responding to changing circumstances.
The Technical Director:
- Conceives the design to be built;
- Identifies the subparts;
- Specifies how it will look from the outside;
- sketches the internal structure;
- provides conceptual consistency and integrity;
- Creates technical solutions;
- Adjusts the design according to changing circumstances.
These two roles are complementary and need different talents In a small company/development department these two roles can be played by one person, but in a big development department, they need to be separated so that each can maintain the focus on their role. Furthermore, success doesn’t depend on who, of those two, is higher in the hierarchy. It does depend, however, on a tight complicity and fluent communication between the two.
It’s funny to see how in the company where I currently work (Werkspot) we have exactly this: A CTO playing the role of Producer and an Architect playing the role of Technical Director.