Is Software Development An Engineering Process?

At a recent conference, Alan Cooper, the father of the Visual Basic programming language, made the following statement: “The act of constructing software is, in fact, not an engineering process. Engineering to me is problem-solving, which is very different from solution implementations, which is what programmers [do].” [see this Infoworld article for the details]

Cooper’s definition of engineering as problem-solving is probably a good one. There is a clear distinction between “coding” and “problem-solving”, but as an engineer (software currently, electrical formerly), I believe that what I do in software is engineering. My job is not just to design a solution but to implement it, sometimes fully, sometimes up to the point where someone else can pick up the process. The key difference here is that typical engineering of atoms results in a manufacturing process, a line the clearly the separates the engineering process from the production process. In the world of bits, that line is not so obvious. So a certain percentage of software is “problem-solving” — bread boarding, prototyping, building version 1 — and another percentage is “manufacturing” — building UI features, some product enhancements, etc.

Cooper’s perspective is probably based on the idea that all software is designed by architects and engineers and that coders type in the program code like the proverbial monkeys attempting to produce Shakespeare. Mostly this isn’t true. Programmers are always working on solving problems since software production is fractal — macro problems break up into smaller problems. Even component-based development doesn’t eliminate problem solving as part of the process. If that were the case, then building software would be like building houses — just stack up the bricks (components) and a house (application) would pop out. Of course, that isn’t how things work. It doesn’t work that way for silicon either. Electrical engineers today use all sorts of silicon compilers and component technology and they are still considered engineers.

Web developers exist on a different level. Those who are primarily responsible for designing web content probably fall more into the category of content designers than software engineers. There job isn’t to create software to solve a particular problem set — rather, they need to create the most appropriate layout for a page of content. The programming language is no more relevant to them than it is to a print press typesetter. On the other hand, those who use the web fundamentally as a user interface to access some other problem solution are software engineers.

This really brings us to the trickiest part of all of this — what is a “problem”? Of course, there’s no real answer to this. The key is to make a qualitative distinction between the trivial and non-trivial. Trivial problems have obvious solutions, non-trivial ones don’t. If the problem is assessed to be non-trivial, then it is probably a problem in the engineering sense of the word. Setting up a web log is a trivial problem with obvious solutions. Designing and implementing a software system that asynchronously replicates files between systems is not. The distinction here should be clear — the latter requires software engineering to create a solution. The former doesn’t.

In my opinion, use of the title “software engineer” is appropriate. The problem solving using software is just as real an engineering task as using atoms to solve a problem. Software development, like development of electronics, is a large combination of tasks, some mundane (coding simple functions, wire wrapping a prototype) and some not. But in now way should the production of software be trivialized as solution implementation when real problem solving occurs.

No Telemarketers Except Us

There’s nothing more amusing than a bill with a self-serving component. The Washington Post reports today that the House approved a bill setting up a national “Do Not Call” list for those of us who do not want to be called by telemarketers. Of course, the telemarketers are fighting this tooth and nail on the basis of free speech rights, but most of us would just prefer to eat dinner in peace without the constant telephone interruptions.

Of course, Congress exempted themselves, like they do from everything. According to the Post, “charities, surveys and calls on behalf of politicians would be exempt”. So, just to be clear here — are we talking 501(c) charitable organizations? Does the organization have to make the call themselves or can they pay a telemarketing firm to call for them? (Personally I hate when they do that.) And which surveys would be exempt? Those that are sponsored by corporations or political surveys only? And why on earth do I have to take a telemarketing call from a politician?

Time To Stick It To The Music Industry

Looks like those crazy guys in the record industry are the subject of a class action suit for price fixing! What a surprise! Go to the Compact Disc Minimum Advertised Price Antitrust Litigation Settlement web site and sign up. It’s unlikely you’ll see any dollars from this, but it’ll serve as a punitive measure against the record industry.

According to the website …

What is the Litigation About?

Plaintiffs allege that the Defendants conspired to illegally raise the prices of prerecorded Music Products by implementing Minimum Advertised Price policies, in violation of State and Federal laws. All Defendants deny all claims of wrongdoing asserted by the Plaintiffs.

Who are the Defendants?

The Distributor Defendants are: Capitol Records, Inc. d/b/a EMI Music Distribution, Virgin Records America, Inc., and Priority Records LLC; Time Warner, Inc., Warner-Elektra-Atlantic Corp., WEA, Inc., Warner Music Group, Inc., Warner Bros. Records, Inc., Atlantic Recording Corporation, Elektra Entertainment Group, Inc., and Rhino Entertainment Company; Universal Music & Video Distribution Corporation, Universal Music Group, Inc., and UMG Recordings, Inc.; Bertelsmann Music Group, Inc. and BMG Music; and Sony Music Entertainment Inc. The Retailer Defendants are: MTS, Inc. d/b/a Tower Records, Musicland Stores Corp., and Trans World Entertainment Corp.

It’s really no surprise. Maybe that’s why we’re all downloading MP3s today instead of buying CDs.

What’s In A Title?

I’ve had a difficult time with job titles throughout my career because it seems that few of the people who are not in my industry understand what it is that I do for a living. That may seem trite and unimportant, but I’ve found that it’s quite the contrary.

Today I had a brief discussion with an individual who read the title I had written down — “software engineer” — and said, “Cool. Do you build websites?” That followed with a more lengthy description of my specialties in the software field, which only drew a puzzled look. I finally said that I don’t generally build web sites — rather I build the servers that those web sites run on.

Although that’s not entirely true of late, it’s a much closer description to the sort of thing I build that a web site would be. As more of a hard core software engineer, I work on system, server and application level software, but I don’t do web sites for a living. My languages are C and C++, not HTML and JavaScript.

Perhaps there is no good job title that separates what I do from the web site builders, but I’d like to think that there must be a good way to draw the distinction. I no more have the graphic design and layout skills that the best web designers have than they do the multi-process, multi-threaded development skills that I have.

It would seem that this is a minor problem, but I’ve struggled with it throughout my career, carefully explaining the differences. Computer Scientist never really cut it for me as a title — I view software as an engineering exercise not as a science experiment. Similarly, Software Designer or Software Architect are too abstract and generally indicate that the holder of one of those titles doesn’t actually code anymore — I still do. I use the title Chief Technology Officer now and in my previous job, but that title says even less about what I do. (Personally I think CTO is a cool title, but the longer I’ve had it, the less it means to me.)

Once I claimed the title Cryptolope Architect, when I was developing IBM’s Cryptolope DRM technology. Again a cool title, but functionally useless. I’ve seen cute titles like Software Gardener, but in these post dot.com crash days that title sounds really silly.

It would be nice to have a distinction drawn between the software developers who write complex applications and system software and those who build web sites. It would be a huge plus if the title were actually functionally descriptive. The world seems to understand “Attorney At Law”, “President and CEO”, “VP of Business Development”, “Sales Executive”, and “Bank Teller”. It would be nice if there was a corresponding title that everyone would understand for those of us in the software profession.