The Ideal Development Team
Notes and summary of ideas taken from the book “The mythical man-month” by Frederick P. Brooks, Jr., 1982.
This book presents a model of an ideal software development team. The proposed model requires an extremely talented programmer who is “the boss”, and a set of support staff who are each expert in their own domain. The central idea is to establish and support a heirarchy that capitalises on the strengths of individuals. The book specifically targets software development but its ideas could be applied to any technical system development where domain experts exist.
Assumptions
- Good programmers may outperform average or poor programmers by a ratio of 10:1.
- Large teams of programmers (ie more than 10) are inherently inefficient.
- Small teams of good programmers are too slow for really big systems.
- Good programmers should program, not manage.
The 10 team members of an ideal team:
The surgeon defines the problem, designs the program, codes, tests and documents. This person must be talented, have 10+ years experience and considerable systems and applications knowledge.
The copilot is the alter ego of the surgeon, but is less experienced. This person is not responsible for any code, but serves as a sounding board, evaluator, insurance against disaster and an interface to other teams and projects.
The administrator is the interface to the bureaucracy of the rest of the organisation, and serves to remove all administrative tasks from the surgeon, who remains in charge at all times. The administrator may serve more than one project or team.
The editor is responsible for producing clear documentation. This person may take the raw documentation produced by the surgeon and revise it for clarity.
5 & 6. Two secretaries, one for the administrator and one for the editor.
7.. The program clerk is trained in secretarial methods and is responsible for the systematic maintenance of the developing system. This person ensures that all project output is filed properly and made available to the entire team, including both machine-readable and human-readable files.
8.. The toolsmith is an expert who is responsible for providing and maintaining the development tools that the surgeon uses..
9.. The tester is in an adversarial position relative to the surgeon, and designs banks of test data from the system specifications. This person is responsible for devising day to day test data, and also for the creation of a test harness required for component tests.
10.. The language lawyer is an encyclopaedic reference for the surgeon and may also be responsible for difficult, obscure or tricky aspects of the system. This person may serve more than one project or team.
Key differences between the surgical approach and the conventional divide-and-conquer approach:
- A surgically created system is the product of one mind, or at most two, helping to ensuring conceptual integrity.
- The team is naturally efficient through functional specialisation and a simplified communication pattern.
- Internal differences of interest and opinion are eliminated in the surgical team where the surgeon is the unilateral decision maker.
A team like this is mostly suited to small to medium projects. To scale up to very large projects, the team must be duplicated as many times as necessary, and the project must have one overall architect who will design the entire system.
This approach is opposed to the ideas of multi-skilling and democratic decision making - the surgeon is king of the castle and depends on the support of functional experts in order to fulfil the role of a controlling brain.
The experiences recounted in this book are largely derived from the System/360 project, which was to build a mainframe operating system. Business application development is different from system application development because the end-user has significantly more say in the analysis and design phases.