As prizes for the little occasional competitions on this BLog, we will be giving out copies of one or other of a couple of rather old books. They just happen to be two of the best books ever written about developing software. I’d be fascinated to hear of any other books in the same league.
A long time ago, in 1971, Gerald M. Weinberg wrote a book, ‘The Psychology of Computer Programming’ that has never aged, or been eclipsed, Originally published by Van Nostrand Reinhold Co, it is still in print today.This book is responsible for verious aphorisms that have become part of the tribal wisdom of the developer of today.
“If a programmer is found to be indispensable, the best thing to do is to get rid of him as quickly as possible”
“Some years ago, when COBOL was the great white programming hope, one heard much talk of the possibility of executives being able to read programs . . . nobody can seriously have believed (this).. . even programmers do not read programs” (p.S)
“There are… programs that should be thrown away before ever being used”. (p. 20)
“Asking for efficiency and adaptibility in the same program is like asking for a beautiful and modest wife . .. we’ll probably have to settle for one or the other.” (p.22)
“Putting a bunch of people to work on the same problem doesn’t make them a team.” (p.35)
“To detect errors, the programmer must have a conniving mind, one that delights in uncovering flaws where beauty and perfection were once thought to lie….For locating errors, however, we want a person who has the persistence of a mother-in-law and the collecting instincts of a pack rat. (p. 136)
“‘Programming’ – like ‘loving’ – is a single word that encompasses an infinitude of activities.” (p. 121)
“The nature of programming being what it is, there is no relationship between the ‘size’ of the error and the problems it causes.” (p.247)
When a programmer has a difficult time finding a bug, it is because he is looking in the wrong place.(p.251)
Documentation is the castor oil of programming . . . the managers know it must be good because programmers hate it so much.(p.262)
“Any fool without the ability to share a laugh on himself will be unable to tolerate programming for long.(p. 152)
The programmer’s national anthem is ‘aaaaaaaahhhhhhhh’…When we finally see the light, we see how once again we have fallen into some foolish assumption, some oafish practice, or some witless blunder. (p. 152)
The other, alternative, prize will be a copy of Brooks ‘The Mythical Man-Month, Essays in Software Engineering’, published by Addison-Wesley Professional. My favourite quote from this book is…
“The bearing of a child takes nine months, no matter how many women are assigned” (p. 17).
This is closely followed by …
“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 … when (the omelette) has not set in two minutes, the customer has two choices – wait or eat it raw”. (p.21),
“Brooks Law: Adding manpower to a late software project makes it later” (p.25)
Here are a few others to savour..
“The programmed computer has all the fascination of the pinball machine or the jukebox mechanism, carried to the ultimate.” (p.l)
“Neither function alone nor simplicity alone defines a good design.” (p.43)
“The programmer, like the poet, works only slightly removed from pure thought-stuff.” (p 1)
“One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be … (however) if one character, one pause, of the incantation is not strictly in proper form, the magic doesn’t work.” (p.8)
“…designing grand concepts is fun; finding nitty little bugs is just work.” (p.8)
“As soon as one freezes a design, it becomes obsolete in terms of its concepts.” (p.9)
“A large programming effort . . . consists of many tasks, some chained end-to-end. The probability that each will go well becomes vanishingly small.” (p. 16)
“Cost does indeed vary as the product of the number of men and the number of months. Progress does not. Hence the man-month. As a unit for measuring the size of a job is a dangerous and deceptive myth.” (p. 16)
“… the sheer number of minds to be coordinated affects the cost of the effort.” (p.30)
“conceptual integrity is the most important consideration in system design.” (p.42)