Tuesday, May 3, 2011

The Mythical Man-Month Ch 18 - 19


Reference Information:
Title: The Mythical Man-Month
Author: Frederick P. Brooks
Publisher: Addison-Wesley

Summary:
Chapter 18 - Propositions of the mythical man-month:

This chapter provides a brief summary of the book, chapter by chapter and re-iterates the important points from all the chapters. Also, the author provides a set of bullet points that the author thinks are important for the reader to know.

Chapter 19: The mythical man-month after 20 years:
In this chapter, the author talks about the differences between this book and the 1975 edition of the mythical man-month and how things have changes over two decades. The author states that many minor developments have come along however, there have been no major improvements the the way software is built. Programs work, but they don't provide the user a clear conceptual mental model how of the program works and how the user is supposed to navigate through the software. The author criticizes the waterfall development methodology and praises the XP methodology. He says that GUI has made it easy for the user to create mental models, however, he states that windows, icons, menus and pointing interface will soon be obsolete.

Discussion:
Chapter 18 provided an excellent summary of all the important topics that were covered in this book. I think it takes great experience and courage to point out what's wrong with the current software development practices. Also, the author seems very confident while predicting the future trends. This book exposed me to many aspects of programming which were unknown to me.

The Mythical Man-Month Ch 16 - 17


Reference Information:
Title: The Mythical Man-Month
Author: Frederick P. Brooks
Publisher: Addison-Wesley

Summary:
Chapter 16 - No Silver Bullet
No Silver Bullet was a paper written in 1986 about state of programming. He speaks about two major difficulties with software -
  • Essential: difficulties that are inherent in the nature of software.
  • Accidental: difficulties that attend to production but are not inherent.
The author says that there won't be any major technological or managerial breakthrough that will significantly improve the productivity.

Chapter 17 - "No Silver Bullet" Refired:
The chapter talks about:
  • Complexity - there are huge number of states in the software and no two states are alike. As the size of the program increases, the size if the individual parts increases exponentially.
  • Conformity - arbitrary set of rules and changes that a software has to undergo.
  • Changeability - constant demand for change during the production of the software
  • Invisibility - software is conceptual, it can not be visualized like civil and mechanical structures.
In general, the author says that software development is a difficult and solutions just don't pop in the head. Developing code is a time consuming process which demands hard work.

Discussion:
I enjoyed reading these chapters, however, I somewhat disagree with the author when he says that we haven't improved significantly in the past few years. I think we have developed efficient testing software, programming methodologies and other tools that have significantly improved productivity and quality of the code. Better testing and debugging tools have helped us to deliver almost bug-free codes.

The Mythical Man-Month Ch 13 - 15



Reference Information:
Title: The Mythical Man-Month
Author: Frederick P. Brooks
Publisher: Addison-Wesley

Summary:

Chapter 13 - The Whole and the Parts:

The whole refers to the system, or the entire project while the parts refer to the individual tasks or features. This chapter talks about the importance of properly integrating the individual tasks into a robust system and how difficult this job can be. He suggests using a top down approach for effective integration and to avoid bugs during the integration process.

Chapter 14 - Hatching a Catastrophe:

In this chapter the author talks about the importance of setting strong milestones. Once these milestones are set, the team must make sure that they are met within the allocated time frame. Author says that once a schedule has been fixed, it's very important to follow it closely. Also, the pert charts must be kept updated at all times. To get the work done from the employees the managers should try to avoid team conflicts.

Chapter 15 - The Other Face:

This chapter talks about the customer view of the program. Depending on various situations, code documentation needs to be prepared for different types of users. Author also talks about flowcharts and states that they are usually produced after the program is complete. The flow charts to be easily comprehend-able should be up to one page long. Furthermore, self-documenting is important i.e. using intuitive variable names and commenting the code.

Discussion:
I liked all the three chapters assigned for this reading. Chapters were very easy to understand and were quite articulate. Now the author seems to be moving on from "getting the code done within the deadline" to the "making it classy" approach. The ideas he suggests in these chapters helps in designing professional quality software products.

The Mythical Man-Month Ch 10 - 12



Reference Information:

Title: The Mythical Man-Month
Author: Frederick P. Brooks
Publisher: Addison-Wesley

Summary:

Chapter 10 - The Documentary Hypothesis:

This chapter lays focus on the importance of maintaining good documentation during the project cycle. Maintaining proper formal documentation is also a part of effective communication. It's important to write down the decisions that are made during the process since writing them down help people to retain the information and it also makes it clearer for everybody. This ensures that everybody is on the same page and there is no miscommunication. Also, this documentation provides for a checklist to the manager which helps him to track the progress of the project.

Chapter 11 – Plant to Throw One Away:

By "Plan to Throw One Away", the author means to talk about various changes that need to be incorporated into the project during the development cycle. Some changes are incorporated while some are thrown away. The author talks about how we should estimate and plan for changes during the course of the project. Since, not all the features work exactly as we had expected, the system has to undergo changes. Sometimes, the management structure also changes and the team should be ready for it. Changes might continue to appear even after the product is complete and delivered to the customer.


Chapter 12 – Sharp Tools:
This chapter focuses on the various different tools used during the product development cycle. Some of these tools are:
  • Computers
  • Operating System
  • Programming Language
  • Utility and debugging tools
  • Test case generators
  • Text Processing systems
The chapter briefly goes over all of these tools, explains their functionality and importance.

Discussion:
I found these three chapter to be very interesting. It looks like this book had a slow start and it's now picking up pace. The chapters are fun to read and not too verbose. The topics covered by these three chapters are very important. I think this book covers some topics that other programming or project management books do not cover. I think the author made really good points by stressing on the importance of documentation and various tools that increase productivity.


The Mythical Man-Month Ch 7 - 9




Reference Information:
Title: The Mythical Man-Month
Author: Frederick P. Brooks
Publisher: Addison-Wesley

Summary:

Chapter 7 - Why did the Tower of Babel fail?

The author addresses the question - why did the Tower of Babel fail in order to emphasize the importance of communication in any project. Teams should communicate as often as possible using various ways - team meetings, informal meetings, using workbook and logs. Every person on the project should have access to the information presented in the workbook. Workbook is nothing but a collection of all the documents prepared by all the teams about their work.

Chapter 8 - Calling the Shot:
In this chapter, the author talks about the difference between how long the programmer thinks the task will take and the amount of time the task really takes. It's important to understand this difference to make accurate estimates to deliver on time. In almost all cases, tasks take a longer time to complete than it's estimated. The author also talks about various types of data:
  • Portman's data -each job takes twice as long as expected.
  • Aron's data - regarding programmer productivity on large systems
  • Harr's data - productivity falls into two categories: control programs at about 600 words/man-year and language translators at about 2200 words/man-year.
  • OS/360 data - confirmed Harr's data.
  • Corbato's data - data is comparable in terms of the kind of effort included.

Chapter 9 - Ten pounds in a five pound sack:
In this chapter, the author mentions tat the size control (controlling the size of the programs) is very vital for project's success. It's important to think about the overall code rather than thinking about the snippet that you are currently working on. Space wise expensive programs are not effective. More space the program takes, more memory it will consume.

Discussion:
These chapters mentioned some brilliant ideas that were totally unknown to me. For example, various types of data as mentioned in chapter 8. Also, as a programmer I was aware that your programs should be space wise efficient, however, this point was not bought up by any programming methodology book. Also, the author repeats his emphasis on communication in chapter 7, and I completely agree with the author when he says that effective communication is the key to the project's success.

The Inmates are Running the Asylum Ch 3-5

The Mythical Man-Month Ch 4 - 6



Reference Information:
Title: The Mythical Man-Month
Author: Frederick P. Brooks
Publisher: Addison-Wesley

Summary:

Chapter 4 - Aristocracy , Democracy and System Design:

In this chapter, the author emphasizes on the idea of conceptual integrity. The author states that a uniform and consistent set of design ideas should be followed instead of having multiple uncoordinated ideas. Author mentions that democracy doesn't really work when it comes to the design phase since different people have various different ideas and all of them can't be incorporated. He also mentions that some stages can be worked on in parallel.

Chapter 5 - The Second System Effect:

In this chapter, the author says that designers tend to add all the new ideas that pop in their minds while working on the first phase into the second phase. This introduces many new changes in the design and many of them might not be consistent with the design that was initially thought of, which can eventually lead to a bad design. It's thus important to incorporate only the smart and creative ideas in the second phase and drop the unnecessary ideas.

Chapter 6 - Passing the Word:
In this chapter, the author stresses on the importance of communication and how everyone needs to be kept informed about the progress of the project. To do this, there are written specifications, formal definitions, direct incorporation, and conferences that require all high-level personnel to meet and discuss problems and solutions. A telephone log is suggested for logging questions and answers, and product testing is recommended for checking the programs against specifications. Face-to-face meetings with the team are very important. Finally, the author again emphasizes in thorough testing of the product.

Discussion:
I think reading this book is a little repetitive after reading the extreme programming book. Most concepts overlap. However, This author has slightly differing views from the authors of the book on extreme programming on certain issues. Overall, the ideas presented make complete sense, but achieving everything is definitely not possible, after all, to err is human.