13 ms·
I think the best definition of engineering is that it's a process of optimization within a solution space bounded by constraints. If you pile up some mud and le
by Tossrock 5y ago
I think the best definition of engineering is that it's a process of optimization within a solution space bounded by constraints. If you pile up some mud and let it dry, you have made a dwelling but you are not an engineer. If you calculate the load requirements for a series of I-beams given a certain budget and build a skyscraper, you are an engineer.
As the author correctly notes, there aren't necessarily hard boundaries on what qualifies as engineering, but I think there clearly are axes on which something is "more engineer-y" vs "less engineer-y", and as the constraints of the solution space go from physical (tension, voltage, pressure) to non-physical (interpersonal relations, public perception, aesthetic judgment), the activity goes from more engineer-y to less engineer-y.
In software, we're always optimizing on cost / developer time, but that's closer to the non-physical side of the constraint physicality axis. As you optimize for things like memory usage, execution time, binary size, then you get closer to the physical end of the constraint-type axis, and are thus more engineer-y.
- deleted 5y ago[deleted]
- klodolph 5y ago> ...as the constraints of the solution space go from physical (tension, voltage, pressure) to non-physical (interpersonal relations, public perception, aesthetic judgment), the activity goes from more engineer-y to less engineer-y. This would put industrial engineering deeply in "less engineer-y" territory, IMO. I think someone is very engineer-y when they pick a simple, easy bridge design which requires less skilled labor to produce, even if this takes them away from working with more juicy physics problems.
- Tossrock 5y agoI think I would agree with that (industrial / process engineering is "less" engineer-y than, say, mechanical engineering), but since they're still optimizing against measurable physical constraints (how many chiller units can we fit in this section of the warehouse, how long does it take a worker to move from the freight deck to the storage racks, etc), I think they're over my personal line. But of course, drawing sharp category boundaries is a losing game, which is why I prefer to think in terms of axes / vector spaces.
- klodolph 5y agoI think "drawing sharp category boundaries is a losing game" is as close as we are going to get to a clear lesson, here.
- tkiolp4 5y agoSo a plumber is an engineer. It’s easy: an engineer is someone who has a degree in engineering (whether or not such degrees should be degrees on engineering is another question). The current trend of calling programmers/developers engineers is a pure business trend (it originated in HR departments).
- ffhhj 5y agoYou know, some programmers build game __engines__... More seriously, the first programmers were electric/electronic engineers, so the engineer title was probably inherited. And game engines actually require lots of math and physics.
- tkiolp4 5y agoI don’t doubt working on game engines is hard (I do web development). If you build game engines then you are probably a game engine developer. I don’t hold a degree in engineering myself; no shame of not having the “engineer” title.
- AlotOfReading 5y agoDo you think engineers existed prior to the 18/19th century when degrees became a thing? It seems problematic to your definition that most of the wiki page on engineering is dedicated to things done by non-engineers.
- tkiolp4 5y agoIt’s a simplistic definition. Since the topic of calling developers engineers is rather superfluous, I think we should go for simple definitions.
- kelseyfrog 5y agoI can think of many simple yet incorrect definitions. They have as much utility as this one.
- bmitc 5y ago> it's a process of optimization within a solution space bounded by constraints That just describes problem solving.
- rowanG077 5y agoYes exactly! The word engineer comes from the latin ingeniare which is partly derived from ingenium which means clever. The entire job of an engineer is cleverly solving problems.
- bmitc 5y agoEveryone solves problems in their jobs. Engineers are not the only problem solvers in society. On another tangent, I wish we’d redefine what it means to solve engineering problems. I have noticed that there’s this property of engineering that as problems are solved, new ones are created. So it’s this never ending cycle of new problems blossoming.
- taneq 5y agoYou clearly haven’t met many of ‘everybody’. People of all occupations solve problems, yes. Most humans barely do, though. In terms of creating new problems, making life better is an under-defined, open-ended problem. There’s always a lowest-hanging fruit, that doesn’t mean we should stop picking them.
- rowanG077 5y agoI would definitely say anyone who cleverly solves technical problems is an engineer.
- Godel_unicode 5y agoNow we just need to define "solve", "cleverly", and "technical". What if their solution is non-technical, still an engineer?
- d--b 5y ago> we're always optimizing on cost / developer time, but that's closer to the non-physical side of the constraint physicality axis I think this is exactly what the author points out as "software engineers don't know real engineering". What makes you say that no other engineering practice don't optimize on cost / engineering time? There are degrees of quality in engineering, and one of the factors is definitely "time spent on engineering". If you are making cheap frying pans, I doubt that you're going to hire a rocket scientist to check whether the screw holding the handle is strong enough to resist 5000 heating cycles...
- GrantZvolsky 5y agoIn other words, what all engineering professions have in common is that their practitioners solve problems difficult enough that merely finding solutions is a substantial part of the job.
- rayiner 5y ago> I think the best definition of engineering is that it's a process of optimization within a solution space bounded by constraints. This is a fantastic definition.
- graycat 5y agoOptimization? "An engineer is someone who can do for 10 cents what anyone could do for $1."
- NateEag 5y agoIt is. It shows very clearly why most software devs are not engineers. I know I'm not. As a field, we don't "optimize within a solution space bounded by constraints". We throw crap at the wall to see what sticks, hacking up something like what the users said they wanted, then changing it all to do what they ask for once they start using it. It's normally done as a craft where we're using fuzzy human instincts to get to a good-enough solution and move on. And for systems where lives aren't on the line, nor millions of dollars every five minutes (financial trading, massive server farms at Google, etc), that is actually the correct tradeoff. Engineering is overkill for most software. NASA needs software engineers. Microsoft doesn't.
- thinkagainbro 5y agoExactly. Public safety is central to Engineering practice. Bridges and buildings come to mind but many life-critical software projects in aerospace, medical devices, automotive, also have emphasis on safety. The development process is way more controlled in embedded industries compared to web/IT/enterprise. Even Google and financial services are really just services that scaled and acquired a massive userbase. “Software Engineering” is really just an application of civil engineering project management to programming projects. The job title of software engineer is used too liberally however.
- kqr 5y agoBut what is numerical optimisation if not throwing crap at the wall to see what sticks? Do you only count analytical optimisation as optimisation?
- darksaints 5y ago> a process of optimization within a solution space bounded by constraints That's just regular old optimization. There's no point in optimizing anything that doesn't have constraints, because there aren't any bounds.
- RayVR 5y agothis is wrong. unconstrained optimization is done all the time. One quick and easy example is mean-variance optimization. Edit: I think you're conflating unbounded and unconstrained.
- herval 5y ago> it's a process of optimization within a solution space bounded by constraints By that definition, almost any profession - from surgeons and taxi drivers to construction workers and cooks - are all doing "engineering"?
- ironmagma 5y agoCategories are made up and don’t exist at the end of the day. Even the difference between marketer and engineer can be fuzzy.
- ameliaquining 5y agoUnless you're suggesting that the word "engineer" is entirely meaningless, this doesn't rebut the given objection to the proposed definition. If the word means anything at all, then the question has to be answered: Is the thing that it means that particular thing, or a different thing?
- beebmam 5y agoLiterally all categories describing real-world phenomena are fuzzy at their extremes. Reality itself is fuzzy at extremes
- eesmith 5y agoThen what job isn't engineering? By the definition given - "a process of optimization within a solution space bounded by constraints" - a taxi cab driver is certainly an engineer, with no fuzziness. Nor would it be an extreme case testing that fuzzy borders of that definition. And that's why herval disagrees with that definition. As do I. Definitions can also be overly broad, which is why we no longer use the term "star" to refer to planets, nor refer to the sun and moon as "planets". https://en.wikipedia.org/wiki/Definition_of_planet https://en.wikipedia.org/wiki/Definition_of_planet .
- ironmagma 5y ago
- AtlasBarfed 5y agoEngineers can both perform the problem solving and design for desired projects and... AND... If need be reduce it down to the underlying science and mathematical principles from which it came from, and because of that can analyze why things are "good" or "bad" at a much more fundamental level. Practitioners/Crafters are repeating "recipes" with far less comprehensive knowledge of the principles that led to those recipes. They may know historical evolution and practical reasons why one recipe is better than another, but their depth of knowledge is far less. So getting back to software, you can see two types: people that know algorithms and can mathematically design and analyze problems. Or you have people that are just following the api docs and basic examples of loops + if-then but don't know how CPUs work inside, how OSs work, and why. And do you need full engineers for a website layout or ruby on rails site? No. But if you are scaling or have complex data models or will have actual load, then ... you need engineering.
- BatteryMountain 5y agoThis is roughly how I explained it to my mother. I told her that no, I'm NOT an engineer and I used this analogy: An engineer is a guy who measures stuff upfront to create a plan of action (like measuring how much concrete we need if need a bridge to carry 500 cars). He never gets his hands dirty nor does he build the actual bridge. He has a ton of responsibility and must call on vast knowledge to know what patterns will be needed and if they will cope with the loads. On the other hand, programmers are more akin to gardeners (my mom is super into gardening) and carpenters - we have to get our hands dirty and build the thing. We have to use and stay true to the spec (from the engineer above) as close as possible, measuring a piece of wood 3 times before we cut it (not the fail fast nonsense) and carefully plant new plants that won't kill the whole garden. We also need to pull out weeds and prune the bushes and so forth. With a bit of careful implementation you can have a gorgeous garden and bird/insects/squirrels visitors and so on. Software Developers I would say, is then a combination of the above, depending on your experience you might lean more toward one side or the other. The best developers have a good balance of Knowing stuff and Doing stuff.
- R0b0t1 5y agoEngineering encompasses both. Does someone dictate literally every action of yours in great detail? No? You're an engineer and must exercise engineering acumen.