I love reading the book Code Complete, by Steve McConnell. The following comes from it, in its chapter where he discussed Intelligence and Humilty.
Intelligence doesn’t seem like an aspect of personal character, and it isn’t. Coincidentally, great intelligence is only loosely connected to being a good programmer.
What? you don’t have to be superintelligent?
No, you don’t. Nobody is really smart enough to program computers….
The way you focus your intelligence is more important than how much intelligence you have.
The people who are best at programming are the people who realize how small their brains are. They are humble. The people who are the worst at programming are the people who refuse to accept the fact that their brains aren’t equal to the task. Their egos keep them from being great programmers. The more you learn to compensate for your small brain, the better a programmer you’ll be. The more humble you are, the faster you’ll improve.
The purpose of many good programming practices is to reduce the load on your gray cells. Here a re few examples:
– The point of ‘decomposing’ a system is to make it simpler to understand.
– Keeping routines short reduces the load on your brain.
– Writing programs in terms of the problem domain rather than in terms of low-level implementation details reduces your mental workload.
– Using conventions of all sorts frees your brain from the relatively mundane aspects of programming, which offer little payback.
You might think that the high road would be to develop better mental abilities so that you wouldn’t need these programming crutches. you might think that a programmer who uses mental crutches is taking the low road. Empirically, however, it’s been shown that humble programmers who compensate for their fallibilities write code that’s easier for themselves and others to understand and that has fewer errors. The real low road is the road of errors and delayed schedules.