logoalt Hacker News

coldteayesterday at 10:29 PM4 repliesview on HN

>I will challenge you to come up with a strict definition that excludes software engineering!

"Structured, mature, legally enforced, physically grounded standards based approach to the construction of repeatable, reliable, verifiable, artifacts under stable (to the degree that matters) external constraints".

Some niche software development (e.g. NASA/JPL coding projects with special rules, practices, MISRA etc) can look like that.

99.9% of the time though, software "engineering" is an ad hoc, mix and match, semi-random, always changing requirements and environments, half-art half-guess, process, by unlicensed practicioners, that is only regulated at some minor aspects of its operation (like GDPR, or accessibility requirements), if that.


Replies

fc417fc802yesterday at 10:59 PM

By that definition the vast majority of historic engineers weren't "real" engineers. It's correct to claim that software engineering isn't currently an accredited profession and it's also quite reasonable to question the extent to which the vast majority of software development qualifies as the practice of engineering. But the latter is highly subjective and will likely also rule out a significant fraction of the grunt work that accredited engineers perform.

Which is to say, engineer the job title is distinct from engineering the activity is distinct from engineer the accreditation.

show 1 reply
da_chickentoday at 7:19 AM

The only word doing any work at all in that definition is "artifacts", and the problem is that the methodology that is actually foundational to engineering need not be applied to physical objects. Further, it's not clear that this methodology shouldn't be rigorously applied to non-"artifacts" which that can cause equal or greater harms when created negligently.

The definition I always saw used was this one, I think:

> Engineering is the profession in which a knowledge of the mathematical and natural sciences gained by study, experience, and practice is applied with judgment to develop ways to utilize, economically, the materials and forces of nature for the benefit of mankind.

This sounds like it should exclude software design and development. Except it doesn't need to, and it's not really useful to exclude it simply because the definition isn't broad enough. The definition isn't engineering. The definition is trying to describe and encapsulate the reality of engineering. Nuclear and modern electrical engineers frequently never create anything physical in their careers whatsoever. Nuclear engineers manage power generation at facilities that others designed and built, while electrical engineers are frequently just dealing with signal processing. They are not less rigorous in their methodology.

The reality is that engineering is the methodical application of constraints to solve a problem. And it is the methodology that is the valuable aspect. The knowledge is necessary for each discipline, but it is itself fundamentally a prerequisite. There is a reason engineering is a single school of many disciplines.

Meanwhile, the reason that software engineering looks like half-art and half-guess has a lot more to do with software as a non-theoretical field of study only being about 60 years old in practical terms. The fundamental works of the field like The Art of Computer Programming haven't even been written yet.

Whatever happens to software development and operational systems administration in the next 50 years, however, both roles almost certainly would benefit society by becoming actual professions. Their responsibility to society as a whole has been allowed to be understated, and we're well past the days when a computer bug causing the kinds of deaths and damages such as we'd see from a civic work failure or automotive design flaw sounds unreasonable. Indeed, that actually sound fortunate given some of the software catastrophes that have occurred.

keedatoday at 2:56 AM

>* ... legally enforced ...*

Other than that part (most countries in the world do not have regulations or licensing requirements for most engineering disciplines) I would agree. But I would also point out the set of software projects that meet that definition is much larger than those you listed.

As mentioned, it's a matter of economics, so the rigor scales with the pain it can cause if something that goes wrong. Hence any software that has a high blast radius is that rigorously built, probably even more. There are entire categories (not just individual examples!) of such projects. An obvious category are platforms that run or build other applications: OS kernels, databases, compilers, frameworks, cloud platforms (yes those 9's are an industry standard), and so on.

Then there are those regulated ones like automotive, aviation and medical software. There is even a case to be made for critical financial software.

Another less obvious category applies to any large software services company that has oncall engineers, because the high cost of engineers quickly climbs and quality processes quickly get installed, which basically amount to those critera you listed.

That internal LoB app with 5 users? That level of rigor simply does not make economic sense. Which is probably what you mean by:

> 99.9% of the time though, software "engineering" is an ad hoc, mix and match, semi-random, always changing requirements and environments, half-art half-guess, process, by unlicensed practicioners, that is only regulated at some minor aspects of its operation (like GDPR, or accessibility requirements), if that.

To that I'll say, as someone whose first site outage as an intern was an actual industrial manufacturing factory (not an AbstractFactoryFactory!) a surprisingly large fraction of projects in other engineering disciplines match that description ;-)

arealaccounttoday at 12:45 AM

Yea we do standups every day and plan story points twice a month???