Live data from Hacker News

Why writing software is not like engineering (2008)

cs.usfca.edu

11–20 of 62 posts

Re: Why writing software is not like engineering (2008)

#11
The gist of the article is that software projects have more ad-hoc decisions and more flexibility. This is due to the nature of software. To claim this as a justification that software engineering is not engineering seems rather shallow to me.

You have less repetitive process in software because once software is built, copying it and reusing it as-is is free. In construction if you need to build 10 twin buildings, each of them is a project on its own. In software that'd be building one piece of software and deploying it 10 times.

Furthermore I question the notion that software projects can accommodate more "fundamental midcourse design changes". Can you spend 2 years writing a dedicated Windows desktop application and then midway suddenly switch it to being an Android application? That would be fundamental. Reskinning the UI or replacing a dependency with a similar one is not fundamental design change.

Software can't sustain fundamental design changes, unless we misinterpret what is fundamental and what isn't.

Basically we need to be careful with our analogies so we don't cross from trying to extract insight into flexing our useless cynicism about how software sucks because it's not like making a car in a superficial ways.

Re: Why writing software is not like engineering (2008)

#12
post #5

Most engineering projects have standards. Not the cutting edge stuff, but most of it does. Many are from regulations and safety laws setting specifications for this and that, but some are simply there because they won by being the most popular. Software Development by contrast has no standards. You can hire two different enterprise sized companies with this and that certification in the exact same technologies, who c…

Standards can only happen when an industry has matured and moves slow enough for these standards not to be obsolete by next year. We have plenty of laws and standards regarding handling private information, payment systems, independent pen testing and so on. So it's incorrect to say we have "no standards" at all. Where it matters, we do. But to try and standardize a process that's evolving faster than a standard can…

It happens with slow technologies that ought to have standards as well. I do work with OS2.eu (Danish public sector owned open source software organisation) and we recently brought the first project into multiple supplier territory. It’s a Drupal PHP project, and as I understand that means that everything that gets build should follow Drupal standards that are pretty much set in stone. After 6 months of governance going this and that way, and the countries second largest city (and biggest PHP developer) as a mediator, we are only now moving into the blissful world of compliance where everyone has agreed to develop Drupal modules in the same way.

Compare this to when we build a new city hall. A massive project involving almost 500 smaller local contractors, in a business that actually moves forward pretty fast. Some of the materials they ended up using weren’t even invented when they began. The project was finished a head of schedule and under budget.

I know construction isn’t always like this. We’ve had our share of catastrophic projects, one elder-care center in particular, but compared to buying software it’s almost child’s play, even when things go wrong.

So I think it’s perfectly fair to say that software engineering isn’t engineering. If you can even build a simple webpage, without two suppliers disagreeing so much on the “standards” that it takes 6 months of governance to achieve compliance, then there is just so far for the industry to go before it’s anything that even resembles engineering.

Re: Why writing software is not like engineering (2008)

#13
post #5

Most engineering projects have standards. Not the cutting edge stuff, but most of it does. Many are from regulations and safety laws setting specifications for this and that, but some are simply there because they won by being the most popular. Software Development by contrast has no standards. You can hire two different enterprise sized companies with this and that certification in the exact same technologies, who c…

Well said

Re: Why writing software is not like engineering (2008)

#14
post #4

Not sure why people consider it an art.. some software problems only have 1 correct solution that runs in a time constraint, proven by mathematical induction..Art is subjective no?

Not all programming is art, just as not all painting is art.

And some math formulas are considered beautiful, and art is in the eye of the beholder, so even the optimal solutions might be art to some.

Re: Why writing software is not like engineering (2008)

#15
post #4

Not sure why people consider it an art.. some software problems only have 1 correct solution that runs in a time constraint, proven by mathematical induction..Art is subjective no?

Subjectivity is mostly an aspect of fine art (and some coarser ones, depending on your definition of 'fine'.) Originally, art was a more general concept, making something artificial by using skills that don't just come naturally.

Re: Why writing software is not like engineering (2008)

#16
post #5

Most engineering projects have standards. Not the cutting edge stuff, but most of it does. Many are from regulations and safety laws setting specifications for this and that, but some are simply there because they won by being the most popular. Software Development by contrast has no standards. You can hire two different enterprise sized companies with this and that certification in the exact same technologies, who c…

> Software Development by contrast has no standards

That's not true in the context of medical and car software. See

https://en.wikipedia.org/wiki/IEC_62304

https://en.wikipedia.org/wiki/ISO_26262

Re: Why writing software is not like engineering (2008)

#17
I consider software development an engineering discipline.

In my weird, crazy world, engineering is all about discipline (sound of a riding crop slapping a leather-clad thigh), and follow-through. It's a lot less about slide rules and differential equations.

I believe that the Romans that built aqueducts (often using coerced labor -otherwise known as "slaves") were engineers. They had a lousy numbering system, no concept of trig (although a few had heard of Pythagorus), and not even a slide rule; yet they were able to build massive, well-designed structures that still stand, to this day, nearly three millenia later.

I can't use some Web sites that are just over a year old, because their components went belly-up.

But I also consider software development to be a craft. That's really my approach.

When I write software, I make a personal level of investment into the outcome. The project must complete. Even when I'm working with a test harness, on a project that is nothing more than an experimental platform, I treat it as if it were a shipping product, that I plan to display in the store window. In fact, I often revisit truncated experimental efforts, in order to scrounge snippets. Since they are already "ship" quality, those snippets tend to be quite useful.

A basic habit of mine, is that all of my code "ships," even when it doesn't. That's a craftsman attitude. Getting the project to "ship" state is an engineering effort.

But that's just me. YMMV.

Re: Why writing software is not like engineering (2008)

#18
post #4

Not sure why people consider it an art.. some software problems only have 1 correct solution that runs in a time constraint, proven by mathematical induction..Art is subjective no?

They have to put some label on it, if it doesn't fit engineering or science then art it is.

Re: Why writing software is not like engineering (2008)

#19
This seems to broadly conflate CS and Software Engineering. The differences have been covered elsewhere. Stuff like cognitive vs. physical science, (mostly) thinking about thinking instead of thinking about things, or quotes like "A computer is to computer science as a telescope is too astronomy." To be fair, the fact that a lot of us got CS degrees, but really ended up doing software development probably doesn't help clarify matters. The university I went to had a separate degree for Software Engineering and, frankly, it looked pretty boring to me. Even though I was a full-on coder before I got there. Perhaps there is no hope?

Re: Why writing software is not like engineering (2008)

#20
post #5

Most engineering projects have standards. Not the cutting edge stuff, but most of it does. Many are from regulations and safety laws setting specifications for this and that, but some are simply there because they won by being the most popular. Software Development by contrast has no standards. You can hire two different enterprise sized companies with this and that certification in the exact same technologies, who c…

So engineering before the rise of standards wasn't engineering?
Post reply on HN