Jason Kim jkim21 CS 190 – Essay on Mythical Man Month The fact that all programmers are optimists is often overlooked by people who are not themselves programmers. Realistic thinking escapes many programmers, and this can be the explanation that programs, especially large software, is never finished on time. And often times, even when they are finished, there are still bugs that need to be fixed and efficiency can be improved upon. A solution to this would be to educate first the programmers of their unrealistic optimism. Although it could be extremely discouraging to teach programmers that they are “too optimistic” and that they might need to scale down projects and increase expected finished dates, if taught in an encouraging fashion, this would make the programmer much more productive and could lead to more finished programs. It is extremely wise to divide up a team into the “surgical team” the way the author suggests in chapter three. The weaknesses though in explicitly defining positions for people is that one then tends to fall into formulaic programming. While procedures and positions can be helpful for organization and efficiency, the danger for going by generic standards increases. One has to realize that every software endeavor is unique and that in organizing roles, one has to tailor them to fit the project. With a given formula, it can be easy to fall into a set routine and not properly think through the divisions of work and organization for the project. I strongly agree with the author when he discusses conceptual integrity in chapter four. It is very easy for even a small team to divide up work and then lose coherency and have many good, separate parts in a program while having disunity in how the program works. It is crucial for a system to reflect one set of design ideas even if some features were left out. That is preferable to a program that has good, solid anomalous features but not based on one set of design ideas.