Harlan Mills Proposal
- Each segment of a large project be undertaken by a team
- Team organised like a surgical team with specific roles
- One “surgeon” doing the butchery; everyone else in support
- Few minds involved in design
- Highly segmented/independent tasks
- Minimal communication during operations; only ever 1-1
- Surgeon
- Chief programmer
- Defines all functional and non-functional specifications
- Designs, codes and tests program, writes doco
- Very experienced, very talented person
- Considerable applications and systems knowledge in relevant field
- Uses computer system to implement and test the code directly
- Copilot
– Backup for the surgeon
– Can do everything the surgeon does
– But has less experience
– Shares in design as a thinker, discussant and evaluator
– Surgeon tries out ideas on her, but doesn’t have to accept advice
– Copilot communicates with team; relays advice to surgeon
– Knows all code intimately; researches alternative designs
– Bus accident insurance
– May write code but not responsible for it - Administrator
– Surgeon is the boss…BUT must spend no time dealing with personnel, space, money, machines, bureaucracy
– This is the role of the administrator
– Liaises with stakeholders
– May be full-time if significant legal, contractual, reporting requirements
– One administrator may serve multiple teams - Editor
– Responsible for writing doco
– Generates external and internal descriptions
– Takes draft provided by surgeon and refines, clarifies, amplifies
– Criticises and reworks
– Manages versioning
– Inserts references and bibliographies
– Responsible for production and publication - Two Secretaries
– Surgeon and administrator both have a secretary
– Deal with correspondence and non-product files - Program Clerk
– Responsible for maintaining technical records of team in programming-product library
– Trained as secretary
– Logs all input/output for filing and indexing
– Archiving and source management
– Makes code available for the team to review
– Configuration management? - Toolsmith
– Available to build customised utilities on request of surgeon
– Can be called on to write procedures, libraries, macros etc
– Any special tools for this specific project (not COTS) - Tester
– Devises test cases and data from functional specification
– Tests releases in an adversarial fashion
– Responsible for building test harnesses
– Plans test sequences for unit and regression tests - Language Lawyer
– Experts in syntax and semantics of languages used in the project
– Knows neat and efficient ways of doing things
– Encyclopaedic knowledge of APIs and libraries
- One creative genius drives team production
- But supporting roles are no less important
- Surgeon focuses on designing and developing the system
- Freed up from supporting but essential activities
- Radically different from projects where each person does their own design development and testing
- Role specialisation is critical to gaining the increases in productivity over the “average” programmer
- Surgeon has unilateral control over decisions
- Conforms to social psychology studies on team productivity showing authoritarian models are most productive if less satisfying than democratic or laissez-faire models
- Model supported by Baker’s 1972 study
- How would you structure a team based on agile/XP methodology?