HACKER Q&A
📣 exdsq

Is Software Development as an engineering discipline unique?


I read an Introduction to Formal Methods powerpoint presentation that stated - based on a survey of 400 companies regarding all IT projects in the last 10 years over a budget of £1M - 20% of IT projects are abandoned, 60% are over budget, 90% are late, and 98% have features removed in order to finish the project.

My friends and I reguarly discuss this stuff and we have different views. I think that if we're going to class software development as an engineering discipline these statistics are terrifying and we as an industry are doing something wrong. My friends say software development is unique to all other fields of engineering because it is more complex than a bridge which is 'large but simple' and two software projects differ more than say two new cars might differ.

I'd love to know what you think?


  👤 PaulHoule Accepted Answer ✓
One way it is different is that there is no licensing for software engineers and there never will be since the practice developed in a time when the society was dead set against labor unions and similar institutions.

(Not only is there no licensing, but there is not even a real professional society for practicing software engineers. Unfortunately the ACM doesn't count because it represents CS professors and big employers who want to use H-1B to drive down wages and professional standards.)

As for other kinds of engineering it seems like screwing up is also widespread. Some examples:

-- the nuclear power plant that is supposed to take 4 years to build and cost $3 billion that takes 14 years and $20 billion (but the people working on it are not excited, they've got the best job they've ever had)

-- the 737 MAX

-- Dieselgate (software played a role in these two but it was not the initiator of the accident)

-- The Space Shuttle (e.g. not just that it blew up 2 times out of 100, but that they knew it was going to blow up 2 times out of 100 and flew it anyway -- and it was such an ill-conceived boondoggle that the USSR could never believe that it was what we said it was)

-- any infrastructure project in the U.S. when you see the price tag (e.g. the bus stop that costs so much the local green party people are shocked)


👤 jbn
I think part of the answer is in your summary : a lot of software development happens with no engineering at all. For it to be called engineering, there must be some purposeful design going into it (and preservation of the corresponding records of the design and design decisions), not mere accretion of a bunch of things into a Rube Goldberg contraption.

For it to be engineering, you need to have explicit design, explicit statement of the constraints and explicit statement of the flight domain. This in turn is a lot more expensive than a few lines of code, often very expensive, to the point that we allow shortcuts..

Engineering is having a discipline, and a lot of those projects that are abandoned, over budget or time, have no discipline. I'm taking about discipline along many dimensions (budget, schedules, features, design, documentation, testing, QA), and a lot of these add to the cost, but if you don't do them, then the cost is the highest (this is where you end up cancelling the project...).


👤 JohnFen
I'm more on your side of this than your friends.

I don't think that software engineering is "special" in the way they state. It sounds to me like they're confusing engineering with mass production.

In my view, software engineering is not fundamentally different from other forms of engineering, except that it's still rather new and is devoid of a strong set of best practices.


👤 rsclient
Maybe someone should do an analysis on bridge construction -- how often it's delayed, over-budget, or has features removed. My intuitive guess is, "all of them".