Live data from Hacker News

Why Software Engineering Isn’t Engineering

blog.iancackett.com

51–59 of 59 posts

Re: Why Software Engineering Isn’t Engineering

#51

This guy seems to be stating a made up tautology due to the fact that he is redefining eng. According to this guy we do mostly design and specification. Of course then you could say the Bay Bridge, the Space Shuttle, the 787 and every product that requires a long design and exploration pathway is not engineering. I don't know of anyone at Google who considers dev the same as mechanical engineering. It's more of an ex…

I'm simply going with the definition of true "engineering" taught to me as a software engineering major at university... and specifically that we don't do that formal definition of engineering. Of-course, other fields (mechanical, civil, etc) don't always follow all the formalities either, but there are ways of modelling that simply aren't available or aren't used by software engineers.

Re: Why Software Engineering Isn’t Engineering

#52
post #5

So I decided to search the definition of engineering on the internet because I've heard this whole "software engineering is not engineering" thing before: > Engineering (from Latin ingenium, meaning "cleverness" and ingeniare, meaning "to contrive, devise") is the application of scientific, economic, social, and practical knowledge in order to invent, design, build, maintain, research, and improve structures, machine…

I don't think it uses science, other than scientifically studied development processes, and how many start ups use thast? If you count computer science, I'd kick the can down the road and ask if computer science is a real science? Does it use the scientific method? It seems more as applied mathematics.

Science involves the application of the scientific method. Take academic research, for example. Engineering may involve the scientific method, but it isn't required to validate that scientific knowledge was used. Scientific knowledge could be an algorithm for autonomous environment mapping. Implementing that in an autonomous car and ensuring system functionality in the many possible environments it might end up in, that is certainly a feat of engineering.

Re: Why Software Engineering Isn’t Engineering

#53
In my opinion, software, if it is a form of engineering, is a very strange form. A mistake in one part of the code can potentially affect any other part of the code. Not only that, but the effect it has is practically unbounded. If we were making a car, then it's a bit like putting in a cup holder causing the fuel tank to explode.

We can't efficiently reason about our designs because we can't efficiently build from reusable parts that are known to work. Sure that cup holder works in every body else's car, but it makes our fuel tank explode. There is no equivalent to things like "tensile strength" that we can calculate to say, "This will be good enough for this project, but for a different project we should use something else". We just shut our eyes and pick our components based on what the most annoying person in our team wants to use.

Many organisations make the mistake of thinking of software development as if it were like building a bridge. We think that we can choose a framework and it will reduce the amount of thinking that we have to do. Then half way through the project we are madly trying to hire Rails experts because nothing works right and it has something to do with the internals of Rails (which we were trying to avoid understanding).

Putting aside the gargantuan task of gathering requirements for a second, building software sometimes has the feel of building something physical. Because software is seen as a thing that people utilise, they think that we will eventually use the same techniques that we use for building physical object/systems. The reality is that software does not follow laws in the same way that a bridge or a car must follow physical laws. You make up your own laws in software and the only thing that is important is internal consistency.

It's a bit like creating a universe for your bridge to live in. The success of your bridge depends on whether or not you chose sane rules that other people could understand. If we were to think of it as engineering, we would need "engineers" who studied every software system so that they could understand the "laws of physics" (which explains why Rails developers get paid so much!).

BTW, I'm picking on Rails for no good reason. You can insert whatever framework/library/language/system you currently hate because it really doesn't matter all that much. Each one encapsulates it's own universe and requires us to study it to understand how it works. Our ability to extrapolate from one system to another is dependent upon whether or not the developers actually chose to imitate each other or not.

On the other hand, we have some advantages over engineering. Our universe is made up. If we choose we can limit the rules to only things that we understand very well. We also get to see the source code (unless you work with proprietary systems, in which case you have my undying pity). We don't have to discover the laws of physics by experimentation (hmm... it doesn't stop some programmers, though...). The laws might change from day to day, but we can even write so-called "tests" to alert us when some idiot has inadvertently changed the gravitational constant and caused the universe to implode.

Personally, I think the differences between programming and engineering are big enough that we lose a lot by hoping that it will become engineering. For some reason there seems to be a desire to call programmers "engineers". I hope this trend reverses and we embrace a new discipline that is more suited for our needs.

Re: Why Software Engineering Isn’t Engineering

#56

You see this sentiment come up about every few months here. We're not rigorous enough. Or we can't estimate our build time well. Or we don't have any liability. Or we don't have a codified set of morals that govern us. BS. 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…

> You see this sentiment come up about every few months here. We're not rigorous enough. Or we can't estimate our build time well. Or we don't have any liability. Or we don't have a codified set of morals that govern us. BS. I don't see the BS. Coming from a traditional engineering discipline, I'd agree with each of those. The scariest to me is on professional standards and ethics: it seems to be an almost point of p…

> The scariest to me is on professional standards and ethics

OK. What standards and ethics would you recommend we adhere to?

First, do no harm? One, define harm. If I'm depriving a corporation of money by automating something for consumers, is that harm? How about if I write a clone of netcat, am I liable for its use in nefarious scanning of ports?

Thou shalt not write bugs? That would be awesome, were it possible. I can't think of many developers who wouldn't want to get to this point, assuming of course it didn't result in a 1 month project plan to write a sorting algorithm.

http://googleresearch.blogspot.com/2006/06/extra-extra-read-...

Re: Why Software Engineering Isn’t Engineering

#57

You see this sentiment come up about every few months here. We're not rigorous enough. Or we can't estimate our build time well. Or we don't have any liability. Or we don't have a codified set of morals that govern us. BS. 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…

You have a good point about timing. I often bring this up myself. The major fields of engineering have hundreds to thousands of years of work that went into them. They also went in the same direction more. I challenge any architect that mocks our work to build his next house using methods that existed in their first 100 years then live in it. None have taken me up on the offer.

[deleted]

Re: Why Software Engineering Isn’t Engineering

#58

Earlier quoted context omitted.

> You see this sentiment come up about every few months here. We're not rigorous enough. Or we can't estimate our build time well. Or we don't have any liability. Or we don't have a codified set of morals that govern us. BS. I don't see the BS. Coming from a traditional engineering discipline, I'd agree with each of those. The scariest to me is on professional standards and ethics: it seems to be an almost point of p…

> The scariest to me is on professional standards and ethics OK. What standards and ethics would you recommend we adhere to? First, do no harm? One, define harm. If I'm depriving a corporation of money by automating something for consumers, is that harm? How about if I write a clone of netcat, am I liable for its use in nefarious scanning of ports? Thou shalt not write bugs? That would be awesome, were it possible. I…

The IEEE-CS/ACM jointly publish one: http://www.computer.org/web/education/code-of-ethics

It doesn't seem that different from other professional codes.

Post reply on HN