Putting the craft back into crafting software
Some months ago a client asked me for some arcane information about Visual Basic, which is one of the programming languages I use regularly. I replied that I didn't know the answer, but that I would research the matter and find out. He seemed quite surprised that I didn't know and snidely remarked that, "A good craftsman should know his tools." As is typical in such situations, I came up with the perfect response about a week later, which is that "A good craftsman should know his craft."
Missed opportunities aside, his comment made me realize that good programming itself is still very much a craft. The programming industry now primarily--indeed, almost exclusively--focuses on tools. Today, most companies consider a qualified programmer to be one that knows how to use the tools the company has standardized on, and a surprising number of young programmers equate learning to program with learning to use development tools.
That this shift in focus has been detrimental to software quality is almost inarguable. Even those who know nothing about the software industry understand that a master craftsman with mediocre tools will always turn out a better product than a mediocre craftsman using the best tools available.
Walking into the computer section of any bookstore will convince you of how completely the transition has taken over the industry. By far the most popular titles are those like Learn Java in 21 Days--books that promise to teach the details of a particular programming language in as short a time period as possible. Books on programming techniques and style, when stocked at all, are few and usually gather dust on the lower shelves.
It hasn't always been this way, but I have no intention of spending the rest of this article pining for the good old days. The transition itself, however, is worth examining, and I believe the computer press is largely responsible for it. It's not that IT media planned the shift in focus, or that they are particularly happy with the situation. The shift was a natural result of capitalism at work. After all, programming has become a multi-billion dollar industry, and having that kind of money flowing around changes the rules.
Programming magazines, like magazines everywhere, survive by selling advertising (true story--Ed.), and most of the potential advertisers sell development tools or add-ons for other companiesí development tools. As the programming industry grew, is became obvious that having a magazine focus on a single development tool and associated add-ons was a much easier way to sell advertising. Today, every major development tool has at least one magazine dedicated to it.
It was a logical enough development. Unfortunately, once the lines had been drawn, such magazines were forced to become cheerleaders for the tools they covered. After all, anything that might convince a reader to use another tool would mean a drop in circulation and corresponding advertising revenues. Compounding the problem is the fact that learning to program well takes a great deal of effort on the part of the programmer. Obviously, this is not a popular message and the computer press wisely avoids broadcasting it. The magazines that succeed are the ones that avoid the difficult issues and can convince their readership that anyone can effortlessly become a great programmer provided they read their magazines and buy the development tools offered by their advertisers.
Simple economics dictate that any focus on learning to program has to be abandoned and replaced with the idea that learning to program really means learning about programming tools. Furthermore, these days many of the articles are actually written by the tool vendors who advertise in the magazine. With the authors focusing on selling product and the magazines focusing on selling advertising, there is precious little point in discussing general programming.
The end result is that there are now a lot of programmers who actually believe that this is what programming is all about. Those who strive for excellence will eventually discover that learning the tools is only the first, and by far the easiest, step. Unfortunately, almost all of the younger programmers I talk to seem to feel that reading books on general programming techniques and methods (i.e. learning to program) is a monumental waste of time. However, all are extremely anxious to attend training courses about new programming tools.
Is there any chance of a widespread return to the concept of computer programming as a craft? There are some small signs that things are getting better. The Internet has greatly reduced the influence of the programming journals. Information and opinion available on the Internet tends to be much more timely and much less biased than that available in the journals.
I don't, however, see a reversal in the trend anytime soon. The sad truth is that there is far more money to be made selling people programming tools than there is teaching them to be good programmers.
Romero firstname.lastname@example.org is president of Vanguard
K.K., and writes regularly on software development issues.
to the Table of Contents