I don’t mean to claim any rights to use this analogy because this is how Dr. Fredrick Brooks described Software projects in his very famous book titled “The Mythical Man-Month: Essays on Software Engineering”. This book is undeniably the most widely read book on the subject of software project management and, although some of the examples are dated, many of the lessons remain highly relevant today – and unfortunately still often unheeded. Every time I have read this book I have found it interesting and I have also related a few of my recent mistakes to the examples mentioned in this book.
Dr. Brooks wrote this book based on his experience as a project manager for IBM’s OS/360 project. After he left IBM he became a professor at a university in the states and that is when he authored this book. The tendency for managers to repeat such errors in project development led Brooks to comment that his book is called "The Bible of Software Engineering" because "everybody reads it but nobody does anything about it!"
I recommend this book as a MUST READ for all of you who manage and work on software projects and I am sure you will find those “a-ha” moments as you read the book. Here are some of the lessons, and my interpretation of those.
- Question: How does a large software project get to be one year late? Answer: One day at a time!
One cannot highlight the importance of tracking progress more crisply than these words. Managers often track the effort rather than the milestones. The definition of the milestone is not very crisp and that leads to what I call a Green-Green-Red phenomenon. So as you track the so called progress (actually the effort burn rate) all the tasks on a plan seem to be in good health with a Green indicator. This status continues to be green till about 70% of the total effort is burnt and then suddenly the realization dawns that there is lot more work left to be done. The status suddenly changes to Red. So the question I often ask in the status review meeting is how much time (effort and schedule) is required to complete the remaining work. That is a very good measure of completion and progress than the effort spent. Secondly, I think a lot of managers are averse to reporting the lack of progress on the project. The eternal hope is that “we can catch up next week”. - People and man months are not interchangeable.
There always is an optimal team size to complete any project. Any team smaller or larger than this is counterproductive as far as the cost and schedule is concerned. The derivation of the schedule from the total effort is not a mathematical formula because the level of complexity of communication cannot be factored into the formula. As the saying goes, you cannot produce a baby in one month with nine women. The schedule is a complex function of the task on hand (which defines the effort and the skill set required), the number of people available and the number of parallel tasks that can be run. - Adding manpower to a late software project makes it later.
This is yet another classic and one encounters this quite regularly in the software industry. During the initial stages of the project, resources are either not available or they do not have the right skills and towards the end as the pressure mounts to meet the deadline people try to add resources. Addition of these people is really not going to have any positive impact on the schedule because they have a learning curve to cope with, they need to be brought up to speed on the project and processes and then start delivering work. So instead of helping the team they often end up being a drag on the team that is running full steam ahead. - Second System Effect
Almost all of us who have designed systems must have made this mistake. After burning our fingers with the mistakes in our first project, the reaction is to over engineer the second system to an extent where the design almost becomes impossible to develop/maintain. Every conceivable design idea is embraced in the hope that there would be no errors.
It is not as if we have completely turned a blind eye to the recommendations in this book. There are quite a few other topics that are covered in this book and have been rectified to an extent in the present day. Finally I cannot resist the temptation of quoting this verbatim from the book. This paragraph sums up almost all the themes mentioned above.
“That for a programmer, as for the chef, the urgency of the patron may govern the scheduled completion of the task, but it cannot govern the actual completion. An omelette, promised in two minutes, may appear to be progressing nicely, but at two minutes may not be set. The customer has two choices – wait or eat it raw. Software customers have had the same choices. The cook has another choice; he can turn up the heat. The result is often an omelette nothing can save – burned in part, raw in another. “
Well think of all the omelettes that you have served so far :).
Read more...