More on this book
Community
Kindle Notes & Highlights
Read between
September 25, 2016 - May 15, 2017
The challenge and the mission are to find real solutions to real problems on actual schedules with available resources.
Rodrigo Rebouças liked this
This then is programming, both a tar pit in which many efforts have floundered and a creative activity with joys and woes all its own. For many, the joys far outweigh the woes,
Observe that for the programmer, as for the chef, the urgency of the patron may govern the scheduled completion of the task, but it cannot govern the actual completion. An omelette, promised in two minutes, may appear to be progressing nicely. But when it has not set in two minutes, the customer has two choices—wait or eat it raw. Software customers have had the same choices. The cook has another choice; he can turn up the heat. The result is often an omelette nothing can save—burned in one part, raw in another.
Adding manpower to a late software project makes it later.
The number of months of a project depends upon its sequential constraints. The maximum number of men depends upon the number of independent subtasks.
Even though they have not taken centuries to build, most programming systems reflect conceptual disunity far worse than that of cathedrals. Usually this arises not from a serial succession of master designers, but from the separation of design into many tasks done by many men.
I will contend that conceptual integrity is the most important consideration in system design. It is better to have a system omit certain anomalous features and improvements, but to reflect one set of design ideas, than to have one that contains many good but independent and uncoordinated ideas.
Neither function alone nor simplicity alone defines a good design.
Conceptual integrity in turn dictates that the design must proceed from one mind, or from a very small number of agreeing resonant minds.
the man with strong management talent and strong technical talent is rarely found. Thinkers are rare; doers are rarer; and thinker-doers are rarest.
The job done least well by project managers is to utilize the technical genius who is not strong on management talent.
Programming productivity may be increased as much as five times when a suitable high-level language is used.[12]
If the organizational structure is threatening in any way, nothing is going to be documented until it is completely defensible."
A reassignment from the technical ladder to a corresponding level on the managerial one should never be accompanied by a raise, and it should be announced always as a "reassignment," never as a "promotion." The reverse reassignment should always carry a raise; overcompensating for the cultural forces is necessary.