lquirk cs190 - mythical man month essay Brooks's /The Mythical Man Month/ suggests several possible reasons why putting more people on a late software project makes it later. Communications difficulties, architectural disagreement, great variance among programmer productivity, and so on. Most of these are probably correct. However, he also bases his analysis on a "waterfall" development model, where architects design a system, and then implementers build it. This is not how software should be designed, and the use of more agile development models would allow for significantly more predictability and flexibility on the development cycle. An agile development model is based around prototyping: first you design a minimal version of the project, then you build it, then you analyze it, determining what you did wrong and how to fix it. Then you do another iteration, applying what you learned to another release. This allows for all the people involved to observe the development process. Since development cycles are short, if there's a major problem or unforeseen circumstance, it can lengthen one cycle, but it will be discovered earlier in the process, as well as making it easier to predict the length of the next cycle, and is therefore less likely to delay the project unnecessarily. With the waterfall model, which is the only model that Brooks addresses, none of this flexibility is possible. If there is a significant delay discovered by the implementers that wasn't foreseen by the architects, it may be too late to react in a timely fashion, causing the project to be delayed much worse than it otherwise might be. However, many of Brooks's thoughts apply to the agile model as well as the waterfall model. The problems he highlights are all still there -- their effects are just mitigated by shorter cycles with much better feedback. The advantage of the waterfall model is that different teams of people can be hired at different stages of the process, but this advantage is outweighed by the drawbacks of the inflexibility of such a development model.