The psychology of computer programming

is an excellent book by Jerry Weinberg. As usual I'm going to quote from a few pages:
Programming is, among other things, a kind of writing. One way to learn writing is to write, but in all other forms of writing, one also reads. We read examples - both good and bad - to facilitate learning. But how many programmers learn to write programs by reading programs?
Ultimately, what the management want is kept promises.
The amateur, then, is learning about his problem...The professional, conversely, is learning about his profession.
To learn we must be willing to make mistakes.
If a programmer is going to make something of his experience, he must learn how to learn.
Schedule is similarly limiting - we need only cite the apocryphal experiment which tries to make a baby in one month by putting nine women to work on the job as a team.
The Swiss elect a general to head their armies when war threatens. When there is no war, there is no general - but there are other leaders chosen according to what needs there are for leadership.
A programmer would not really be a programmer who did not at some time consider his program as an aesthetic object.
Programming is a unique form of communication in which human beings take an active role and machines often a passive one.
It's not so much the solutions we need, anyway; but the experiences in trying to get them.

Rabbit debugging

My bedroom looks out over the pictured field. Rabbits live along the far hedge so Natalie and I decided to borrow a pair of binoculars to get some close up views. The first time I tried them I just could not get a clear image. I fiddled for a while with no joy. Then I decided the binoculars were just fine and the problem was elsewhere. Thinking about it, I suddenly realized where - the house was built in 1897 and the bedroom still has the original sash window. The glass in the window is quite "curvy"! When I lifted the sash and looked at the rabbits directly everything came into focus nicely.