Continuing the “hard work” theme but also returning to the question of intelligence and computing:
It is an easy trap to fall into. Programming requires a certain kind of analytical intelligence. Being more intelligent in that way increases your programming ability exponentially. It is emotionally satisfying to think of yourself as a different species from the average programmer. Programming becomes a demonstration of your superior intellect. Surely such powers shouldn’t be wasted on mundane chores, but instead applied to timeless works of brilliant inspiration, to be admired by the common programmer only through protective eyewear. What a load of self-indulgent adolescent crap. In programming as in the rest of life, attitude trumps intelligence. I had to learn that the hard way.
That experience taught me a lot about what really matters in programming. It is not about solving puzzles and being the brightest kid in the class. It is about realizing that the complexity of software dwarfs even the most brilliant human; that cleverness cannot win. The only weapons we have are simplicity and convention.
This hits a lot of themes I like.
“Convention” is the heart of Confucianism. The idea is that people have to work together (even if the “people” in question are just you now and you six months from now), and the only way for us to work together is by establishing channels of convention through which expression is possible. The Romantic ideal is to have pure expression apart from convention, but this is absurd. Convention is what makes expression possible.
“Intelligence” is the idea that enough a priori thinking will let us solve all our problems in one swoop without doing the hard work of physically learning. To the contrary though, in Analects 15.31 Confucius says,
Once, I spent the whole day without eating and the whole night without sleeping, because I was thinking. Unlike learning, this profited me nothing.
This isn’t to say that there’s no use for intelligence or thinking. The point is that without accompanying our thinking with action, there’s no way to ground the process and ensure that it is productive.