On a Linux user’s group to which I belong, there’s been a lively and thought-provoking discussion about software engineering and how it not only differs from other “engineering” disciplines, but also what it really means when a customer buys software. I’ve been following the discussion because in the end, that’s what I do every day: I deliver software to customers who normally never see (nor care about) the actual programming logic behind it. They only care that it works, and does what they specifically need for their business.

A funny observation was about “enterprise” software:

In most cases, all that label really means is that you’re going to have to hire a crew the size of the Star Trek Enterprise to install, integrate, operate and maintain it.  And that the sales guy who sold it to you just started receiving juicy commission checks for the rest of his natural born life.

It’s funny because it’s true, of course. I’ve worked with several clients who, after several years of using web-based systems I built and customized for them, discarded them in favor of an “enterprise solution” from some huge bloated company with a persuasive sales force. In many cases, the client spent gobs of cash on the software only to discover that it didn’t do what they need and had to be customized by consultants at $300/hour, or that it actually had fewer features than the system I’d built over the years. Go figure.