6 ms·
Wait... so in your mind there is a distinct difference between a developer, programmer, and engineer? Because in my mind, they are all the same. How are they d
by remmargorp64 6y ago
Wait... so in your mind there is a distinct difference between a developer, programmer, and engineer? Because in my mind, they are all the same.
How are they different, in your mind?
- bachmeier 6y agoThe same argument used to call a programmer an engineer could be applied to anyone that writes for a living, any doctor, any lawyer, well pretty much anyone. We're all "engineers" unless we're doing something completely mechanical.
- remmargorp64 6y agoAccording to the dictionary, an "engineer" is a person who designs, builds, or maintains engines, machines, or public works. A computer is a physical machine that runs programs which are encoded digitally on physical hardware (memory). I could see an argument for considering a computer program to be an engineered "machine" that runs on a turing-complete computational platform. Just because a computer program is digital doesn't mean that it's not an engineered mechanism. In fact, early computer programs did run on physical hardware in a physically mechanical manner. A doctor or lawer, on the other hand, is not building any type of machination. They are diagnosing patients and having arguments with judges. What exactly are they engineering?
- bachmeier 6y ago> According to the dictionary, an "engineer" is a person who designs, builds, or maintains engines, machines, or public works. That's exactly the point. Programmers write programs. They don't design engines, machines, or public works. Programmers are excluded from the very definition you're quoting. If you want to expand the definition to include the application of scientific methods to solve a problem, so that it includes someone that creates a Javascript single page web app, there's no way to exclude those other professions. Programs are not machines by any conventional use of the term.
- dumbfoundded 6y agohttps://ncees.org/engineering/pe/software/ https://ncees.org/engineering/pe/software/ You can become a licensed software engineer
- wyclif 6y ago"NCEES discontinued the PE Software exam after April 2019."
- dumbfoundded 6y agoTrue. Looks like only 81 people took it in 5 years. IEEE also seems to offer a certification. In any case, software engineering seems to be considered a legitimate engineering discipline.
- jeromegv 6y agoIn Canada you can't call yourself an engineer unless you studied engineering in university and went through licensing. It's not really enforced in tech, but for me the definition is someone who at the minimum studied an engineering degree. Calling yourself an engineer when you studied Computer Science is a bit odd to me.
- indiv0 6y agoI'm fully OK with the distinction because of the licensing process and strict requirements on engineer-certified work, but as someone with a CS degree from a Canadian university I can tell you with confidence that my friends in the software engineering pathway had probably 90% the same course load as I did. Really the only major difference at our university (IMO) was that they had a capstone project they did as a group and took two semesters, while mine was done individually and took one semester.
- ceejayoz 6y agoThe course load isn't the critical aspect, though, is it? Licensing typically means professional standards set by a licensing body, continuing education requirements, insurance/liability rules, etc.
- indiv0 6y agoAbsolutely, not disputing that. I just took offense to the "Calling yourself an engineer when you studied Computer Science is a bit odd to me" statement. I don't think the degree makes the difference, the licensing does.
- seemack 6y agoI don't believe you would be able to get the licensing without the degree so saying the degree doesn't make any difference doesn't seem accurate.
- lainga 6y agoIn my experience at UVic (6 months fresh) the CS students did more theory of computation, and SEng had formal requirements and specification writing, engineering economics, and project management courses that CS did not. And also yes, the capstone. So, those are the features which distinguish software big-E iron-ring engineering from computer science, in my mind. e: and yes, cf. the sibling comment, some of those courses were mandatory curricula set by The Professional Body Formerly Known As APEGBC (I forget what they're called now).
- HenryKissinger 6y agoNot the person you responded to, but my $0.02. Developer: codes websites and apps. Programmer: writes computer code. Encompasses developers. Engineer: builds bridges, rockets, cars, missiles, smart tvs, gaming consoles, computers, power stations, electric infrastructure, water treatment plants, etc.
- C1sc0cat 6y agoDesigns bridges :-) its the navvys that build them
- deleted 6y ago[deleted]
- theandrewbailey 6y agoDeveloper: builds subdivisions and "develops" real estate. Related: I've come across a handful of programmers that describe themselves as "contractors". So you hang drywall and install toilets?
- lmm 6y agoYou're a contractor if you work on contract. Just as you're a consultant if you consult. (I'm most comfortable with "developer" because that corresponds most closely to what what I do feels like. I don't spend so much of my time actually programming, but very little in software is engineering-like)
- deleted 6y ago[deleted]
- nck4222 6y agoIn my experience most people use them interchangeably with no distinction between them. The only time I've seen anyone show disdain for one term vs another is here on HN. I've never cared what people refer to me as, and I've never seen anyone voice a preference for it among people I've interacted with. I call myself a Software Engineer, because pretty much every job title I've had has used that term.
- monkpit 6y agoEngineers are typically required to have a license, have agreed to some code of ethics, and typically will have a membership in a professional organization. Like mechanical engineers and the SME, or electronic engineers and the IEEE.
- heisenbit 6y agoTrue in the US, not necessarily true elsewhere.
- rofws 6y agoThey're considered the same nowadays mostly because they've been doing overlapping jobs. Even worse, 'entrepreneur' is something that tells me absolutely nothing concrete about what the guy does. But to come to your point, in my mind - an engineer is the one who designs the software, a programmer is the one who actually writes good code to make that design a reality, and a developer is a blanket term for someone who does both (or more) jobs.
- remmargorp64 6y agoBut according to the dictionary, and engineer is a person who designs, builds, or maintains engines/machines/public works. An engineer isn't just someone who designs things... but also someone who builds and maintains them. Wouldn't that mean that even a lowly programmer who is just simply maintaining code is also an engineer?
- mikorym 6y agoEngineer: Someone qualified with a B Eng or equivalent. In some countries this requires a masters level as well. Programmer: A person who writes computer programs. I would personally also imply that the programs are typically not deployment of other programs, but this is my own view and not a standard definition. (Actually all of these are not standard definitions. At least, not anymore.) Developer: A web developer; A person who writes or deploys applications. In the web era I guess most developers have some inherent focus on the internet as a client interface. I would also add: Hacker: A person who likes to probe things until nothing jumps out anymore. (These days people call this a White Hat.) Cracker: A person who likes to probe things until nothing jumps out anymore. Then they probe some more where they really should not and the police get uneasy. (These days called a Black Hat.)
- umvi 6y ago"hacker"/"cracker" are terms only used/understood with nuance in the tech community. For the non-tech community: hacker = person committing computer crimes (black hat) cracker = a tasty snack (or, if you are in the American South, a contemptuous term for a white person) tinkerer = someone who tinkers around with stuff (what tech community traditionally called hacker as in hacker news)
- mikorym 6y agoThe top two are wrong. The concrete definitions are: Hacker: A programmer; someone who embodies the spirit of the programmer's way of thinking Cracker: A programmer that commits crimes by illegally breaking in to systems.
- fingerlocks 6y agoA programmer writes programs, but a developer writes applications? Really odd line to draw in the sand. If I build an iOS app that streams video to a webpage, am I developer or a programmer?
- mikorym 6y agoA developer is a type of programmer.
- decafninja 6y agoWhere did the term "software engineer" originate? The only anecdotal observation I had is that people in nontech, non SV companies use the term "developer". People in SV style tech companies use the term "engineer". YMMV. The line is blurring though, as I see the term "engineer" becoming more common in nontech companies too. Just like how leetcode interviews are spreading too.
- mcguire 6y agoBack in about 1970, various people realized that writing code was not the cakewalk in the park that everyone (who did electrical or mechanical engineering) thought it would be. See "software crisis". They decided that "we would have to get serious" about this whole software production thing. Some people like C.A.R. Hoare and Edsger Dijkstra said something to the effect of "formal logic..." to which the reply was, "Hol' up, there. That's too hard." They then assumed the term "software engineering" and went off in the '70s, '80s, and '90s to develop stuff like UML and the software engineeing lifecycle requirements -> code -> testing -> acceptance V-thing. For the cynical computer science programmery-type person such as myself, the end result seems to have been the software engineering degree, sort of a lite CS degree (just enough to be employable) with more project management and what-not. At least it's more comprehensive than information technology degrees.
- analog31 6y agoTruth be told, a lot of people with engineering degrees or titles are not doing any real quantitative engineering. Probably some sort of 80 20 rule in any field. Most "engineering" is just organizing and arranging things, fitting building blocks together. A lot of engineers stay "at the bench" just long enough to go into management. The people who keep their quantitative skills end up getting all of that kind of work.
- alistairSH 6y agoIMO, developer and programmer are the same. Engineer implies a higher level of skill WRT establishing and following processes designed to minimize risk. A software engineer, like their mechanical or civil equivalents, has a strong sense of duty WRT building things that are useful, safe, reproducible, etc. No doubt the line is gray. But, your stereotypical web app developer (failing fast while chasing a unicorn) is not an engineer. In the real world, I'd expect Boeing to employ many software engineers [insert 737 Max joke here]. Google and Apple would employ a mix of engineers and developers. And a company that builds CRUD apps on contract would be almost exclusively developers. All of this ignores the licensed engineer's opinion, which is often that none of us are engineers because we don't have to pass a licensing exam. And often don't even have to pass a particularly rigorous academic program.
- scarface74 6y agoNo doubt the line is gray. But, your stereotypical web app developer (failing fast while chasing a unicorn) is not an engineer. That could just as easily describe Google and it is full of “smart people” (tm)
- alistairSH 6y agoAnd I wouldn't call those developers engineers either. I said as much in the next line of my comment... Google and Apple would employ a mix of engineers and developers.
- mesaframe 6y agoSo, whom will you exactly call an engineer? A person with degree or a person with a specific set of skills? If skills, then can you enumerate few of them?
- alistairSH 6y agoGenerally, any licensed engineer (PE or non-US equivalent) would be an engineer. That usually means a proof of skills via professional exam. Somebody could have an engineering degree, but not be a practicing engineer at all. Of course, there is no PE for software. So, within our industry, it's a lot more squishy. There's a bit of "I know it when I see it" here... If you're building complex systems with an eye for reliability and/or safety, you might be an engineer. If you're just building a business/consumer app, using infrastructure and tooling that somebody else built and maintains, you might not be an engineer. With all that said, as a hiring manager, I'm not going to be hung up on what title you held at a previous job, as long as you appear capable of doing the job now. And my career has mostly been on the "just a developer" side of the line - there's nothing wrong with that. I'm simply not building software that has massive negative repercussions if I get it wrong (beyond impact on my employer's bottom line).
- toohotatopic 6y agoTo me, those are roles that describe different aspects of software creation. Depending on the job, those roles are needed in different proportions. Engineers apply math to create systems. Without Newton and his math there wouldn't be engineers or the other way round: engineers are those who create the stuff that is only possible with Newton's math. Since only few software needs math to that degree, rarely any software is developed by software engineers. Software developers on the other hand are like real estate developers. They don't build walls, they don't do structural analysis. Instead they combine systems. Unlike real estate developers, they mostly do the plumbing by themselves. Programmers are to engineers what words (Greek: grams) are to math. They focus on the language and care about expressing ideas in program code. Then there are also software designers and architects who care about the overall system structure.
- jkqwzsoo 6y ago> Software developers on the other hand are like real estate developers. They don't build walls, they don't do structural analysis. Instead they combine systems. Unlike real estate developers, they mostly do the plumbing by themselves. I like this analogy, because it confirms my personal biases/discomfort about web and app developing falling under the same umbrella of "engineering" as nuclear reactor design, missile guidance, and the worldwide chemical industry. However, to advocate against my biases, in my field (ChemE), most of the fundamental work has been done. Very few BS graduates in chemical engineering will design a distillation column or a chemical reactor. Again, most of the basic science and engineering has been figured out long ago (which is why most research ChemE looks more like chemical physics, molecular/systems biology, and materials science than reactors and unit operations). So, to an approximation, a chemical engineer won't "build" something. They'll stitch together components that were figured out a century ago. In fact, this was the entire point of "unit operations" -- black boxes that can be represented as a functional transformation on their inputs to produce outputs, and can be solved, quasi-linearly, to estimate the overall inputs and outputs of a chemical process. In that case, by the same analogy, they wouldn't be "chemical process engineers", but "chemical process developers". Yet I wouldn't suggest a chemical engineer who pulls correlations out of Perry's isn't really an "engineer", so with critical review, it's hard for me to justify a believe that somebody who stitches together APIs for a living isn't equivalently an engineer. [Edit: a relevant xkcd: https://xkcd.com/1988/ https://xkcd.com/1988/ -- Most engineering doesn't seem to be that different]
- yesenadam 6y agoI always thought calling programmers engineers was very weird until I watched this great talk: Real Software Engineering, Glenn Vanderburg, Lone Star Ruby 2010 https://www.youtube.com/watch?v=NP9AIUT9nos https://www.youtube.com/watch?v=NP9AIUT9nos which explains what various kinds of engineers actually do. Not at all dry and boring like it might sound! From the YouTube blurb: Software engineering as it's taught in universities simply doesn't work. It doesn't produce software systems of high quality, and it doesn't produce them for low cost. Sometimes, even when practiced rigorously, it doesn't produce systems at all. That's odd, because in every other field, the term "engineering" is reserved for methods that work. What then, does real software engineering look like?
- kyuudou 6y agoSounds like some of the cynicism behind Dijkstra's bit on software engineering[0] "A number of these phenomena have been bundled under the name "Software Engineering". As economics is known as "The Miserable Science", software engineering should be known as "The Doomed Discipline", doomed because it cannot even approach its goal since its goal is self-contradictory. Software engineering, of course, presents itself as another worthy cause, but that is eyewash: if you carefully read its literature and analyse what its devotees actually do, you will discover that software engineering has accepted as its charter "How to program if you cannot."." [0]https://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/EWD1036.html https://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/E... Edsger W. Dijkstra's "On the cruelty of really teaching computing science"
- yesenadam 6y agoI was very sceptical too, but when I watched it, it all sounded very common-sensical.
- walshemj 6y agoReally I recall working for one on the big civil consultancies and we had one of our bridges fall of its supports once. And lets not mention the new airport in Berlin (or the NYC tube lines) in the context of low cost.