2. About Book
Author Frederick Brooks
Subject Software project management
Publisher Addison-Wesley
Publication
date
January 1, 1975-1995
ISBN 0-201-00650-2 (1975 ed.)
3. About Author
Name Frederick Phillips Brooks, Jr
Date Of Birth 1931
Education Ph.D. in CS from Harvard, 1956
Working experience
1956-1965 worked in IBM
1964
founded CS Department at the
University of North Carolina, chaired
it for 20 years.
4. What is Programming
Software like a tar pit: The more you fight it, the
deeper you sink.
There is Big Difference between Program and a Product
What is Product:
• can be run, tested, repaired by anyone
• usable in many environments on many sets of data.
• must be tested
• Documentation
Why is programming fun?
Brooks offers five reasons:
Making things…
that others find useful.
Making complex objects out of parts.
Continuous learning because the task is always different.
Using tools and “materials” that do not degrade.
5. What is Programming
What causes problems?
Computers demand perfection.
A person does not control the
“circumstances” of their work (goals,
resources, information).
Working out the bugs takes an order of
magnitude longer than one expects.
The resulting software seems to be
obsolete before it is released.
6. Project Failures
failure to meet schedule is the reason for most software project
failures.
Reasons:
Assumption that all will go well led the schedule
plan.
We confuse effort with progress.
pressure to reduce time estimates.
Poor monitoring of project progress
Natural response to schedule slippage is adding
manpower, which makes matters worse.
7. The bearing of a child takes 9
months, no matter how many women
are assigned
Software Products are sequential in nature
They generally consist of several steps that must be completed
one after another
These steps cannot be worked on at the same time
8. Adding manpower to a
late software project
makes it later.
According to Author
• Training Required for new people
• Intercommunication and basic understanding of problem and
the proposed solution.
10. The Surgical
Team
productivity varies hugely between
good programmers and poor ones.
More people working on a project = more
miscommunication between those people
Solution
Mill’s proposal: divide large job into segments,
each tackled by a surgical team:
12. How to make sure everyone hears
architectural decisions?Solution
• Written specifications
• Formal definitions
• Direct incorporation
• Conferences
• Multiple implementations
• Telephone log
• Product test
Communication Skills
13. Why Did the Tower of
Babel Fail?
A clear mission
Enough resources (people and materials)
Enough time
Proper technology
Bad communication in software projects are the
root of all evil.
• How shall teams communicate with each
other? In as many ways as possible:
• Informally,
Meetings,
project workbook.
14. How To Plan
One should plan his project in such a way that it is easy to
modify the system at any stage.
15. Update your Self
A good craftsman is known by his tools.
The tools of a programmer are:
Target machines
The final testing environment
Vehicle machines
The programmer’s work environment
Data services
Compiler, assembler, libraries, debugging tools
HLL & interactive programming
Language and programming tool of choice (e.g.: Java
and Visual Studio)
16. Schedule's
Schedules are important to keep
• Clearly define what needs to be done
Milestones should be well defined and must be reached on time.
• Pay attention to schedule slipping
Stick to schedules.
17. Documentation
Reasons for having formal documents
• Recording decisions
• Communicating those decisions
• Data base / checklist (programmer directives)
18. Documentation
Documentation is important to the user, as well
What kinds of documentation do they need?
• How to use the product
• How the product works
• How to adapt the product to their needs
19. Quotations
Good cooking takes time. If you are made to
wait, it is to serve you better, and to please you.
Adding manpower to a late software project
makes it later.
How does a project get to be a year late?... One
day at a time.
Good judgment comes from experience, and
experience comes from bad judgment.
20. Quotations
All programmers are optimists
The bearing of a child takes nine months, no
matter how many women are assigned.
Notes de l'éditeur
Documentation serves a reference and also makes it easier for someone joining the group at a later stage to understand the project. This helps maintain clarity of design too.