Dr. Dobb's Journal October 2003
On Being a Professional Engineer
Dear DDJ,
I was disappointed to see that much of the feedback to Jonathan Erickson's June 2003 "Editorial" involves the establishment of a standardized test for software engineers. There is little doubt that the quality of much software is substandard, but I would have thought it would have been obvious how ill suitedand, in fact, counterproductivea standardized test would be in correcting this problem.
There are a number of outstanding reasons why such an approach is impractical, but I'll highlight the most glaring: The sheer scope of software engineering makes a single, standardized test, with any relevance whatsoever, impossible.
Take the August 2003 issue of DDJ itself as an unscientific, non-all-inclusive sampling. In a single issue of a single magazine and only in the editorial content (not including the advertising), there are a number of languages referenced: Visual Basic, Java, C#, Smalltalk, C++, Forth, etc. There are quite a few programming paradigms mentioned: OOP, AOP, XP, Cleanroom Software Engineering, and the like. There are several OSs addressed: DOS, Windows, Linux, Mac OS X, and so on. And there are a huge number of peripheral "technologies" cited: Enterprise JavaBeans, Java Data Objects, MFC, XML, CORBA, UML, Real-Time Signal Analysis, MATLAB, robotics, 802.11b, and on and on. How can a single test encompass all of this? It can't. And no subset would be adequate or accurate.
The embedded software engineers where I work deal with assembly DSP instructions all day long. They eke out every useful cycle and squeeze code into a very few bytes of memory. They seldom touch C, much less C++, and many have never even seen a line of Java or C#. They don't deal with large-scale OSs like Windows or Linux. But I can assure you they are most definitely entitled to be called "software engineers." They spend their days making tough, well-reasoned compromises, for both long-term and short-term effects on designs, and they are skillful craftsmen. Would it be better for the quality of their day-to-day tasks for them to divert hours from their work to study these irrelevant concepts to pass a test to be called what they surely have earned many times over (and pay a fee for the privilege)?
To address the unbelievably wide range of concepts, any software engineering test would need to be watered down so much as to be useless to almost anyone. Remember that even the Bar can be passed by someone without a minute of college (see Catch Me If You Can, the movie about Frank Abagnale, Jr.).
And sticking with documented standards is almost as useless. One of the worst software "engineers" I ever worked with could quote song and verse from the C++ specification, but he couldn't program his way out the proverbial paper bag. But I'm sure he'd pass such a standardized test with ease.
Remember that the Bar and tests like it weren't meant to ensure qualitythey were meant to ensure that charlatans didn't pretend to be doctors, lawyers, and civil engineers. I haven't heard too much about people masquerading as software engineers. But we all question the quality of the lawyers who advertise on late-night televisionand they passed their tests!
What can be done about the poor quality of software? I don't know what the whole answer is (I wish I did). But I share the sentiments of those with comments about accountability. And I'd start with the EULAs. Can you imagine buying a product and agreeing with the seller that the product doesn't have to perform its intended function at all? That is exactly what most EULAs assert. And until a company takes responsibility for its product, no artificial test and its associated headaches and fees will make a dent in the overall software-quality issue.
Rick Tillery
rtillery@fgn.net
Jonathan responds: My favorite definition of an engineer was coined by Neville Shute: "An engineer is someone who can do for ten shillings what any fool can do for a pound."
More Business Process Outsourcing
Dear DDJ,
Outsourcing, as such, is not the problem. Outsourcing is usually an attempt to preserve the traditional ordering of things. As Giuseppe di Lampedusa put it in The Leopard, "If we want things to stay as they are, things will have to change." Practically, the alternative to outsourcing is likely to be still more drastic change. For example, Microsoft has an extensive bureaucracy for distributing Windows and Office and .NET, all of these in both personal and enterprise editions, etc., subject to multitudinous licensing and payment plans. This bureaucracy is partly outsourced, in places like prisons, and partly not outsourced. Debian Linux, on the other hand, has a mirror site network of limited performance, considering the size of the distribution; a pointedly nondiscriminatory list of disk vendors; and a social expectation that everyone who buys a set of disks will methodically burn copies for his friends and relations. When DVD-RW drives become sufficiently cheap and ubiquitous, allowing a full Linux distribution on a single disk, the Debian model will probably gather steam.
I think that, basically, we have to recognize an underlying problem. For the last 40 years, we have been trying to paper over the employment implications of computers. This worked as long as computers remained a "minority technology." However, the number of professional programmers has increased from about 13,000 in 1960 to somewhere between 2 and 5 million today. Since the total labor force is only about 140 million, there is obviously an upper bound to further increases. The central contradiction pointed out by such early writers as economist Robert Theobald and novelist Mack Reynolds becomes unavoidable. Once programmed, computers tend, on the whole, to continue producing output without additional human labor. The problem is that we have an economic system based around the idea that people get income by virtue of having jobs. We have tried to paper over the crisis [with] sinecurismtrying to create jobs for people to do.
As technology becomes more human-scaled, due to the increasing use of small computers, this tends to undermine sinecurism. As consumers shop for the best price, they systematically bypass and sidestep firms with a lot of sinecurism...Indeed, as Alvin Toffler pointed out years ago, sufficiently advanced technology enables a return to household production ("prosuming"), which is more or less completely untaxable and unregulatable. Corporate outsourcing is simply a logical extension of consumer choices. State and local governments are in the same bind, forced to bid against each other for low taxes because new technology makes their most affluent residents more mobile. In a sense, they are less governments and more large-scale hotelkeepers.
New Jersey may have been balked from outsourcing welfare administration jobs to India. However, there is nothing that says the state has to administer its welfare system in such a way as to create jobs for state employees. No doubt the state's next move will be to have the welfare recipients answer questionnaires on the Web, or something like that. The end result will be much the same, if not more drastic.
Andrew D. Todd
adtodd@mail.wvnet.edu
DDJ