CS190 - Mythical Man Month essay By: tmohamed In the Mythical Man Month, Brooks places a lot of emphasis on the idea of the “conceptual integrity” of a piece of software; he claims that it is the most important consideration in system design. He asserts the importance of the ease of use of a system and explains the role of the uniformity of the finished product. A reduced feature set based on one set of design ideas is better, he says, than a product containing many good, but “independent and uncoordinated ideas.” In order to create this integrated and uniform feel to the product, Brooks talks about using external specifications that eventually act as constraints at the implementation stage. He assures that constraints at the architectural level still allow for ample creative flexibility during implementation. I agree with Brooks that it is effective to have a list of external specifications at the design level, but I do not completely agree with the rigidity of its constraints. My take home lesson that I presented together with my specifications was that it is important to have a component in the system that complements the base spec, but if removed will not hurt it. The timeline and scheduling of a project development cycle is usually an estimate based on previous experience, it is therefore possible that integration and testing can occur ahead or behind schedule. It is therefore advantageous to have a component of the program that can either be added or omitted from the final product and that won’t undermine the initial requirements. Having this type of optional component can be good because it can help reduce what Brooks calls the “Second-System effect.” This is a scenario where a program architect has complex, embellished features that he purposely does not include in his first set of specifications so as not to appear over-ambitious. These features that were sidetracked later appear in future releases of the product. This practice leads to a pile up of unfeasible and unnecessary features in newer versions of the product. Having some scalability or expandability built into the first release would allow the possible implementation of some if not all features that were initially deemed as optional.