3 ms·
As a software engineer with a CS degree who complains about "bad languages", none of that is what matters. Software engineering, as practiced, isn't real engin
by jholman 6y ago
As a software engineer with a CS degree who complains about "bad languages", none of that is what matters. Software engineering, as practiced, isn't real engineering.
When people say "actual engineers", they're talking about features like:
* codified best practices for at least 90% of the job (software development does a bit of this, but still precious little, and it's so immature that a lot of codified best practices (e.g. "use OO for everything") are clearly wrong)
* certification, with standards, where it's possible to do a bad enough job that you lose your certification (also true of e.g. doctors or lawyers). that cannot happen in S.E. because there's no certification in the first place.
* jobs with sufficient consequences (e.g. bridges, buildings, electrical work...) are illegal to build without sign-off by a sufficiently senior sufficiently-certified engineer. that isn't the case in S.E., there's no law against a high school student building a site that records PII and then leaks it
* if an engineer signs off on such a job, and is sufficiently negligent in doing so, not only do they lose certification but they can be legally responsible. as far as I know this is in theory just as possible in S.E., but as far as I know has never happened in practice, while it does from time to time happen in other fields
* part of the aforementioned certification is training in questions of law, ethics, and professional liability, whereas most CS students take at most a course on "social consequences" in the hand-wavy abstract, and most "software engineers" didn't do a CS degree anyway
It used to be the case that the word for the super-category here was "professional" (as in "member of a professional association"), but these days people use "professional" just to mean "wears nice clothes and doesn't cuss". Shrug. (btw it's fine that the meaning changed, because a still-older meaning of "profession" is purely religious, so using it for these kinds of training/trades usages is already a "distortion".) But anyway, as I noted above, doctors and lawyers and accountants all share most of these properties, they are far from exclusive to engineers.
I think there are good reasons why software engineering isn't currently real engineering. E.g. civil engineering (one of the oldest types of engineering) muddled along okay without any of these features for thousands of years, and many of these features are effectively impossible in a field as fast-moving (i.e. young) as software. So I'm not necessarily saying that S.E. could reasonably aim for those features in the near future.
But still. Real engineering is a thing, and software engineering isn't real engineering. Yet.
- jimmaswell 6y agoIt feels like you and many others look at things tertiary to the core of engineering (certifications, sign-off, etc) and see them as the defining aspects somehow. You could take those away and it'd still be engineering. Dictionaries aren't perfect but Merriam's definitions closely capture what I think of as engineering really well: 2a : the application of science and mathematics by which the properties of matter and the sources of energy in nature are made useful to people b : the design and manufacture of complex products Programs obviously aren't made of physical matter but it's otherwise fitting.
- fouc 6y agohttps://en.wikipedia.org/wiki/Software_engineering#Criticism https://en.wikipedia.org/wiki/Software_engineering#Criticism
- jholman 6y agoI'm not sure quite how you got "tertiary", but, I mean, to some degree I agree with you. The qualities I pointed out are certainly not sufficient qualities for something to be engineering, and if I had to say which was more important, the design-and-craft or the responsibility, I'd say it was the design-and-craft. But many things fit that Merriam's definition, and are not engineering. Since you were so honest as to note that dictionaries aren't perfect, I don't want to be a jerk about how useless that definition is, but since you went on to say that software seems to fit, let's just look at some examples of just how excessively inclusive that definition is. (I'll assume that 2a means "matter and/or energy", because if it means "matter and also energy" then clearly software doesn't qualify anyway.) Knitting fits those definitions perfectly. Science, yes, mathematics, yes, properties of matter, yes, useful to people, yes, design and manufacture of complex products, yes. Are you claiming that knitting is engineering? Filmmaking manipulates matter and energy, creates a thing that is useful to people, and involves complex design and complex manufacture. Music composition depends on math and science, manipulates sources of energy in nature, is useful to people, and involves the design of products (although composition doesn't involve the manufacture of those products; we call that manufacture "performance"). Accounting doesn't worry about "properties of matter and energy" (much as software doesn't, as you point out), but it involves the application of mathematics to create things useful to people, and there's often the design and manufacture of complex (informational) products. (Note that I'm not saying that clerical work fits the definition, I'm saying that the design of accounting processes fits the definition. Obviously many "accountants" are not designing processes but are simply doing bookkeeping, in the same way that a rivetter is not an engineer.) Compared to any of these, software creation involves no science, typically little mathematics (although there are certainly very deep exceptions to that, haha), and doesn't involve any manufacture. If you're gonna put software creation in the club, you're basically saying that "engineering is creation stuff (including non-physical stuff"). No one agrees with that concept. --- That has all been arguably a bit of an over-reaction to the details of your argument, so I want to just return here to my core point. Yes, certification and sign-off and ethics and liability and law and culture is arguably a less-essential characteristic of engineering than something to do with making stuff. But in this day and age, the certification and ethics and sign-off and so on is a necessary part of what makes it engineering. And it's one of the main reasons that software engineering as practices isn't real engineering. Yet.