We've been talking about this for over forty years now and it just hit me - engineers are categorized by what they build whereas software engineers are categorized by what they build with . If you asked an engineer who's an expert at building bridges to then build a skyscraper, they're likely to have estimates that are off-base. Meanwhile in the software world we say we're Java developers or Ruby developers or Haskel…
Why Software Engineering Isn’t Engineering
21–30 of 59 posts
Re: Why Software Engineering Isn’t Engineering
#22Earlier quoted context omitted.
Yep, you're right... I'm forgetting that physical engineering also suffers from some of the same problems. The thing that it adds though is a level of rigour, and ability to reason about the project, that we're still struggling with somewhat in the software world. Believe me, in 20 years since I was taught it's not strict "engineering", I've yet to see that change much, other than in safety-critical and cleanroom pro…
Engineering is much more straightforward, you have the plans and know that you need X amount of parts and Y amount of labour. Software is more like research, where you don't even know if you can solve the problem acceptably, most of the time.
Re: Why Software Engineering Isn’t Engineering
#23"Software engineering estimates and plans often fail to live up to the reality that follows. It seems to be the only engineering discipline in which this is regularly the case." Is it though? I live in Boston, home of the notorious* Big Dig[1]. While particularly egregious, it's far from the only large-scale civil engineering project that's gone off the rails. In fact, I'd argue that until fairly recently, many more…
Re: Why Software Engineering Isn’t Engineering
#24Yeah... nearly stopped reading after that opening statement. There are many reasons why software engineering is different from other forms of engineering. And maybe those reasons are enough to not call it engineering. Personally, I don't think that's particularly relevant.
But wildly exceeding estimates is definitely not something that distinguishes "real" engineering from software.
Real world engineering often has the advantage of working almost exclusively with known quantities. But add a variable, like digging a tunnel through an unpredictable underground, and sometimes projects go off schedule by years.
No engineering discipline can predict the unpredictable. Some disciplines are just younger than others, and therefor have more unpredictable elements.
The big difference with software engineering is that the costs of failure are so relatively low that we prefer to go full steam ahead instead of trying to find ways to reduce uncertainty.
This makes software engineering an outlier. Everything else is just semantics.
Re: Why Software Engineering Isn’t Engineering
#25Earlier quoted context omitted.
As I'm commenting elsewhere, this is true... I didn't acknowledge that other physical engineering projects do indeed suffer from some of the main problems. What's missing in software engineering is the rigour and ability to reason so precisely about what's being built. I was originally taught (on a Software Engineering degree course) that it doesn't formally fit the definition of engineering, and I've not seen that c…
> What's missing in software engineering is the rigour and ability to reason so precisely about what's being built That's only true if you choose for it to be. There are ways to formally prove that your software is correct but they require a large time tradeoff. For example, the software in the chip in your car has gone through as much engineering rigor as a bridge. Alternatively, look at a cheap toy produced in a sh…
Re: Why Software Engineering Isn’t Engineering
#26Earlier quoted context omitted.
Yep, you're right... I'm forgetting that physical engineering also suffers from some of the same problems. The thing that it adds though is a level of rigour, and ability to reason about the project, that we're still struggling with somewhat in the software world. Believe me, in 20 years since I was taught it's not strict "engineering", I've yet to see that change much, other than in safety-critical and cleanroom pro…
Engineering is much more straightforward, you have the plans and know that you need X amount of parts and Y amount of labour. Software is more like research, where you don't even know if you can solve the problem acceptably, most of the time.
Re: Why Software Engineering Isn’t Engineering
#27> "Software engineering estimates and plans often fail to live up to the reality that follows. It seems to be the only engineering discipline in which this is regularly the case." Yeah... nearly stopped reading after that opening statement. There are many reasons why software engineering is different from other forms of engineering. And maybe those reasons are enough to not call it engineering. Personally, I don't th…
Re: Why Software Engineering Isn’t Engineering
#28The last O'Reilly Software Architecture Conference had a talk by Glenn Vanderburg titled "why software development is an engineering discipline":
https://www.youtube.com/watch?v=zDEpeWQHtFU
I think the author of the blogpost does a lot of the things discussed in the talk (e.g. comparing it mostly to civil engineering as opposed to all the other engineering disciplines).
Re: Why Software Engineering Isn’t Engineering
#29I think "Software Engineer" is just a title given by a place of employment. However, for those who genuinely believe themselves "Software Engineers" I would ask: What was the outside institute that certified your software engineering program? What professional exams did you take in order to be licensed as a software engineer?
Re: Why Software Engineering Isn’t Engineering
#30BS.
We're still exploring the space, and most of the time the things we build are good enough to work - just like the first wooden planks across streams were good enough.
We also do have the capability of designing and building the software equivalent of suspension bridges across the bay, using tools and processes like Ada, Coq, formal software proofs, etc.
Most engineering projects don't live up to your high standards, either. I knew a Blacksmith who would make circular staircases, and would regularly have to work around floors which were 4-6" higher or lower than specced. Or bridges which were put into earthquake zones, but not designed to withstand earthquakes. Or highways built with inappropriate foundations that buck like a bronco with frost heaves after the first winter passes. Or cities built under the freaking water table.
Ease up here folks. Our tooling and processes are still undergoing growth, as we take in the incredible scope of what we are capable of. Rome wasn't built in a day, and the understanding of stoneworking, woodworking, and city planning which enabled the building of Rome certainly took more than the < 100 years we've had.