I think his description of computer programming is very accurate.
I suspect that many people are attracted to computer programming because at first, when you are learning it, it gives a constant series of little instant gratifications -- you can change something, reload or recompile, see the effects of your work.
This might explain many of the "computer people" stereotypes; impatient, unhappy with maintainence type tasks that show no immediate benefit, and generally "immature" from the point of view of others.
When you first start programming, you can write "hello, world" and get instant gratification in 5 minutes. The time required for that gratification increases as you go on. One of the reasons why people switch programming languages, is that they are trying to re-create the quick gratifications of learning the simple things all over again.
You could use the test driven development to regulate an interval between gratifications (the interval depends on granularity of your tests; more granularity corresponds to shorter time intervals).
Thus you can build a giant system and get instant gratifications every 5 minutes if you'd like to.
But any programmer smart enough to design such a system, would not get the gratification, because they would see through it, just as playing for hours in a computer game that you wrote is torture, but playing someone else's can be deeply absorbing.
In my experience the ability to develop large and complex software without much if any frustration, is one of the things which separates great hackers from mediocre ones.
I'm not sure I can name truly great hackers, but I absolutely know very good ones and sorta bad ones.
Here's what I mean by sorta bad. They are very smart people, they know the language, they can code and then some. They can work out very complex stuff, super complex algorithms.
But when working on a large project, over time they slowly start to wrap them selves up in such as a way as to quickly hit a wall of frustration. Their productivity drops 10 fold, and it's crawling on broken shards of glass from then on.
The other type of hacker, initially is indistinguishable from the first. Except that whey they work on very large systems, they seem to be able to almost smell where the code base is going.
They are able to keep a large architecture in mind, continually adjust it and adjust their code. Most importantly it seems they have a great intuition about which frustrations are worth pushing through and which you should go around of.
It's that kid of code foresight that great hackers have.
> they have a great intuition about which frustrations are worth pushing through
I agree that keeping a global view while working on the local is a great ability to have, and a lack of it will create nightmarish frustrations as projects become larger. But you're saying that great hackers still have frustrations, which is what I took issue with. Your "mediocre" hacker also seems to be extremely capable, when working in the local.
I suspect that many people are attracted to computer programming because at first, when you are learning it, it gives a constant series of little instant gratifications -- you can change something, reload or recompile, see the effects of your work.
This might explain many of the "computer people" stereotypes; impatient, unhappy with maintainence type tasks that show no immediate benefit, and generally "immature" from the point of view of others.
When you first start programming, you can write "hello, world" and get instant gratification in 5 minutes. The time required for that gratification increases as you go on. One of the reasons why people switch programming languages, is that they are trying to re-create the quick gratifications of learning the simple things all over again.