Hacker News new | ask | show | jobs
by dschuler 3018 days ago
There's a lot of debate about what kind of activity software development is. The camp that doesn't see it as engineering argues that programming is a craft, or that code is "grown".

I think one of the key differentiators for engineering is that something engineered should work by design after it has been built (not including regular maintenance of a machine). A defect requires a special process to repair all built instances.

In software development, defects are a regular occurrence requiring continuing changes, and requirements change as well. Of course, that's very different from a bridge or a combustion engine for example.

Automated testing can help push software development _toward_ an engineering mindset.

BTW - you're right that most software devs don't need licensing or formal education, but it comes off as pejorative. While those could help set standards, some of the most talented people I've worked with have neither (and some of my class mates in college don't affirm a benefit for formal training).

1 comments

In software development you are solving new problems continually. If you weren't you could just call a library function with some parameters and be done with it.

Structural engineering is much like calling library functions with certain parameters and then making sure it all works and is safe. You know how what you are constructing differs from existing buildings and use that to decide what to do. You don't (usually) invent new ways of building things or building things that are unlike anything that was built before.Therefore such projects are well-known engineering practice, and your skill and knowledge of those practices can be tested and you can be licensed.

Some software development is like that too but most is not, you are creating new designs all the time because your software is for new purposes, not to replace something existing with perhaps a slightly improved version. It's hard to license anybody in "inventing new things".

Would it be too presumptuous to assume you have less structural engineering experience than you do with software?

You seem to be forgetting that vast majority of software development is churning out the same old buggy barely maintainable CRUD apps in dull enterprise environments or for tight fisted agency clients.

Precisely. I would have been less charitable in my response. Most software development is plumbing. To say we're solving new problems all the time and then to set that in some unclear opposition to what structural engineers do... I mean, just like software, each SE's project is different and yet similar across cases. That's uninformative, to say that least. So if you want to contrast them, it's best to actually know what you're talking. Also, I always hated occupational narcissism. It's a sign of narrow-mindedness.

(Besides, the question about whether software development is engineering or craft is very much real. John Allen, John McCarthy, Bertrand Meyer and Peter Denning have all written interesting things about this subject.)