

Software Engineering is a Joke - alex_c
http://dewitters.koonsolo.com/sejoke.html

======
caudicus
Erm, people label it as an engineering discipline because it uses some of the
same principles of system design, use of modules and reuse that other
engineering disciplines share...

Engineers solve problems. Understanding physics is a means to solving some
problems. That's it.

"The application of scientific and mathematical principles to practical ends
such as the design, manufacture, and operation of efficient and economical
structures, machines, processes, and systems."
<http://www.thefreedictionary.com/engineering>

------
cdr
Wow, this is ignorant. There's no substance to this argument.

Software and the process of building software can't be measured because it's
not physical?

"The confusion of software engineering probably comes from the fact that
programmers often have the same intelligence as engineers, and most of the
time share the same interests."?

One of the few things I dislike about news.yc is that something like this, an
hour old with 3 points and one comment can make it to #8 on the front page.
Programming.reddit actually seems more discerning.

------
dewitters
Hi there, I'm the author of that article :). It always seems to provoke a lot
of discussion, and most people that react on it always seem to disagree with
my point of view ;).

Unfortunately my main thought always seems to get lost. Maybe I should try to
make it more clear in the article. In my opinion the core focus of software
development, and therefore also the most difficult part, is to create an image
of the real world (both in source code and the program). An engineer's main
focus is completely different.

~~~
Husafan
Would you agree that chip design, via a EE degree, is in fact an engineering
discipline? It uses metrics, tolerances, correctness, etc, just like a civil
engineer has when building a bridge.

Software is simply a layer of abstraction on top of this. For instance, when
the USAF wants software for the F-22, you better believe there are
requirements and processes just as stringent as Intel's process for
designing/developing a CPU. And the people producing that code, imho, are
every bit as much engineers as the EE's.

~~~
dewitters
Indeed, I even agree that the people that write software for the F-22 are
engineers, and better use engineering practices to build their software. The
requirements are probably pretty strict/well defined.

But there is plenty of software out there (maybe most software) like ERP/CRM,
desktop/web applications, games, etc ... , where the technical parts are not
that important, or aren't really the main problem. The main problem is to try
to create the most clear representations of real life items (customers,
business processes, human resources, etc.), and make them clear to other
programmers in the source code, and to the customers (who most of the time
aren't technical).

It's probably true that my theory doesn't make much sense for lower
level/close to the hardware software development. But for high level things I
still think I'm absolutely right ;).

~~~
Husafan
Point taken. :) Let me ever so humbly posit, however, that this is the exact
attitude that separates software developers from software engineers.

If you want to develop software without strict practices, that's just dandy,
and you don't have to refer to yourself as a software engineer. It does not
follow that software engineering is a joke:
<http://news.ycombinator.com/item?id=132640>.

On the other hand, if you do want to be a software engineer, these practices
can be applied to all projects, no matter how small or high-level. I think
this may be what your professor was trying to say.

------
manvsmachine
Please, do yourselves a favor and read this instead:
<http://news.ycombinator.com/item?id=130757>

------
mynameishere
<http://video.google.com/videoplay?docid=-3674140982294628000>

"First of all it's not a science. It might be engineering or it might be art.
...has a lot in common with magic."

So, who knows what it is exactly.

------
pius
Spoken like a true ignoramus. If I were the author, I'd start off by learning
what engineering is before I pontificating about it.

Truly, one of the lamest things I've read all year.

~~~
kradic
Can you give an example of something specific he says that you disagree with?

~~~
pius
Heh, upon review of what I said, it probably came off as too harsh. I was so
terse because I didn't feel like writing a long polemic at the time I made the
comment. :) Now that I have a minute, here are some of the points I disagreed
with in the essay.

 _"Unfortunately . . . software development and engineering are, even at the
most fundamental parts, completely different. Engineering is the practice to
develop something touchable, something that obeys the laws of physics."_

That premise is flawed and leads to misguided conclusions. Engineering is the
application of technical knowledge to solve problems. There are tons of ways
to say this, depending on who defines it, but no reasonable definition _prima
facie_ excludes software from being an engineering discipline.

 _This implies that the product produced can be evaluated with the laws of
physics. You can make all kinds of statistics, strength calculations, etc on
the product. . . . . Software on the other hand, doesn't obey the laws of
physics, by the simple reason because it can't be touched. Sure, it has
physical parts, but those physical parts are not that important._

Let's forget for a second that all software can be specified in hardware.
There are _still_ important "physical parts," constraints, and metrics
applicable to the design of software. For instance, one would be hard pressed
to argue that physical constraints of RAM and processor speed are completely
irrelevant to software. In addition, much of software engineering actually
turns out to be how to optimize output of teams with finite amounts of man-
hours available. This is non-trivial and subject to a wealth of metrics,
experimentation, and methodologies.

But let's go even further and put all of _that_ aside. The argument still
doesn't hold up. Even if software could not be touched, it could still can be
engineered. Disciplines like process engineering and human factors engineering
are examples of rigorous practices applied to seemingly abstract
implementations. Useful software engineering principles such as modularity,
coupling, cohesion, reuse, interfaces, specifications all come directly from
other "traditional" engineering practices and have been shown to improve the
quality and speed of software development.

Look, I appreciate the art of software development; that's part of what I love
about it! And there's certainly a point to be made about focusing too much on
process over creativity at the wrong stages. But that point wasn't made. The
article seemed to suggest that we just throw up our hands and give up trying
to do anything rigorous with the products we design because it's all an
illusion anyway. I think we can do better than that. We _need_ to do better
than that.

~~~
dewitters
My point in the article is also that we can and need to do better (maybe not
clearly explained ;), but it is my belief that using the "engineering"
metaphor will hold us back. A lot of people, maybe even most, believe that we
should improve ourselves by becoming "more like engineers". For example by
using Formal Methods etc. This might be true for a small number of projects,
but it is my believe that for most software projects, as software developers
we need to become "less like engineers".

"Engineering is the application of technical knowledge to solve problems.",
therefore, engineers try to gain as much technical knowledge as possible to
solve their problems. In my opinion software development should evolve to
require less and less technical knowledge, that way we can spend more effort
on the real problem: mapping the problem domain into a clear software
representation. Developing software should evolve closer towards the human
side, and not towards the technical side. And so far, programming languages
for example have evolved in that direction.

------
tokipin
he's not saying software engineering is a joke. he's saying the phrase
"software engineering" is a joke in that programming is much more fluid than
mechanics

that doesn't stop people from trying to engineerize software development, for
worser or worse

~~~
tim2
The problem with his argument is that other forms of engineering are not
necessarily "engineerized" any more than with software.

------
aarontait
I agree with his point. The development of software is not an engineering
discipline because there is a literal and metaphorical art to it. Software
creators need to take quantitative aspects of engineering, and incorporate
qualitative aspects such as design and aesthetics into the final product.
There are no real metrics for measuring some aspects of software creation.
Software creation can be viewed as an art.

~~~
RyanGWU82
There's art, design and aesthetics in many other types of engineering. Ever
seen a beautiful bridge?

Obligatory beautiful bridge link:
<http://www.joelonsoftware.com/items/2006/12/15.html>

