Reading Notes of "The Mythical Man-Month" (abbreviated version)

 

In the history of computer, the two most recommended books "Code Daquan" "Mythical Man-Month"

Chapter One Tar Pit

From the program to the programming system product is 9 times the relationship

Programming is bitter and fun

Le: Create things, keep learning

Bitter: People usually want to converge faster when the project ends, but the result is that the slower the convergence, the more it ends.

Chapter 2 The Myth of Man-Month (Human-month: one person works for one month, three people work for four months is 12 person-months)

Man-month is a dangerous and deceptive myth. The relationship between personnel and time is not necessarily that the shorter the person, the less time it takes to complete the project. Unless it is a completely decomposable task, there is no need for communication between people. Sometimes adding people blindly is only counterproductive.

In scheduling, the system test phase is often prone to errors and uncertainties. The easiest time to estimate during the coding phase

Experience in software scheduling: 1/3 planning, 1/6 coding, 1/4 component testing and early system testing, 1/4 system testing. The test takes half of the time, which is often impossible in practice.

Brooks' rule: adding manpower to projects that are behind schedule will only make the project more backward. The schedule should be modified in time and the project tasks should be reduced

Lack of reasonable schedule is the main reason for project lag

All programmers are optimistic

Chapter 3 Surgery Team ( 10 small teams)

Traditional team: division of work, each person is responsible for a part

Surgery team: surgeons and deputies understand all designs and all codes

Traditional team: everyone is equal, it is not easy to find the best solution when there are differences

Surgery team: there is a relationship between superiors and subordinates, the differences can be judged by the surgeon

In addition, the remaining professional division of human functions

For large teams, you need to have a system architect, be able to clearly divide the boundary between architecture design and implementation, and focus on the architecture

Chapter 4 Aristocratic Autocracy, Democratic Politics and System Design

Architecture design: complete and detailed user interface description

The nobility is authoritarian, the intellectual elite completes the creative work, and other people make the gear (the description of the gear is actually wrong, the realization of the program is also creative work), which helps the conceptual integrity. But the people above don't need to ask the people below how to do it

When designing the architecture team, what do the implementation staff do? If the implementation staff is involved in the plan design phase, it will not speed up and the quality will be even worse. Therefore, large-scale projects can be staged, and the implementation staff can be transferred after the description is written.

The ratio of the complexity of functions to understanding is the ultimate standard of system design, not the rich functions.

Chapter 5 Draw the Snake

Early communication and continuous communication can enable architects to have a better sense of cost, as well as developers to gain confidence in the design, and will not confuse their respective responsibilities.

How the architect successfully influences the implementation: Keep in mind that the developer bears the creative and inventive implementation responsibility, so the architect can only suggest, not control

Always be prepared to suggest a way to achieve the specified instructions, and also be prepared to accept any other method that can achieve the goal

Keep the key to the above suggestions low-key and private

Ready to give up insisting on the changes made

The second system is the most dangerous system designed by people, because it is often added

Chapter VI Implementation

Even for large projects, the design results should be completed by one or two people

The specification states the degree of precision the author should pursue: while carefully defining what is specified, what is not specified is defined.

The best friend of the project manager is the opponent he faces every day-an independent product testing agency / group

Chapter 7 Why Babylon Tower Fails

Because of the lack of communication, communication is as important as organization and software technology

Have a project work manual, and update it in time

Chapter 8: Be confident

It is impossible to obtain an estimate of the entire task simply by estimating the encoding part and then applying the corresponding coefficients of other parts of the task.

Data for building independent small programs is not suitable for programming system products.

Workload is a power function of scale (not proportional to the scale, the larger the scale, the more work required increases as a power function)

For commonly used programming statements, productivity seems to be fixed. This fixed productivity includes the comments required in programming, and there may be errors.

Using appropriate high-level languages, the productivity of programming can be increased by 5 times.

Chapter Nine

Cultivating developers from the system as a whole and facing the users is the most important function of software programming managers.

Chapter Ten Outline

For computer hardware development projects, the key documents are: target, manual, schedule, budget, price

For software projects: goals, user manuals, internal documents, schedules, budgets, organizational charts, work space allocation

Chapter 11 Precautions

In the process of software development, there are often many problems with the first system. It may be too slow, too large, and difficult to use, or both. There is no other way to eliminate all problems except to start over. The discarding and redesign of the system can be completed in one step, or it can be implemented piece by piece. This is a necessary step for all large-scale system development.

Plan for abandonment, you must do it anyway.

Change is inborn, not an anomaly that is out of date and tiresome.

The actual needs and feelings of users will change with the construction, testing and use of the program.

The easy-to-master features and invisibility of software products have caused its builders to face eternal demand changes.

Abandoning the concept of archetypes is itself an acceptance of facts-changing the design as you learn.

For a widely used program, the total maintenance cost is usually 40% or more of the development cost.

A basic problem in program maintenance is that bug fixes will always introduce new bugs with a fixed (20% ~ 50%) chance. The whole process is two steps forward and one step back.

System software development is a process of reducing confusion (reducing entropy), so it is metastable.

Software maintenance is a process of increasing confusion (increasing entropy). Even the most skilled software maintenance work only slows the process of system degradation to unsteady state.

Chapter Twelve General Moxie

In some applications, the batch system will never be replaced by an interactive system.

Debugging is a very slow and difficult part of system programming, and the long debugging turnaround time is the bane of debugging.

Chapter 13 The Whole Part

Top-down design is better

Chapter 14 Wreck the Xiao Wall

Major disasters are relatively easy to deal with. It is often related to major pressures, thorough reorganization, and the emergence of new technologies. The entire project team can usually cope with it. But it is difficult to identify, difficult to prevent, and difficult to make up for the lagging behind schedule.

Everything on the schedule is called a "milestone" and they all have a date. The choice of milestones has only one principle, that is, the milestones must be specific, specific, and measurable events that can be clearly defined.

Chapter 15 The Other Side

Self-documented program: Integrate the document into the source program, which is a direct and powerful impetus for correct maintenance, and ensure that programming users can obtain documentation in a convenient and timely manner.

Three ways to minimize the burden of documentation:

The first is to append as much "document" information as possible with the language that must exist because of language requirements.

The second is to use spaces and a consistent format as much as possible to improve the readability of the program, showing subordination and nesting relationships.

Third, insert the necessary narrative text into the program in the form of paragraph notes.

The program flow chart is not very useful, even if it is required, it is not necessary to follow the standard, not too detailed

Published 59 original articles · Likes46 · Visits 30,000+

Guess you like

Origin blog.csdn.net/sinat_41852207/article/details/88254183