http://www.sqlservercentral.com/blogs/steve_jones/2008/02/16/software-engineering/

Printed 2014/07/25 07:40PM

Software Engineering

By Steve Jones, 2008/02/16

Some see this as a misnomer, or even an oxymoron. Many countries don't allow "engineer" to be a title for software because it's not regulated like engineering is. Some think it's a joke, given the state of software development, the constant missed schedules and problems.

Buck Woody wrote an interesting blog post about this and how it might make more sense to view software engineering as a manufacturing process as opposed to engineering. After all, we build things, worry about QC, QA, etc. 

I used to feel that other engineering professions were more stable, more successful, and delivered projects closer to on time, on budget, and within estimates. And to a large extent I think they might be more succesful, but I think they suffer from quite a few errors in their own projects. And they operate in a much more constricted environment. They work in an area where they can calculate how things work, more of a science than the "artistic creations" of software.

Many engineering projects are one-off items. Building a bridge in Colorado isn't substantially different than building a bridge in Washington state. However it is different and engineers must make allowances for different codes, different materials, fundamental differences in how things are done and the conditions that must be withstood.

It's only natural that we make comparisons between professions. And while manufacturing and engineering deal with different resources, I'm not sure that it's that much different. We deal with the human elements, varying levels of productivty, even with one resource, and constantly shifting requirements. Engineers have different requirements and must work with different supplies and depend on various resources, similar isues with manufacturing, and perhaps that all balances out. After all I think in many cases the software resources enjoy their jobs much more than the other resources.

However software in many cases has a very different requirement. Our software must often run in many, many environments, something that isn't the case with many engineering or manufacturing products. Most products, even military and industrial strength products are designed to work within a band of conditions. And they're often not warrantied outside that band. Software runs in an incredible range of environments, even sometimes in those controlled, corporate environments.

When I really think about it, I'm not sure that any of these analogies is that good. Most engineers or manufacturers can calculate how things will behave and they can draw on the physical characteristics of the materials with which they work. Even new materials will be tested to ensure that their limits and ranges can be known. In the digital world that's not the case. We constantly work in new areas, assembling things whose behavior cannot be that well known because of the millions of possibly branches, inputs, and outputs that our work can be subjected to.

In the end I think software is unlike any other process of building, especially in one key area. It's maturity is much lower than any of those others.


Copyright © 2002-2014 Simple Talk Publishing. All Rights Reserved. Privacy Policy. Terms of Use. Report Abuse.