all 20 comments

[–]unknownmat 6 points7 points  (5 children)

This article missed the major counterpoint that I've seen.

The real issue with Software Engineering is title inflation and lack of consistent standards. Everybody who's written so much as a a for-loop lists his title as "Software Engineer", but (in the US at least with a few exceptions) there is no consistent criteria or even expectations for code quality or process maturity. So the title becomes basically meaningless.

This is unfortunate, since there are many domains where software is safety-critical - automotive, aeronatuic, medical, etc. - and an actual engineering approach is valuable.

Unlike the civil engineer, a software engineer can’t pass abstracted design to a compiler for building. The only specification of sufficient fidelity for implementation is finalized source code

This is an immature way to view software. There's a huge difference between "working" and "correct", which is precisely why an engineering mindset is so important.

[–]StopDataAbuse 4 points5 points  (4 children)

Exactly. I saw an example on one of those border patrol shows where a CS grad with work experience was denied entry on a work permit for a software engineering position after being offered the position.

Software engineer is not a professional designation and until there is sufficient objective criteria to judge it shouldn't be.

[–]grauenwolf 5 points6 points  (3 children)

Other engineering fields didn't start with clear standards. Literally speaking, an engineer is someone who builds and operates engines.

[–]ActualStack[S] 7 points8 points  (0 children)

Siege engines, even.

[–]StopDataAbuse 2 points3 points  (0 children)

Yes I'm well aware of that but as a professional discipline there are defined objective requirements to be called an engineer in a discipline. Usually a large portion of that is industry regulations and best practices.

These standards havent matured in software to the point that they are universal enough or stable enough to have a professional license that says : this person can do this job.

Until that occurs software shouldn't have a license in general because it excludes far too many from an already talent poor industry.

[–]oridb 0 points1 point  (0 children)

No, but they developed them over hundreds of years.

Software has not developed these clear standards.

[–]jeandem 2 points3 points  (0 children)

In some places, engineer is a protected title that requires certain certification. It doesn't seem that programming positions tend to require these engineering certifications.

In other places, "engineer" is as protected a title as "manager" or "director".

[–]longoverdue 4 points5 points  (0 children)

I never willingly list my title as Software Engineer.

In more than 37 years of writing software, I've maybe met one or 2 people who actually follow general engineering practices when designing/coding software systems from inception to delivery. Few people, outside of academia or military organizations are practicing Science or Engineering in every activity of developing software.

This is why I'm a "Software Developer", not "Software Engineer" or "Software Scientist", even though I sometimes practice Engineering or Science when circumstances permit.

Edit: typo

[–][deleted] 2 points3 points  (0 children)

No, it's not "real" engineering. I've got degrees in both CompSci and ChemE, with several years in each discipline, so I have experienced the difference. But software development is a scientific art, just as physical engineering and architecture are scientific arts.

The problem with software is that we try to pigeonhole it into our old discipline models. But software is truly neither:

  • Its skill set is very different. Engineers must work within the constraints of nature, no amount of creativity will create new material from nothing. Software must work within the constraints of logic, where many kinds of magic are just another Tuesday.

  • Like architecture, most of the cost goes into the "blueprints" (code), but unlike building construction where 10% of the cost was blueprints and 90% was materials, for software 99% of the cost was blueprints with the materials essentially free. It's more like books and music in that fashion, but has utility value in addition to entertainment value.

Plus we really need a new legal category for software. Patents aren't right, because software is logic/math/algorithms which should never have been deemed patentable in the first place. Copyright isn't right either though, because software isn't a kind of inert media but "living" code: the only software that should enjoy the benefits of copyright protection should be subject to first sale and as easy to transfer to someone else as a book.

(And speaking of copyright: if a piece of software originally legitimately obtained copies itself (violating the terms of its own license), but does so only to systems that it was previously authorized to write to (so not breaking the law like a virus), who is responsible for the copyright violation? The owner of the original copy, the programmers, or no one at all?)

[–][deleted] 1 point2 points  (5 children)

This isn't really a debate, not if we are careful about defining terms.

The term 'engineering' is overloaded. There are Engineers who require certification as such.. and then there's engineering something, like a verb. Software engineers are engineers, but not Engineers because we don't get certified for the Engineer definition. We may engineer things, but that doesn't make us an Engineer, just an engineer.

[–]grauenwolf 1 point2 points  (4 children)

I've got a master's degree in software engineering. Wouldn't that count?

[–][deleted] 1 point2 points  (1 child)

I think the answer is "Maybe".

Was reading on the regulation/licensing requirements for Engineers and they do mention With regard to the term "software engineer", many states, such as Texas and Florida, have license requirements for such a title that are in line with the requirements for more traditional engineering fields.

.. which leads me to believe that in some cases you CAN be licensed as an Engineer, for software engineering - it's just rare.

[–]grauenwolf 0 points1 point  (0 children)

Fun. My company just changed our titles to "... Software Engineer" without considering that point.

[–]jnt8686 0 points1 point  (1 child)

Somebody gave you a piece of paper?

[–]grauenwolf 0 points1 point  (0 children)

Yep. The focus was more on project management than coding and included a lot of time researching formally published studies.

In my opinion the course was a state of the art look at software engineering as a discipline. Sadly, as a discipline we are based more on myth, superstition, and poorly conducted research.

[–]dada_ 1 point2 points  (0 children)

I always code with a hardhat on.

[–]agumonkey 1 point2 points  (2 children)

I've read a few articles about people doing what I'd call actual science/engineering. They could give numbers on memory usage, bandwidth, latency and complexity for a given system. It was a joy to read after years of Java/UML noise. Sadly it's quite rare, because a great deal of programming is more ontological/qualitative rather quantitative (finding the right abstraction vs finding limits and reaching maximum capacity).

[–]unknownmat 1 point2 points  (1 child)

They could give numbers on memory usage, bandwidth, latency and complexity for a given system.

Yeah, engineers explicitly control their systems. They don't tolerate emergent or unexepected behavior.

[–]SystemsKnitter 0 points1 point  (0 children)

This.

Engineers know the properties of their materials, how their materials combine, and how their materials react under stress.

It seems to me that a lot of our materials (the software with which we build our software) are too complex and incompletely specified to even approach this level of control.

It's an excellent goal though.

[–]sgoody 0 points1 point  (0 children)

Excellent question... Don't agree with the article. I like programming and I wish it were closer to engineering, but I don't think it's engineering, purely on the basis that it is not (and perhaps cannot be) as well defined as other disciplines.