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…
Why Software Engineering Isn’t Engineering
51–59 of 59 posts
Re: Why Software Engineering Isn’t Engineering
#52So 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.
Re: Why Software Engineering Isn’t Engineering
#53We 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
#54Re: Why Software Engineering Isn’t Engineering
#55Re: Why Software Engineering Isn’t Engineering
#56You 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…
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
#57You 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.
Re: Why Software Engineering Isn’t Engineering
#58Earlier 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…
It doesn't seem that different from other professional codes.