Remix.run Logo
9rx 2 days ago

> Most of software isn't engineering, it's just building.

Other way around. The difference between engineering and building is that building refers to the building of a component in isolation, while engineering is about the building an entire system through the combination of multiple components. Most software — and all software that is actually used — is a built system.

> but one places a lot more rigor on the science

That'd be "professional engineering"; sometimes referred to as PE for short. We're talking about engineering (sans professional) here.

HPsquared 2 days ago | parent | next [-]

A house comprises many parts. A custom motorcycle has many parts. These things are designed and built to established practices, but in 99% of cases they aren't really "engineered" with calculations and formalised decision-making processes and the like.

9rx 2 days ago | parent [-]

> A house comprises many parts. A custom motorcycle has many parts.

Hence why they are engineered. I suspect you mentioned houses because the people who build houses are often referred to as builders, but that is because the people working houses often only do work on a single component. The system as a whole is referred to as engineering, though.

> with calculations and formalised decision-making processes and the like.

You too seem to be confusing "engineering" with "professional engineering". While societies of professional engineers would like people to think that engineering is defined by mathematical and scientific rigour, that's not how anyone actually uses the term in practice. The "software engineering" label wouldn't exist if they did.

HPsquared 2 days ago | parent [-]

There is definitely some engineering that goes on in the software world, but it's mostly construction.

hollerith 2 days ago | parent | next [-]

Software development is more like drawing up the blueprints for a building than it is like working with materials made of atoms. (The analog in software to the construction phase of the creation of a physical building either does not exist or proceeds very quickly, is very unlikely to fail or be delayed and is almost completely automated.)

The word "patterns" a la software patterns was taken directly from the writings of an architect of physical buildings (namely Christopher Alexander). It is not an accident that it was not taken from the work of a construction worker, not even a high-level one in charge of hiring subcontractors and of years-long billion-dollar construction projects.

The most salient difference between blueprints and software artifacts is the sheer complexity of software artifacts these days (which is why there aren't organizations that employ many tens of thousands of draftsmen and architects of physical structures) but that is a difference in degree, not a difference in kind.

9rx 2 days ago | parent | prev [-]

While there is construction involved in software, the computer does that work. There is no human analog there. The human end of software is entirely at the design level, which is the defining characteristic of engineering — so long as it is a system being designed, of course, which virtually all software is.

7thaccount 2 days ago | parent | prev [-]

Thanks for bringing up the PE distinction. This kind of argument comes up here ad nauseum. People have different views and we argue semantics.

There is engineering as a discipline (e.g., mechanical, electrical, industrial, civil, aerospace...etc.) and engineering in a more colloquial sense like "I did some hillbilly engineering and rigged up a pea sheller". Both involve solving problems.

The former typically involves the person going through a rigorous 4-5 year program where they take a bunch of advanced math and physics classes and a ton of other classes (including coding and robotics as well as more specific classes such as power electronics) that teach logical thinking and problem solving. I'm always amazed that I can more or less talk to any engineer across the country (different state, different university, different engineering discipline) and still recognize their training and that hyper analytical mindset and feel the kinship. That of course doesn't mean that there aren't similar analytical people that went in other directions, but the training is a real thing.

A professional engineer passed their fundamentals of engineering exam, got their degree, and then took their professional engineering exam. You used to have to get 4 years of work experience before applying, but I think they got rid of that. It's an awful 8-hour exam with a pretty low pass rate. Honestly though, the PE usually just means the engineer was willing to spend 3-6 months prepping for the exam and has a need for the license to stamp papers. A lot of engineers never get it if they don't need it. I believe you need it in some cases for court cases.

As far as software engineering goes. It seems to be a discipline that matches the second colloquial definition more in a lot of cases. In some cases they have actual software engineering degrees where the student takes all the standard intro engineering courses (calculus, linear algebra, statistics, differential equations, statics, dynamics, circuits, thermodynamics) before doing the core classes distinct to that major. In that case, I'd call them an engineer due to the training and think it's an appropriate job title even if they get a job slinging corporate java, which would not typically be viewed as traditional engineering. So they're an engineer...not necessarily doing engineering. Does that really make sense? My own definition breaks down if we apply this to the same engineer becoming a garbage man. They're still an engineer by training, but they're most definitely not doing engineering anymore.

Also, if Pete gets a job slinging code out of highschool...we can say he's doing engineering in the colloquial second sense, but is he an engineer in the first sense? No.

Clear as mud? As an engineer I now must flog myself for my own internal inconsistencies. In all seriousness, language is hard and sometimes imprecise. I didn't realize my rambling got so long and apologize.