Originality is no excuse for ignorance.

Successful software always gets changed.

Nine people can't make a baby in a month.

Predictability and great design are not friends.

Dissertations are not finished; they are abandoned.

Scientists build to learn; Engineers learn to build.

Adding manpower to a late software project makes it later

Plan to throw one (implementation) away; you will, anyhow.

Adding manpower to a late software project makes it later.

How does a project get to be a year late? One day at a time.

The Waterfall Model is wrong and harmful; we must outgrow it.

Design work doesn't just satisfy requirements, it elicits them.

Present to inform, not to impress. If you inform, you will impress.

Software work is the most complex that humanity has ever undertaken.

Consensus processes starve innovative design by eating the resource.

How does a project get to be a year behind schedule? One day at a time.

System debugging, like astronomy, has always been done chiefly at night.

Conceptual integrity is the most important consideration in system design.

A scientist builds in order to learn; an engineer learns in order to build.

Good judgment comes from experience and experience comes from bad judgment.

System debugging has always been a graveyard-shift occupation, like astronomy.

Even the best planning is not so omniscient as to get it right the first time.

The bearing of a child takes nine months, no matter how many women are assigned.

I am more convinced than ever. Conceptual integrity is central to product quality.

An ancient adage warns, "Never go to sea with two chronometers; take one or three."

Process improvement is most valuable in raising the floor of a community's practice.

The hardest single part of building a software system is deciding precisely what to build.

More software projects have gone awry for lack of calendar time than for all other causes combined.

Improving your process won't move you from good to great design. It'll move you from bad to average.

Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program.

Systematically identity top designers as early as possible. The best are often not the most experienced.

Job Control Language is the worst programming language ever designed anywhere by anybody for any purpose.

But I will argue that knowing complete product requirements up front is a quite rare exception, not the norm.

A basic principle of data processing teaches the folly of trying to maintain independent files in synchonism.

I have never seen an experienced programmer who routinely made detailed flow charts before beginning to write programs.

The fundamental problem with program maintenance is that fixing a defect has a substantial chance of introducing another.

Software and hardware design is less different than software designers think, but more different than hardware designers think.

Men and months are interchangeable commodities only when a task can be partitioned among many workers with no communication among them.

Mediocre design provably wastes the world's resources, corrupts the environment, affects international competitiveness. Design is important.

...when fits of creativity run strong, more than one programmer or writer has been known to abandon the desktop for the more spacious floor.

Product procedure...must securely protect the crown jewels, but, equally important, it must eschew building high fences around the garbage cans.

To only a fraction of the human race does God give the privilege of earning one's bread doing what one would have gladly pursued free, for passion.

A design style is defined by a set of microdecisions. A clear style reflects a consistent set. A clear style may not be a good style; a muddled one never is.

The management question, therefore, is not whether to build a pilot system and throw it away. You will do that. Hence plan to throw one away; you will, anyhow.

Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won't usually need your flowcharts; they'll be obvious.

The brain alone is intricate beyond mapping, powerful beyond imitation, rich in diversity, self-protecting, and self-renewing. The secret is that it is grown, not built.

Einstein repeatedly argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer.

A computer program is a message from a man to a machine. The rigidly marshaled syntax and the scrupulous definitions all exist to make intention clear to the dumb engine.

We tend to blame the physical media for most of our implementation difficulties; for the media are not "ours" in the way the ideas are, and our pride colors our judgement.

The complexity of software is an essential property, not an accidental one. Hence, descriptions of a software entity that abstract away its complexity often abstracts away its essence.

Share This Page