Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> makes me a little ashamed to use the word "engineer" in my title of "software engineer". There is no real comparison of the quality of the result.

I think that's because the barrier to entry is too low and anybody is being called a "software engineer" these days.

But think about a system which makes proper use of synchronization primitives, like an OS kernel or a robotic control, or a CPU design like the other guy commented too, or maybe a 3D game with tricks like that of John Carmack. Those things can be as complex as an ICU engine.

To make an analogy: in the physical world there are the engineers, and the mechanics.

In the software world everybody is a software engineer.



When I took "Software Engineering" in University, the prof was very careful to explain in great detail, and frequently, that the field was not mature enough to really be called engineering. Then he would talk at length about things like software for airplanes and spacecraft. It is impossible to call yourself an engineer while looking someone in the eye after taking his class. I am a software developer. Maybe an analyst. But mostly a developer.


The word engineer is used by anyone who 1) has an engineering degree or 2) works a field where most new practitioners have such a degree. Most of these people don't know shit, and design terrible systems that barely work (or don't work at all). Trying to elevate the word to a non-existent Plutonic ideal where it means "great engineering" is just ... pointless and faux-humble.


Real engineers are like doctors, lawyers, LMFTs... even licensed electricians have some similarity here:

The point is, the “field” , has taken in a number of disasters, established a professional association, set standards for what you need to know to not be putting people at risk of dying, and created tests that new entrants have to pass in order to be certified with a title.

Now, you can say that is pointless bullshit—fine. That’s an opinion. But then you are just saying you think the title of “Engineer” is bullshit, we could still at least try to use the word properly.

The point is, people used to be able to use the word “Engineer” to mean something like, your house isn’t going to slide off the cliff, and your bridge you bought isn’t going to fall down, and due to “software engineers” who never bothered to set any professional standards for themselves, that word is less and less meaningful.

Words come and go, it’s not the first time. But it’s still a little bit of a bummer when it happens.


My experience with your “licensed” professionals has been terrible. They do not meet a high bar of quality, and their services are artificially expensive, and they discriminate heavily against minorities, immigrants, and the poor in their gatekeeping.

It’s also clear to me that most experienced software developers are more qualified than most “credentialed” graduates of CS/software engineering (most of whom can’t really code).


At least that's not the case in Canada. Neither of those qualify you to use the title "engineer", and if you do you are likely to get a letter warning you to stop. Those are both just prerequisites among several others.


> Those things can be as complex as an ICU engine.

From a complexity perspective an ICU isn’t nearly as complex as even something as simple is a script scraping a webpages for links and queuing them up for further crawling. I’m not sure if “complex” is the word you are going for but even the TCP state machine has significantly more complexity than an ICU and that’s just a fragment of what it takes to transmit some data.

The composability and abstractions we have in this industry allows you to quickly dwarf any regular mechanical system. There is a reason this is a whole new era beyond the industrial revolution.


Quantifying complexity really depends on the level of abstraction though.

Scraping a static webpage is simple when examined at the level of abstraction involving Python and ready made packages. An ICE is similarly simple when examined from the perspective of basic mechanics, as in the article under discussion.

As you note, scraping that static webpage is no longer simple when you include as part of your assessment the TCP state machine, kernel interface, NIC firmware, and similar layers that had previously been abstracted away. Neither is the ICE though once metallurgy, machining, oil chemistry, and the physics of combustion are included.

Granted, pursued to the logical extreme software eventually drags in everything the ICE did and more due to the physical hardware. But then modern engines are controlled by computers ...


The complexity in the engine isn't in the mechanical concepts that make it tick, it's in the implementation details. Stepping back quite some time in technology, but staying with engines:

The platonic carburetor is a dead simple device: a Venturi, a jet, and a butterfly valve. Real life carburetors are fiendishly complex: multiple jets, an accelerator pump, a choke. And god help you if you have multiple carbs on a single engine and need to sync them.

Everything that goes into making an engine work is similar: cooling it correctly and evenly, allowing for operation while parts expand and contract at different rates as the engine reaches operating temperature, lubricating everything, preventing vibrations that'll make the car feel unrefined or maybe tear the engine apart, valve timing (fixed in most engines at some compromise between performance and drivability), ignition timing (variable in most engines), sealing things that need to be sealed across a huge range of operating temperatures and in the presence of differing rates of thermal expansion (head gaskets, among others) oh, and making it work for a quarter million miles or more with fairly minimal maintenance. And manufacturing them at enormous scale, and holding the tolerances that make all of the above possible across the lifespan of the production line.

And all of that is before we even discuss pollution controls.


Nicely put! I think most "real" engineers dismissal of software engineering is because we can for the most part ignore physics. This somehow seems like cheating and not mathematical enough to be "real" engineering. I've even heard the claim that discrete mathematics, graph theory, and theoretical computer science is not "real" mathematics. It should be clear that a developing complex software system like Unix, Kubernetes, Redis is engineering, but somehow others from different engineering disciplines cannot see that. After bringing so many great inventions and innovations into this world, how can we once and for all make the case that software engineering is real engineering and get the respect that this field deserves?


Well that’s just because we understand internal combustion engines well enough that we can abstract away a lot of the details. Software engineering is nice because by design it is at a level of abstraction that we can grok it. We’re basically manipulating structural concepts of pure thought. But never forget that reality has a surprising amount of detail. When we interact with the physical world, we rely on abstractions at our peril.

http://johnsalvatier.org/blog/2017/reality-has-a-surprising-...


I don't think you can compare both. It's abstractions all the way down, for both. Modern ICE are made from metals compounds that were unknown a few years ago and are the reason they are efficient. Just as you can send bytes over a wire without TCP, you can build an ICE from pure iron. But both then have just very low fault tolerances and break rather quickly.


I kinda wish my title was simply “Systems Administrator” which is probably the closest thing to a “software mechanic” that we have. Most of our titles have been inflated however.


Thank fuck fluff titles like "Happiness Engineer" have gone away though.


That's why I often joke that a big part of my work is as a software mechanic! Which is still highly technical and necessary but the engineering part happens less often.


I _am_ a computer scientist, but also had a course "Gasoline and Diesel engines" at university. (Belgium before Bologna)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: