...I read this article and my first reaction was "Hey! I don't suck! I'm real! I'm a programmer!" I thought about it for a while: why was it that William and I feel differently about what programming is? What could I gain from looking at our different points of view?
Something came to mind as I was doing something (these thoughts on the back burner of my head). I recently saw The Last Samurai (decent movie). In short, this movie is a dramatic attempt to bring a historical event to you: the Satsuma rebellion in Japan. This was a bunch of Samurai who didn't want a certain trade agreement with America to be accepted (evidently it was a bad deal). These Samurai refused to use guns, they only used the traditional weapons of their Way. The Emporer on the other hand was flirting with Westernization. He was buying guns and training his men to use them, and in the end purchases cannon and gatling guns. The leader of the Samurai, Katsumoto, is displeased with this change in spirit in Japan. As a traditional fellow, he seeks to convince the Emporer of the superiority of the Samurai way in an age where it is illegal for even the Samurai to wear the sword. In the end (you guessed it), these two forces decide to kill each other and the Emporer wins but he is so impressed with the spirit of the Samurai who fought to the death even in the face of certain death, that he turns down the trade agreement. Yay. Once again, the forces of Progress annihilate the evil weak traditionalists and kill them all. :) (snipe snipe).
So what do Samurai and ...Real Programmers...have in common? Well, after reading Williams humorous rant, I can tell that he's got skills up the kazoo: he's a master of his art. Samurai too spent hours and hours mastering their killing techniques, mastering multiple weapons, and studying strategy. William sees these "new" programming ideas like data structures and object orientation as unnecessary...perhaps decadent, useless methods that enable kiddies to do things with computers. Similarly, the Samurai saw the gun as a decadent weapon which was at odds with The Way. However from reading Musashi, I can tell that this is not his view. He comments that from behind fortifications, guns are supreme on the battlefield and then goes on to analyze the gun's strengths and weaknesses in A Book of Five Rings, explaining that once the ranks close, guns are useless.
What it seems like William is missing (or perhaps is omitting for the sake of humor) is that these tools are merely ways to make the programmer more powerful. Even guns have been changed to the point that the guns used in The Last Samurai are worthless today. The modern soldier carries a weapon of terrible destructive power, but he is by no means undisciplined (or should not..stupid selfish captive abusing jerks in Iraq..you gonna pay....you make the rest of our troops look bad). No, on the contrary, this increase in power must result in an increase in responsibility and discipline. The modern soldier can control a lot more ground then soldiers of old which enables our nation to have less of them do more: this is good for our nation. Similarly, the modern programmer has various complex tools at his disposal. A newbie programmer can indeed now do things that would have been impossible for a newbie FORTRAN programmer like me producing a custom piece of mobile software that a farmer can use: custom GUI, talks with custom hardware, existing software and the PC to figure out how much water is in the dirt, and helps the farmer compensate for this information, all this in less then 2 weeks of work. Now, 80 entire hours is inferior to what a programmer who was super skilled with Visual C++ already could do I'm sure. I have plenty to learn. The point is that Visual C++, the Windows API, etc. are powerful tools that help me do things for cheaper. While William the FORTRAN Samurai is practicing his art with skill and grace, I'm learning to use a gatling gun and doing a fair job of it. One is good for one thing (maintaining legacy systems for cheap), one is good for another (rapid applications development by someone inexperienced, end result is maintainable by someone who is inexperienced).
In the end, I disagree with William that this all results in a world where future computer programmers will be little kids. With all the skill I have, I can't get a permanent job because there is so much I don't know..and because the job market is still limping. In other words...just like the modern soldier has more ground to control, the modern programmer simply has more work to finish meaning more profits for da boss and lower costs for the consumer.
It seems William may not like this. That's fascinating because many modern people who practice the sword do not practice the sword because they'll use it: they practice it for its own sake. They practice it for the Tradition. They practice it because they love it and they look down on anyone who practices in a way which is not The Way. In other words, when William evaluates programming principles and such, he isn't seeing "whats good for the company" he's seeing "what is good for me to solve the problem?" He doesn't need a gun: the sword is fine for him.
Interestingly enough, Musashi advises against this poor use of strategy. He tells us that it is unwise to be far better with one weapon than with another like mastering the longsword and knowing nothing of the spear or bow: instead, it is wise to know the ins and outs of all weapons, knowing the strengths and weaknesses of all of them and being able to use any of them. That is the spirit of the Modern Programmer.