humility, assertiveness and sense of humour

mr_bean on 2006-01-06T02:55:37

Laziness, impatience and hubris, the 3 perl programmer virtues may have their source in these 3 critical personality traits from the Psychology of Computer Programming (1971) by Gerald Weinberg, apparently one of the first 'people' people in programming.

Assertiveness is the other side of the coin of humility, and both are necessary. Without humility, success leads to overconfidence (hubris), which leads to blind self-destruction. On the other hand, assertiveness is like a steam boiler without a safety valve. And on the gripping hand, a spirit of self-criticism is like a safety valve without a steam boiler.

This collusion of opposites is a reason for the humour of the 3 perl virtues.

The other necessary traits: ability to tolerate stressful situations, adaptability to rapid change, and neatness.

This book seems to have got under the radar here. I wonder why I have heard more about a contemporary at IBM, Brooks and his Mythical Man-Month, which appears to have come out 4 years later in 1975, when essentially the same observation is made by Weinberg.

It appears like Brooks he escaped from IBM into academia. It appears the suits sent him back to do a PhD in psychology. The experience seems to have only changed him superficially. I wouldn't call the book scientific, despite the inclusion of some experiments he did teaching programming.

He tells stories about life as a programmer in relation to some ideas of academic psychology. One funny one is about 'a military project that involved the creating of a world-wide network.' The government was getting completely fictional accounts of the progress being made. He also says that when programmers don't get feedback about their work, 'they start to vary the input in arbitrary ways to see the effect--to get some feedback, even at the risk of a poor evaluation.'

Some interesting hairshirt views about learning: 'When our program does not run correctly, we have the opportunity to learn more specific lessons. Quite often, under the pressure of production, the programmer is tempted to bypass a trouble spot with a fix that he knows will work, since it does not use some new technique which he was trying to master. .. [But] he will have missed a golden opportunity for learning. No time will be more propitious for learning than that time at which the need for learning is felt most strongly--the very moment when we detect an error.'

Some principles for language design: Uniformity or 'If a programmer asks, Can I write ...? The answer should be yes. Just like the child who is told, No, too often, the programmer working in a nonuniform language will tend to be discouraged from trying new things.' This is close to DWIM. I thought I saw something close to TIMTOWTDI too, but perhaps what I remember was my looking for it.