Should Programmers Be Called Engineers? (theatlantic.com)
New submitter nervouscat writes: Game designer Ian Bogost argues that programmers shouldn't use the term "engineer" to describe themselves. He says the tech industry has "cheapened" the title, and that it's more aspirational than anything else. Quoting: "Traditional engineers are regulated, certified, and subject to apprenticeship and continuing education. Engineering claims an explicit responsibility to public safety and reliability, even if it doesn’t always deliver. ... Today’s computer systems pose individual and communal dangers that we’d never accept in more concrete structures like bridges, skyscrapers, power plants, and missile-defense systems. Apple’s iOS 9 update reportedly “bricked” certain phones, making them unusable. Services like Google Docs go down for mysterious reasons, leaving those whose work depends on them in a lurch. ... When it comes to skyscrapers and bridges and power plants and elevators and the like, engineering has been, and will continue to be, managed partly by professional standards, and partly by regulation around the expertise and duties of engineers. But fifty years’ worth of attempts to turn software development into a legitimate engineering practice have failed."
No
cheapen the title, greedy cultish universities did that.
I see people running around with their engineer title that are nothing more than technicians. We need technicians, but they don't need a four year bachelor's degree. That degree is just a way to transfer money from government loans into private profits via student debt.
I get the point, but the definition of Engineering makes no mention of "regulated, certified, and subject to apprenticeship".
Engineering:
1.the art or science of making practical application of the knowledge of pure sciences, as physics or chemistry, as in the construction of engines, bridges, buildings, mines, ships, and chemical plants.
2.the action, work, or profession of an engineer.
3.Digital Technology. the art or process of designing and programming computer systems: computer engineering;
software engineering.
Engineer:
1.a person trained and skilled in the design, construction, and use of engines or machines, or in any of various branches of engineering :
a mechanical engineer; a civil engineer.
5.Digital Technology. a person skilled in the design and programming of computer systems: a software engineer;
a web engineer.
I mean this comes up at least 4 times a year. I personally call myself High Codeomancer and have aliased all my shell commands to be different spells from popular fiction. It does make typing them out slower but you must suffer for your art.
There are a few I've worked with where I think the title of engineer would be fitting, but I've also met plenty where cowboy would be just as apt.
I think engineer was cheapened a bit before programmers adopted the title though. Back in school we had a "custodial engineer" that swept the floors.
+1. That about says it all. Then again, I'm a registered and licensed PE. I clearly have a bias.
I would argue against, purely on the grounds that use of engineering terminology lends credence to those who want to continue to apply for the software patents that are destroying creativity and continually threatening the FOSS community.
Software development is an act of creation more akin to writing music - it is a pure form of creativity and expression, not laying pipe.
The term "engineer" is historically flexible, as demonstrated by the fact that the large majority of engineers no longer have anything to do with steam engines.
If builders built buildings the way programmers wrote programs, the first woodpecker to come along would destroy civilization.
Any field with "science" in it's name isn't one.
etc., etc. I was hearing the same stuff when I was in grad school back in the 80's. Who cares?
Have you read my blog lately?
Not all programmes should be called engineers. Only some of them should.
Unlike law, medicine and traditional engineering fields, software development is completely unregulated with no real standard certifications (even a degree is optional). This is nice for letting skilled yet uncertified people into the field and allowing self-taught people to capitalize on their self-investment.
The IOT-craze will probably force us to take a second look at this as craptastic software will have an even greater influence on the tangible world and people that live in it.
Developers usually do not shoulder outward responsibility for the applications they write.
In Portugal the title "engineer" is subject to acreditation by the Order (much like medical doctors or lawyers) and not all students that complete an engineering school can use engineer as the professional title.
It's a distinction without a difference anyway, people mostly want to use "engineer" and "doctor" as a sign of status (replacing the old system of royal and noble ranks) while professionally it carries no difference at all.
I'm a mechanical engineer, and while continuing education is certainly necessary for the sake of both myself and the company that I do work for - I am not regulated in any way. It might be different if we did work with the government, but I have no requirement to be a Professional Engineer. I did sit for the test, but since no one at this entire company is certified there was no way to apprentice. Technically I could now sit for the test again and get the certification based on my work experience, but it is simply not worth my time or effort.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
And see if you get a letter from the board that regulates engineers.
Note that trash collectors call them selves sanitation engineers and stay-at-home parents are domestic engineers.
A programmer is a software construction worker.
It's easy, if someone designs a mechanism, he is no longer a programmer, he is a software engineer.
However amateur or inept.
The article mentions training as if it meant much and bridges didn't crumble and batteries didn't explode all the time all over the world.
10 little-endian boys went out to dine, a big-endian carp ate one, and then there were -246.
If they're already trained engineers developing code for engineering projects.
Yes, there's some sort of corporate exemption loophole where a company's "engineering laborers" don't have to be licensed, since the company accepts the responsibility for being sued for defects. On public projects there's still a licensed engineer who reviews and signs off on the final plans.
Next question.
Office drones anxious about their titles. Whatever.
back away from the distinction again and again. It's not programming vs not-programming, and it's not about building stuff in meatspace vs. building stuff in memory.
It's about public vs. private effects and risks. People who build stuff for backyards = not engineers. People who build stuff for the public square = engineers. People who build a bridge over their own stream themselves = not engineers. People who build a bridge over a public byway for heavy public use = engineers.
The same ought to be true in codingland. If you are building critical public infrastructure or software that many people must use in order to participate in society, then you should be licensed and bonded and held to higher standards. If you are building software that is for personal, private use, then this is not the case.
Note that I am talking about instance of execution, not instance of code. For example, MS Windows would not be "engineering" code because each instance of execution is private, while the code inside, say, a traffic lights system, aircraft control system, or automobile is "engineering" code because these instances of execution happen in public, with public effects. (If MS Windows was to be used to run, say, a battleship, then it ought to be a separate "engineered" version held to higher standards of scrutiny, professionalism, and liability.)
We don't certify and license people as engineers because they might touch wood and steel we think wood and steel are special or important, we certify and license people as engineers whose single instances of wood and steel construction will each touch (and possibly put at risk) many lives.
STOP . AMERICA . NOW
Ruby codez?
Not so much.
I have a degree in Computer Science, and worked as a code monkey for a lot of years. I also know people who are Engineers.
Where I live, engineer is a regulated word, part of a professional governing body (like doctors and lawyers), and which carries with it legal responsibilities and liabilities, and a minimum level of education.
In no way shape or form do programmers live up to the title of "Engineer". They do things which have commonality with engineering, but they are not Engineers.
There is no licensing, no accreditation, or professional body which oversees it.
In my experience, calling programmers (or most people in the tech field) "Engineers" does a real dis-service to people are really are engineers. It's just usually people looking to add fancy sounding words to their business cards.
Lost at C:>. Found at C.
I work on embedded software for medical devices. I'm an engineer. You seem butthurt that you're not.
Engineers write the worst code.
IT Delusions of grandeur aside, real Architects require even more years of apprenticeship, more gruelling certification and continuing education requirements, and more strict regulation than real Engineers.
I think the term was coopted for its ficticious glamour.
Why stop at Software Engineer? If you expropriating titles, why not take Software Physician? Software Attorney? Software Priest? Software Pilot? Software Mortician?
Yes, it's technical and detailed and takes lots of planning and training. So do other professions. But it's not the same training or methodology. They each have their own professional name. Software people need to create their own professional name.
Code monkey is pretty offensive. But Software Primate might fly. Just get the Software Pope to ordain you first.
The world is made by those who show up for the job.
You can't be a programmer and not keep up with technology. We're constantly learning new things.
I've only been programming since the late 90s and we've had NoSQL, Ajax, Spring, async programming, Node.js, python (while 90s era, it is now popular), cloud based web servers, etc. come up. Virtualization is back from the 90s and the 60s.
Things change all the time.
Look, 'software developers' are, to a large part, engineering software. They're making a machine, an engine designed for a specific purpose. I don't personally think MOST 'software engineers' qualify as actual engineers, they're neither bright enough nor especially forward thinking enough. But you're not going to hoist a regulatory body on an industry like software... we don't want it, and it won't help the industry. (Though, that's never stopped government before...)
The fact that so, so many software developers are shitty engineers is besides the point. There are many, many shitty "real" engineers out there, too. The difference is that the damage of a single bad software 'engineer' is negligible compared to the damage of a single bad real world engineer.
Knowing quite a few of both, I would say the biggest mindset difference between a software developer and an engineer is whether they're conservative or liberal. Software developers, for whatever reason, almost invariably seem to be very politically liberal, which I feel is the same mindset reflected in a lot of the disastrous "cleverness" so many developers inflict on people, but also in the ability to write extremely useful tools. Licensed engineers almost always seem to be fundamentally conservative (as are most good systems people), if not necessarily culturally or socially. Now, there are definitely exceptions to those rules, but for the most part they seem to be true - desire for pushing their own ideas, versus desires for order.
Now, there are definitely people in the field who should be called "engineers", though they're typically not developers. They're the ones who are finding design, implementation, or use case issues - and those disciplines almost never fall under an 'engineering' title. (Though, Senior Software Engineers or whatever are often doing this, as well.)
~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
When a building gets built, or a dam, or a pipeline, there's engineers, architects, brick layers, welders, and all sorts of other people involved.
When you do software, "programmers" is just a catch name all that could fit several of those archetypes -- the only thing you have to do to be a programmer is to actually code. But there certainly ARE software "Engineers" -- people whose job it is to make sure that everything the designers and programmers are individually putting together should _work_, and not fall apart, and survive in the actual ecosystem the code is released in.
Just like a good mechanical engineer shouldn't be above picking up a shovel or an acetylene torch now and again, if needed, even if it isn't still their forté, a good software engineer should probably be able to code, but that's not really their core purpose.
And as for "Engineering claims an explicit responsibility to public safety and reliability, even if it doesn’t always deliver"... next time someone fails to steal your identity on the internet, thank a programmer, a software engineer, and probably a computer scientist among others. Next time I don't die driving over a bridge I'll thank a few mechanical and civil engineers, as well as the workers that did their job putting it together.
If we want to be strict shouldn't the term "engineer" apply only to those people involved with the design, construction, operation, and maintenance of external-combustion steam-engines for use pulling large masses along doubled rails, and naval propulsion? I don't mind anyone calling themselves an engineer, so long as they don't defraud someone about their abilities for the purpose of selling them a bill of goods. And this from an engineer having two engineering degrees from major state universities.
~Loyal
I aim to misbehave.
It can be illegal to hold yourself out as or use the title "engineer" unless you have a PE (professional engineers) license.
Microsoft and Novell ran into this in the 1990s when they had certification programs with the term "engineer" in the title. Nevada changed their law to allow it, and there were mixed results in other states.
Stop blaming the words. If your title has lost it's sheen, then perhaps it's you who's tarnished it. An while we're at it, IT guys - please stop calling yourselves architects. It's silly.
*Anybody* can write code, which makes them a programmer, much like anybody can do their own plumbing or electrical work. That does not make them qualified to do so or particularly good at it. Most aren't, at least in my experience.
Being an actual engineer implies some level of skill and expertise / training that is generally agreed up and recognized by the world at large.
Either define CS as a focus for electrical engineers or put it under mathematics, but CS was never its own engineering discipline.
I'm a dinosaur in the industry. In the past we quite happily wrote 99% of our code from sratch. At the place I work at now, such practices are looked down upon, and they'd much rather we download/bought a 3rd party library and made calls against that.
Nothing new here, move along... We've been debating this for most of my 35 year professional career.
(Personally, I'm in favor of distinguishing 'software engineers' from 'programmers', and licensing 'software engineers' -as a means to establish professional liability.- But I can assure you that very few companies are interested in the idea of liability for software products. Nor are they interested in paying the substantial costs for professional liability insurance.)
I also agree that the answer is no.
However, engineers who program should be called engineers.
How often do you see an aircraft crash due to a software glitch? How about the software in power plants? Software is in everything and the level of regulation and certification depends on the software application. Who cares if Facebook goes down for an hour or your phone turns off, I don't think new features in Facebook need certified software.
In the US we have "engineers" and then we have "Professional Engineers (PE)". PEs are regulated in the usual US way - the certification and regulation is provided by the professional organization, but the state governments generally require certification in order to do certain types of things or to offer your services to the general public. Almost every civil engineer that I know is a PE. Every mechanical engineer that I know who works in the building trade is certified. However, the vast majority of engineers who simply design or manufacture stuff are not certified unless they have some specific reason to go through the hassle.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
Police Officer: "Are you classified as engineer?"
U2xhc2hkb3QgU3Vja3M: "Negative, I am a web monkey."
Fight for your bitcoins!
No
It's a mote point. No matter what the opinion, the word Engineer is commonly included in computer related position titles (programming, networking, etc.) by companies, hiring agents, in normal conversation, etc. Once a new meaning for a word has entered the common vernacular it's near impossible to pull it back...
Are you actually doing engineering work? Scoping out and building a system? If so calling yourself just a "programmer" may cheapen the scope of work you do. Moreover, the author points to huge software failures as examples of things that won't happen in Engineering, but bridges and buildings collapse too, trains derail, car designs turn out to be duds or unsafe, etc. Plenty of what the author defines as "real" engineering has run into the same problems he highlights in software. The author, frankly, seems to have a beef with software as a concept, and a problem understanding its role in the modern world. To answer the post title though: not all programming is engineering, but there is plenty of programming that is.
"goodbye and hello, as always" ~Prince Corwin, from Zelazny's Amber series
OK. So follow this through logically for a moment.
Engineering - Professional Engineers - is a tightly defined field, and is primarily required by government works. There are standards and specifications to which things must be built, based on known material strengths and capabilities.
If it is exploratory work, it's not engineering, it's science. No PE is going to sign off on "clean room" type materials which haven't been subjected to a battery of tests. The materials available for common structural construction are fairly static and change very, very slowly - it's merely in how they're assembled which really changes, but their properties and interactions are largely static.
Consider how that doesn't apply to software, at all. And even if it did, how exactly are you going to scope the exams for being eligible to design a steering servo's control software? Whereas you need a single PE for a bridge design, sometimes a couple depending on the size of the project, the code for that steering servo is going to be reviewed by a team of software people. It's a very different approach.
~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
That is such nonsense. Bridges and sky scrapers collapse all the time and also get closed for maintenance for hour and even days at a time. Most high end software will service far far more people in its lifetime than the Golden Gate Bridge or twin towers, with probably less downtime. Where is the differences? Accountability? Following iso standards? We have and do all that. If you want to code for governance or for the financial sector , obviously depending on what you're coding, you can't touch an editor without certification. FYI info I myself have done civil engineering without any education or apprenticeship.. I've built a bridge on a farm , a medium sized bottling line and a zink smelter and molding assembly ...
I believe only civil engineers have those requirements. I know a lot of people who design all kinds of things and none of them are licensed. That ranges from every day products to cars to people who have moved on to SpaceX. But yes, if you want to design a bridge you're going to be required to have certain credentials. Does that mean none of the other people doing engineering work are engineers? I think they are. Does that extend to software? IDK, does it matter?
Yes, but only if you have at least a BS in computer programming and have taken software engineering.
The key point to engineering in this context is not that you know how to program, but that you understand the process of creating programs. Engineering is more than just desiging a product, it is designing the designing of a product.
In the world of hardware and manufacturing, engineering designs a product not just with respect to end use or replacement, but with respect to manufacturing -- just how do we fit these parts together? We must engineer an assembly line for it, costs, routing, etc.
Engineering is a lot more than hacking together stuff until it works.
In that sense, very little of what progammers do is real engineering, at least on small products and apps.
If you've ever run into poorly-commented source code, or lack of coding standards, that's poor software engineering.
If you've ever run into source code that is hard to expand or change, that is poor software engineering. Especially stuff that is already spaghetti code. It is 50 years since programmers could claim, "Gosh, we built it to do one thing, and not forsee expansion."
If you have worked on a large project with many platforms, and every 3 years systems people introduce yet another Greatest Framework For All Time, requiring massive rewrites, that is poor software engineering.
Because "manufacturing" amounts to doing a new release in most cases, or server restarts or reflashing in the worst case, there isn't really any assembly line engineering. But even then you must consider not destroying saved data of customers (I once had an idiot from Game Spy say "tuff shit" to me when a release update destroyed a saved game file. "Didn't you read (some fine point somewhere)?"
That is poor software engineering. That won't work with a million customers.
(-1: Post disagrees with my already-settled worldview) is not a valid mod option.
I'll leave regulation for the engineers and automotive firmware developers. I'm upgrading my title to software physician so I can claim that I "practice" software development and don't incur any liability.
When are programmers calling themselves engineers?
Is it to impress the ladies?
I don't see any gain of calling oneself programmer, developer, engineer or even an architect. Anybody is able to see through all that.
Software today isn't reliable, WAAAAHHH!!!!!
SJW's don't eliminate discrimination. They just expropriate it for themselves.
If in construction engineering, a single misplaced screw could the demolishion of an entire building, we'd still be living in caves.
If, however, in software engineering a single misplaces screw causes minor inconvenience, all of a sudden we shouldn't be allowed to call it engineering.
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
How many construction engineers expect a person to take a sludge hammer to the walls and then be told that their building sucks? Or have many elevator engineers expect a user to remove the control panel fuck up all the cabling and then be told they way they installed the elevator was crap? Developers get this stuff all of the time, end users sometimes use things in ways that are completely f-ing stupid. Consider someone taking a sledge hammer to your dry wall the next time you tell someone their code sucks.
Bogost is a little SJW botch and I don't ant to hear his bullshit opinion on odds and their meanings
Overlooked by the author: power plants, and missile-defense systems both are entirely run by software. Bridges, skyscrapers, power plants, and missile-defense systems are all designed in software.
"No" is good enough for a short answer.
It is conceivable that at some future time, some code might be produced by folks using a more rigorous and less haphazard process than that used by most programmers today. Maybe that'd qualify as engineering.
But I have some doubts that the code would be any better and I'm pretty sure that writing it would be slow, tedious, expensive, and not much fun.
You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
Because it pisses off the insecure people who whine about this.
The whole "engineer" requires licensure thing is a recent invention and is mostly for people to puff up their status, much like lawyers trying to make "esquire" happen. They already have a title, "Professional Engineer", and they can stick "PE" on the end of their names all they want, and no one else is allowed to.
"Engineer" is a common word they don't and will never own, at least not in the United States.
I encountered continually in Silicon Valley.
one way of doing things is sinful, and another is whatever Apple says to do.
never minded the best argumentation often does not match what Apple says do...
As somebody who took Software Engineering in university, I would have to say that most programmers, myself included, are not working as software engineers.
There's a lot of software that definitely should take more of an engineering approach. Things like vehicle control systems and systems that handle financial data.
Other things like games on the other hand, probably don't need to be "engineered" and would probably be a lot more expensive if we required them to jump through a lot of hoops to be certified by engineers. A lot of games have even resorted to using bugs or undocumented features in a system in order to get the game to run fast enough.
I think a lot of the problems with engineering computer systems is that there are simply too many variables which can't be accounted for in most systems. Is your program expected to run correctly when the memory is faulty. Can't you even have engineered software running on a system which doesn't have ECC RAM? Can you really be sure that your software will operate correctly when it's running on an operating system that you have no control over?
Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
It's succinct, accurate and descriptive. It allows one to distinguish design from implementation (same as engineering vs. programming) but without raising the same same questions as the term "software engineer". Related would be "Software Tester", "Software Designer", etc.
Want shorter or different options? What about
- Technologist: maybe a bit generic, but most people think computers anyway when they hear "technology"
- Information Technologist: longer but more explicit
- Informaticist: Not common to call it informatics in English, but I could see it catching on eventually
same, but rather that the needs and purposes that lead to the title are the same. The standards will have to be different (appropriate to the materials, practices, etc. of the field), but the reason for the standards is nonetheless clear: code that the public relies upon must serve the public responsibly, and the public has an interest in ensuring that this is so.
In private, for code whose execution instances will only affect one individual or family at a time, people are free to use Visual Basic code written by copying and pasting from Google searches if that's what they prefer.
STOP . AMERICA . NOW
Which is exactly why non-traditional engineers developing software have progressed so much more quickly than other engineering disciplines.
"But fifty years' worth of attempts to turn software development into a legitimate engineering practice have failed."
Nobody has really tried to do this: There's more money to be made by keeping programmers as fungible low-level serfs and pumping out piles of "good enough" code, so all the pressure is against the creation of a proper professional practice.
Why are engineers professional? Because the failures in the past of unprofessional engineers killed a lot of people. (I'm thinking pre-Brunel, not recently.) So societal pressure pushed engineers to self regulate and/or be regulated, and that pressure forced a profession to emerge.
When a LOT of people start dying from bad software, then you'll see people wake up to the dangers: Hopefully you'll see a grassroots push to start to force liability on the producers of software and see some heads roll. That may lead to a push to regulate and control the standards that software needs to meet, and that may lead to some sort of professional software and ITSec organisation that will serve to raise the devs above serfdom and into a professional practice.
IMHO, Linus Torvalds is a heck of a lot closer to a "software professional" than anyone at Microsoft.
(If you take my tone as being critical of engineers, don't. I have the highest respect for engineers and I only wish that software developers and IT security people had the same level of professionalism!)
Sometimes the "writing on the wall" is blood spatter...
No, they should not.
I have both an engineering and a computer science undergrad degree, and the CS degree was obtained back before CS got dumbed down in American universities. The people coming out of CS programs today are (on average I mean, not 100% of the time) much less exposed to anything low level, and often have no idea how the computer actually works down at the transistor level since their curriculum never required designing parts of a CPU from transistors. Sometimes, they've never even written an assembly language program before! That you can obtain a CS degree without doing that is absolutely astonishing - it's like turning out a doctor who never took gross anatomy. It shows clearly in their high level code: they write it without understanding what the machine is doing with it. Anything below their Java API is "magic". Not all are like that, but the majority are.
Anyway point is my CS degree was obtained back when all that was required. Even at that, the engineering degree was vastly more difficult and rigorous than the CS degree. Maybe 5 times as hard, with much heavier math, and much more complex treatment of subjects. Kids who started in engineering and couldn't hack it would "wash out" to computer science, and if you couldn't hack it in CS, you'd wash out to the one of the art-history type humanities degrees.
I don't think comp-sci graduates have any right at all to call themselves engineers, any more than someone who knows first aid can call themselves a doctor.
There is no concept of professional licensing for programmers, so there is no legal justification for this.
Also, programming is not an applied science, so there is no philosophical reason for this.
How many years did it take building huts to become civil engineering?
Call me back after that amount of time and we'll see whether it's software engineering yet.
Natural languages are riddle with ambiguities and bigotry and the word 'engineer' does appear to ambiguous in its usage. So I suppose it doesn't really matter if you call programmers engineers or not.
Here a test. If somebody from X works in area Y, would you be willing to call him Y? Let's check:
1. An engineer works as a programmer. Is he a programmer? YES
2. A programmer who by some freak accident works as an engineer? Is he an engineer? NO (I don't want to die.)
3. Is a mathematician who ends up in a university's philosophy department a philosopher? YES, why not.
4. Is a philosopher who ends up in a mathematics department a mathematician? UNDECIDED (hasn't happen so far)
5. Is a surgeon who works as a natural health professional a natural health professional? YES
6. Is a natural health professional who (pretends to) work as a surgeon a surgeon? NO, not in my book. (I don't want to die.)
.
.
.
You get the gist.
As a 'real' engineer (BS and MS from Engineering programs in accredited schools) who spends much of his time programming, I have to say the answer is no. Programming is different than engineering on many levels. There may be overlap in some areas, but you could say that about any two disparate fields of study. Programmers calling themselves Engineers just cheapens the perception of both fields. I've never heard of any lack of respect for programmers in general, maybe I just don't get out enough? I personally haven't come across any programmers calling themselves engineers, is this just an issue in Silicon Valley?
I agree that it shouldn't be called "engineering" or "science", but not because government doesn't regulate it. Software development isn't science or engineering because it's not precise like science or engineering. In science, there is usually exactly one right answer. In engineering, there may be multiple solutions to a problem but they are all measurable, precise, and directly comparable. In software development, however, there can be many different solutions and they aren't necessarily precise or comparable. If science is 100% science, and enginerring is 80% science / 20% art, software development would have to be no more than 50% science, possibly even more art than science. With that said, the closer you get to the bare metal, the more science. The farther, the less science.
The fact that government doesn't regulate software development is probably more a consequence of software development being only half science, and therefore only half precise. There are just too many roads to Dublin in software development.
It's a mote point.
It's also a moot point!
#DeleteChrome
I've seen this evolve over the years.
From what I have seen it came about because companies are slow to adapt to changes. As such they have a hard time justifying larger salaries for Programmer or Systems Admin. Especially when the person in question has lots of experience.
As such they began attaching "Engineer" and "Architect" to the titles as these words allow them to distinguish the knowledgeable and experienced programmer or admin from the rest and allow them to justify the higher salary.
So it is more a PHB thing than anything else. Personally I dont care what the title is, call me the "OSS SME" or call me the "Asshole who decides what we use" As long as the pay is right.
mote point?
At least a moat point is a place near water.
As far I can see, engineers around me are all using a computer and even an ugly software (even several) to compute all their stuff, to write some physical, dynamical models. And know what ? all those softwares have been written by several developers, are they all aware of this ??? shouldn't they use slide rule, a pen and a paper ? to simulate the behavior of all their stuff.
While in general the definition of engineering applies to programmers, as practitioners of mathematics and science, I would agree the more excepted definition of building physical things is more appropriate. As such, programmers are not really engineers. I always describe myself as software developer, not software engineer.
Brilliance without wisdom, power without conscience. Ours is a world of nuclear giants and ethical infants.
Engineers deal with real problems in real life which require real knowledge of real science. Programmers just play with code.
In Canada, it's not so much a matter of programs "should not" as "must not" call themselves "engineers". The terms "engineer" and "engineering" are legally protected in all jurisdictions in Canada, much like the terms "lawyer", "medical doctor", etc.
Programmers who are not licensed professional engineers may not call themselves engineers. The computer science and computer/software/electrical/systems engineering programs at Canadian universities are very different. The engineering programs are accredited at the national level (http://www.engineerscanada.ca/accreditation-resources) to ensure a minimum standard of education for the practice of engineering. There are also post-graduation examination(s) and internship requirements (typically 4 years) prior to licensing. There is no such accreditation for non-engineering programming/related programs.
Further, programmers who are not licensed professional engineers may not do the work of engineers, even if they don't use the term. Many companies have trouble with this one. The definition of what constitutes engineering work can be found here: http://www.peo.on.ca/index.php... - For example, a programmer who is not a licensed professional engineer may not design the software controlling a self-driving car because life and safety are at risk.
Laws & regulations: (For Ontario, but similar in all Canadian provinces/territories): http://www.ontario.ca/laws/sta... & http://www.ontario.ca/laws/reg...
I've done software engineering in the past. It was slow and expensive, parts of it were tedious, and parts -- particularly fallout from the fact that (fairly) rigorous software engineering is rarely done -- involved more hassle than they should have been. Even at that job, most of what I did was more traditional software development than engineering, and all my other software-developing jobs have been far from the level of rigor and care that I would call engineering.
However, when I did software engineering, with clearly defined requirements and interfaces, with an explicit architecture and functional decomposition of the software, with carefully planned and executed verification and validation, the results were definitely higher quality than you would get from less time- and labor-intensive methods. Most of the time, cheaper methods are acceptable and worth the increased chance of defects. Flight systems, healthcare, other safety-critical systems, and financial computing usually, and justifiably, prefer to pay for more rigor and higher quality.
The problem is that the field of software engineering is in a constant state of flux and overloaded with various approaches. Every few years there is a new big language, or framework, or methodology. Few, if any, can truly keep up with it all. So, with a few exceptions (e.g. c/c++), it is nearly impossible to qualify/certify the job. It would be like testing an actor on a single role, which he/she might never play again.
I think your industry would do well to create a vetting system that established core competencies for professional software engineers. Anyone so established via education, training, and testing would be distinguished from the large mass of us who hack evenings and weekends and who really shouldn't be entrusted with protecting the health, safety, and welfare of the general public.
Licensure is authority established via the government, usually each individual state. There can be reciprocity between them, but the it certainly isn't a job or social title. Doctors, lawyers, nurses, accountants, and architects are all professional in the powers vested by the state.
Lest ye protest, that's the way it has been for ages with building engineers who design plumbing, mechanical, electrical, and civil realms in our physical environment. Why should the software components get an exception? Why wouldn't those of you who are actually competent want to establish a base level of expertise that helps sort this for the rest of us a bit?
My own industry of architecture is the same. You can't call yourself an architect unless you meet the requirements of the licensing board, about 10 years education, training, and seven tests (recently changed from nine). Of course, you software guys have been trying to abscond with the term for decades, even as a verb, but it is a self-proclaimed title and means nothing because there isn't any vetting. I'd be fine sharing it if it actually implied both the comprehensive design nature of what architecture means and professional licensure, but it will always produce an eye roll from those few of us who have been through the decade of sleepless nights and rigorous vetting to be a real one.
There is no need to use a SlashDot sig for SEO...
Where did you get these definitions?
Only when they have to take a test to be certified as a Software Engineer and then are held legally liable for their mistakes.
When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
The problem from a usage standpoint is the "cat's out of the bag" kind of like the term hacker. Common usage has deviated from the original or narrower definitions and unlikely to be reset. I would use Certified Engineer or Licensed Engineer or other term if someone was actually had qualifications that came through legally approved testing. Part of the problem is "programmer" back in the day was lumped with "old" Mainframe / Data Processing (totally uncool of course even way back) so all of us who started later tended to use terms like Software Developer and even companies started using Software Engineer back in the 80's frequently. Of course the most abused one I've encountered is using Systems Engineer in a lot of places for pre-sales/ technical types who just do a lot of different stuff and so the development team could feel special ;-) In fact back in the 80's when I worked at Motorola a software engineer title got you on a pay scale that was higher per grade then "regular' engineering pay grades (not saying its right but it did reflect market forces at the time).
Engineer doesn't necessarily have to mean "Someone with professional certification who performs a task in a pre-designated method begat wholly by one's predecessors."
The more general definition is simply "creator of systems".
More to the point, we do have professional certifications, we have professional societies, and while we may not be represented by a national-level federation with standardized capabilities, we still present a much-in-demand skillset at a variety of levels. If I had to guess, I'd say that the engineering certifications are themselves simply a relic of the times; one part hold-over from when unions were necessary plus one part CYA legal protection via standardized best practices. These are two things that are (not yet) needed in the software development world, and I can't see the former ever being relevant.
Additionally, as engineer itself is not a protected term like Dentist, or Doctor, anyone can use it. In the US, the best you could says is that you're a NCEES certified engineer, but that's not a requirement to work as an engineer, nor to claim that you are one. In fact, most states have their own requirements beyond the NCEES, and you couldn't claim to be a licensed engineer without meeting /those/ requirements. Or in other words, there's various licensing and certification bodies out there, with different goals, requirements, and levels of measure. Just like there are for programmers ...
All that being said, I actually prefer the term Software Developer or Software Programmer. Not for any of the reasons listed in the article why we're not engineers, rather, I just think Developer or Programmer are more accurate terms. Though I detest the term the author coined, "Engineerwashing*," I agree with his list of motivations why it is used. It's basically to make it seem fancier, neater, more professional. It's what I put on my resume because it's a better match for job postings than developer or god forbid, programmer now-a-days.
Then again, I liked the original definition of the term "hacker," and only recently have stopped correcting people by saying, "You mean "Cracker," right?" when they used it in the more modern form. I get it. We're not France though - language is a continually evolving thing, and you've got to keep up with the times.
The fact is, we're now all Software Engineers. That's what we do is called now.
I did this. They called. They have a *lot* of lawyers (that's all they have), and they absolutely don't want people passing themselves off as structural engineers without the right certs (and memberships). My explanation resembled the parent of this thread and they were not amused.
I had to change my company name.
I am not interested in articles about life extension advancements.
But software engineering is a real discipline and something that exists. It is also something distinctly different from computer science, as the relationship between computer science and software engineering is one that is identical to that to other scientists like physicists and material scientists to mechanical, structural, and aerospace engineers.
The problem is having somebody who has read a book about Visual Basic or taken a two week certification course and then is proclaimed "an engineer"... which is the furthest from what a real engineer actually does.Actual engineering is something that is learned gradually over time and really does require mentorship, apprentices, and many of the things described in this article. The regulation and the other bullshit that comes with compliance to governments is something that can be left out, but is already sadly a major part of software engineering anyway if you want to be truthful. A proper software engineer will understand not only the coding part, but will also know the legal and moral limits of what it is that they are doing as well and be responsible with what they are doing.
As for the data breeches and software failures that were mentioned in the article, that is a pure sign of somebody who was not doing their job, and using tools and I dare say operating systems that are simply not up to the task. Proper software engineering takes a look at everything, including the full software stack going from the BIOS to what the end user is directly experiencing with a user interface and understanding in depth that whole software stack too. Sadly that isn't something taught in most universities any more and definitely can't be picked up by a hobbyist programmer without a whole lot of effort either. If you can't code an assembler or compiler and make that whole software stack from scratch, you shouldn't call yourself a software engineer. I'm not saying you should necessarily ignore existing software nor constantly reinventing the wheel, but it is the level of skill and knowledge that you should have to be considered competent.
On the other hand, those capable of such tasks and doing so in a full time professional manner, that can intelligently communicate with other engineers in other engineering disciplines and make their products (the stuff made by other engineers doing something other than developing software) a whole lot better, they legitimately can be called properly engineers. I will even go so far as to say the worst kind of software developers I've met are electrical engineers who have moved over to the software side of things and don't know that software engineering is its own discipline with its own standards and ideas separate and independent from building gates or power supplies. A few electrical engineers get that it is a new discipline separate from the one they were trained in doing, and can certainly grow into competent software engineers in their own right as they really do understand computer hardware from the ground up. None the less, even these "proper" engineers going into software development need to realize they have gaps in their education.
I would agree that perhaps some companies need to restrict the use of the title "software engineer" to perhaps fewer people than is typical done in the industry. I particularly hate the use of "network engineer" unless there is some actual engineering processing involved in something like that too. What definitely needs to go is the specialized certification like "Microsoft Certified Engineer", unless Microsoft is actually running a real engineering school that is itself accredited. The two week wonder courses particularly shouldn't be using the term at all or calling those who complete such courses anything approaching the term "engineer".
I'm an artist, should I call myself a pixel engineer? No. This is all part of the "everyone is special" society. Only problem, once everyone is special, no one is. Just more stupidity from a shallow, self absorbed culture.
My teeth are crooked and some of them are missing, my truck is rusty, my house unfinished, my desk a mess. I'm only special to my wife and son, and you know what? I'm perfectly fine with that. I do my job, I pay my bills, I spend as much time with my family as I can. Why the f^(k cares what word people use to describe my profession.
The construction industry has been around for thousands of years. Software Development? Little more than fifty. Software Development will reach the same level of rigor that is applied to other engineering fields, and will reach it in far less time than those other fields took.
--- Generation X: The first generation to have SIG lines inferior to their parents... ---
A constructor of military engines:
http://www.etymonline.com/index.php?term=engineer
In product development there is typically cross-disciplinary work between mechanical engineers (designing the housing to specifications), electrical engineers (designing electronics to fit a mechanical housing), and team members who design and develop code to orchestrate the operation of the product. Such individuals are typically called embedded or firmware engineers. Especially in heavily regulated industries (life safety, avionics, medical devices) the development process is as much about the architecture and internal redundancy and reliability of the firmware as it is simple implementation.
Based on the above, I propose that a "Software Engineer" or "Software Architect" is someone who must follow a process including requirements gathering and designing for quality. They must specify the system architecture rather than simply hack together code as a design "method". A "Programmer" is someone who implements the code per the established architecture. This is analogous to construction. You have civil engineers and architects, and you have construction workers. The distinction is clear. You cannot downgrade the entire software profession to "programmer" when you consider this analogy. This would be like saying that everyone involved in developing buildings should be called a "construction worker".
Unfortunately, the software profession is not as good about making the distinction in skill level and experience as they should be. This leads to programmers in software engineering roles. This leads to the highly publicized failures. If a construction worker fills in for an architect, the results would be similar.
I think rather than worry about titles, we should be worrying about matching skill level to various software roles.
I am an Electrical Engineer (P.Eng., FEC) One of my friends has a B.Eng. in Software Engineering. Yes, you can get an engineering degree in software.
I've done a lot of programming and seen a lot of code and frankly, most of the people that say they can code are fucking awful at it. I've written a lot of embedded code, and the stuff I've worked on is still running more than ten years after the last set of human eyes looked at the repository. Realistically, every business that does programming should be required to have someone on staff to sign off on it.
Sure, we can make some exceptions for console gaming where it's not important. If you've got the potential to brick people's phones or banking machines, then someone should be taking professional responsibility for the work.
---
ECHELON is a government program to find words like bomb, jihad, plutonium, assassinate, and anarchy.
Unlike law, medicine and traditional engineering fields, software development is completely unregulated with no real standard certifications (even a degree is optional).
Medicine is regulated?!?
Then why do I have to search among so many bad doctors to find a good one (obviously: regulations are not weeding out the bad ones)?
And why, when I take my body to the doctor, most of the time it feels like I'm taking my card to the automotive department at Sears?
In the USA in many instances titles like Engineer and Architect are required to be licensed. They can sign-off on certain designs where other "elitist accredited/certified" people cannot legally do so.
No.
And some of the programmers I know shouldn't even be called programmers.
An engineer actually designs and builds something in the real world to solve a real world problem. My concern is the overuse of the word engineer. I'm also against the terms network engineer, server engineer, and storage engineer. I'm fine calling them designers but my idea of an engineer is someone that develops a cleaner diesel engine or finds a way to make a product safer or more effective.
I support the motion of *not* calling programmers as engineers.
Starting from the academic point of view, engineering curriculum is far more different than a CS. General undergraduate engineering course comes with number of core modules with the purpose of teaching basic "Engineering Concepts". Furthermore, engineering courses are focused towards "skills training" by range of hands-on laboratory classes, design projects, team projects etc, to learn skills such as see the big picture, learn how to operate instruments, safety, planning etc.; which are a must to function as a professional engineer in industry. Then once in the trade, engineers generally become a member of a professional body e.g. IEEE, IEE, etc. and they are sworn to obey their code of conducts.
Switching gears to my personal story, I trained as an electrical & computer engineer. After a stint in telecommunications industry, I went on to work in web development. I was quite appalled by the way "programmers" think and execute projects in general.
When I worked in the telecoms, I observed that engineers spend quite a long phase in planning before actual execution. In the process, they have to comply range of regulations on telecoms, environment, etc.; and not to forget other concerns such as the commercial interests, backup plans, future expansions, long terms sustainability, maintainability etc. Overall, they consider the "big picture" and do not bog down with just the technical aspect. When it comes to execution, it is generally smooth and trouble free (usually there is a research & trial period before actual execution). Overall, I've seen much more customer orientation and long term view in engineering firms.
When I worked for the software house, planning was considered a "waste of time" (and not to mention, practises like Agile are generally up the anti). And most often or not, you build the roof of the house before the foundation, then figure out how to connect two of them. By and large, there was poor customer orientation. And most damaging of all, lack of concern or thought on long term view of the project and its outcome. I've lived through many cycles of delivering half-baked solutions to client and milking them on the long run to fix those solutions (and in the worst case scenario, making client go bust). If it is a proper engineering firm, they will be sued for such kind of misconduct for sure.
Just my 2 cents.
The term he's looking for may be "Professional Engineer".
They've made a society for that where that collects money and give you a test that most people pass.
You don't get to tell people they are not an engineer just because it doesn't mean an all that you want it too.
If I'm working with engineers to build a device, they are not engineering while they're troubleshooting embedded circuits yet not engineering while they're troubleshooting embedded code. Nor are the application people who are using their code on the same compiler crossing a threshold into non-engineering. We're all creating a system that will generate a specific type of output based on an input, trying to balance resource restraints to meet some form of requirements. The risk of failure of any system is a part of that equation. The risk of failure of a game is different than the risk of failure of a missile-defense system.
An Engineer who is certified is a Professional Engineer. An Engineer who is not certified is an Engineer. There are certainly Project Managers who are not PMP certified. That doesn't mean they can't do they job. If they are certified that means they have a statistically better chance of being able to do the job, but it also doesn't mean they can do the job.
If your company has given you the title Engineer, then you are an Engineer. If you graduated from the Engineering College of your university, then you are an Engineer. If you feel like calling yourself an Engineer, then you are an Engineer, but if you do a sucky job, then other Engineers are going to be pissed.
If you are not allowed to question your government then the government has answered your question.
Yep. We wouldn't let self-proclaimed civil engineers build bridges.
Why do we let self-proclaimed programmers write important software?
No sig today...
This Ian Bogost?
https://en.wikipedia.org/wiki/...
"He holds a joint professorship in the School of Literature, Media, and Communication and in Interactive Computing in the College of Computing at the Georgia Institute of Technology, where he is the Ivan Allen College of Liberal Arts Distinguished Chair in Media Studies"
"Bogost received his bachelor's in Philosophy and Comparative Literature from the University of Southern California in 1998. He then went on to get his masters in Comparative Literature from the University of California, Los Angeles (UCLA) in 2001, and received his doctorate in Comparative Literature from UCLA in 2008.[3]"
Ahh... a liberal arts major telling us with STEM degrees what an engineer should be...
when do I get my train?
Software people are much closer to architects than engineers. The work falls much closer to the creative artistic than the applied physics that is the hallmark of engineering. But like traditional architects they work in a medium that requires consideration of human factors and laws of nature, just mathematical laws in the software case more than physical. Unfortunately the Software Architect title usually only falls to the person in charge of the top level overall design, when in fact the developers are also architecting their individual pieces. I think that the current industrial goal is to move those people actually doing the coding to the position that a civil engineer working with an architect has, but I think that is misguided.
Programming, by itself, is a technician skill. It's possible to be what I'd call a Software Engineer (NOT necessarily congruent to what the job descriptions for that title currently say). But just like Engineers in other fields have folks who help with the grunt work without having to think of larger issues, there are plenty of folks who turn out code to assist people doing the actual Engineering side of the work. There are also plenty of times that Engineers do the technician stuff and the engineering side (and I'd argue that to stay good at the engineering side it's healthy to do the tech side of your profession regularly).
Aside:
Part of what is wrong with the industry is that the people assigned to do the Engineering side of the work are often idiots or non-existant, as the role is often poorly identified and assigned. You might for example having PHBs making what should be Engineering decisions. And it falls to Programmers to fill in the holes, or the project fails. Or both. This blurs the line more than in a lot of other fields.
"wah, wah... someone's using my precious job title and I'm not special anymore". Grow up.
People say they "built" their computers, I would say "assemble" would be more appropriate, but we all know what is involved so who really cares.
I had and electronics and software consulting practice for 10 years.
To be legal, I jumped through the hoops and got a PE.
It was an fun exercise involving classes, 2 days of tests, and references from other PE's.
To keep the PE required continuing education, which was available in name only.
The job required learning new stuff every day, but that did not count.
What did count was useless, except for keeping the PE.
After awhile, I noticed that none of my customers cared, so I let it lapse.
The answer to the question is complicated.
The PE's have a monopoly on the word.
This is to protect the public by requiring engineering work to be certified by a responsible engineer.
In theory, it seems like a great deal of software used by the public might benefit from this process.
It would give the developer more clout in choosing good versus quick.
In practice, I think it would either just be a relief system for lawyers, or an unacceptable drag on innovation.
Since the PE's don't seem to have a useful use for the term, I think that yes, the term should be up for grabs.
The PE's probably should resort to preserving the term 'Professional Engineer',
PS: This whole issue is separate from the idea of 'Software Engineering' which sometimes seems yet another wasteland.
Move along; nothing to see here.
It's just another person who thinks that there should be apprenticeships, because they did not pay attention in their software engineering classes in college, and most colleges no longer teach specific programming languages like C in the abstract, and so he has a piss-poor tool belt.
BTW: I really don't know a lot of places that offers apprenticeships in electrical engineering; you can get one as an electrician, or an electronics technician, but not so much as an electrical engineer, say working on analog radio circuit design.
Also: A Software Engineer designs systems; a programmer turns other people's designs into machine instructions. Big difference, so please quit lumping us in with the programmers.
If you are doing engineering then you are an engineer. What degrees or certificates you hold is irrelevant. My father worked as an engineer for the phone company for years but hold no formal degrees of any kind. Engineering is defined as "the application of mathematics, empirical evidence and scientific, economic, social, and practical knowledge in order to invent, design, build, maintain, research, and improve structures, machines, tools, systems, components, materials, and processes." If you are doing that then you are an engineer.
No
It's a mote point. No matter what the opinion, the word Engineer is commonly included in computer related position titles (programming, networking, etc.) by companies, hiring agents, in normal conversation, etc. Once a new meaning for a word has entered the common vernacular it's near impossible to pull it back...
Yes, but it's like the difference between a quack calling himself "Doctor Happy" selling herbal diet pills and an actual MD with a recognised qualification.
You're not allowed to pass yourself off as the latter.
To have a right to do a thing is not at all the same as to be right in doing it
as more computing systems become more visible to the public as risks (self-driving cars, autonomous drones, potentially robotics down the road, etc.) I fully expect we'll get to a point where software engineering is a tightly defined field, primarily regulated by government works, yes with a drastically limited and highly scrutinized toolset available to which hobbyists are not limited. The public will increasingly demand it, or the code will simply not be allowed in public at the end of the day (again, think self-driving cars).
STOP . AMERICA . NOW
Engineers are responsible for the stuff they build. The average programmer is not.
Engineers require formal education, certification, apprenticeship, etc. Anyone can call themselves a programmer, regardless of their level of skill. And the situation is just getting worse and worse, because everyone clamours about the importance of lowering the barrier of entry for new developers, resulting in more and more people who know less and less, all the while thinking that they they are on equal footing with someone who could write an artificial intelligence with Cobol and assembly language. (Yes, it's a silly example, I know, but you get the point) .
I *wish* there was an engineering equivalent to software development. The number of people I come across that think they're god's gift to man, while being grossly incompetent, is depressing.
Requiring people to be able to demonstrate that they actually know WTF they're talking about would probably wipe out a sizable percentage of the hacks out there, it would give the people who have the talent, but not necessarily the skill/experience, a goal to aim for so that they can *know* when they have reached a suitable level, and overall code quality would improve immeasurably because the people who know what they were doing wouldn't have to spend so much time preventing the boneheads from tanking the entire project.
Also I went to a polytechnic to study software engineering. And I am an engineer (A bachelor of science title, as apposed to ingineur which is a master of science title).
Should people who do not understand the gradations and distinctions between educational requirements for different roles in software related projects be asking stupid questions in The Atlantic, as if we were all interchangeable, and equally incompetent as the least of us?
Journalists should have certifications and apprenticeships so that this kind of incompetent article doesn't end up published.
If you are whipping up some website in Javascript or some social app, No.
If you are designing advanced 3D graphics engines or CAD/CAM, medical software software etc...absolutely Yes.
In fact some software people do almost pure engineering.
I did software and electrical engineering in my career. there is not much of a difference between designing FPGA stuff and programming. I'd go so far saying that designing a PCB is in many ways is programming with a CAD/soldering iron.
As far as you are solving problems it doesn't matter if is by coding or placing ICs, laying out valves or gears it's all problem solving.
Donald Knuth's great work is called "The Art of Computer Programming."
There's really no answer to this question, but it may help to consider the motivations and interests of the people who use the names. There is a cluster of meanings that hover around the word "engineering" and around the word "art." Programmers fall somewhere in between the two. The search for absolutes is meaningless.
If you consider a symphony orchestra, it performs an economic job. It has to deliver cost-effective music on schedule. Performances contain defects; people need to decide on the acceptable level of defects. The performer are highly skilled operators of machinery like cellos and celestes. There is a management hierarchy; individual contributors, middle management (the "first seats,") upper management (concertmaster, conductor) etc. etc.
Yet few would call musicians "music engineers."
At the other extreme, the person who decides what heating and cooling systems need to go in a new building, and how the pipes and ducts should be sized and routed, exercises a great degree of creativity, but few would call them "HVAC artists."
What can be said is that management wishes that programming were more predictable, more standardized, and less dependent on individual heroics by non-interchangeable, talented individuals. Management is apt to fall for any smooth talker who claims to be able to organize the work of programming to be less like art and more like engineering.
Wishing, however, will not make it so, and the CMM Level 5 firms will continue to produce both good and bad work--healthcare.gov was the product of a CMM Level 5 organization. And meanwhile, both bad and good work will continue to be done by "undocumented, chaotic, ad hoc, reactive" manner by small teams of good people who give a damn.
I always preferred to be called a "programmer" because I have always felt that "engineer" sent a signal that I was working for someone who didn't really understand the nature of my work. I think a violinist would prefer to be called a "violinist" than a "chordophonic engineer."
"How to Do Nothing," kids activities, back in print!
Only when they have to take a test to be certified as a Software Engineer and then are held legally liable for their mistakes.
Plenty of "real" engineers have no certification and are not legally liable for their mistakes. My company employs several degreed EEs and MEs, and none of them are PEs, and none of them are personally liable for the safety of our products.
In other words, a giant useless bullshit money grab... and hucksters like this jackass who wrote the article want to tie that bullshit anchor to programming.
Having seen the gray line of BS involving whether architects can 'do' or sign off on things vs an engineer, I think engineering in the civil world needs some rethinking. Not to attack you personally, but the fact an architect is an 'Architect' does not give him magical powers to ignore higher math and physics fundamentals just because a design appears 'easy'. Art school isn't engineering school and there is both an amount of knowledge and ability that will always be missing (otherwise you would have both certs). I would give this discussion more credibility if there was actual evidence the bodies were fighting back non-engineers from being able to stamp things that require any math outside of ornamentation. As it stands it is a BS buddy system where as long as someones body/guild/gang gets a piece, it is OK.
No.
Should Bakers Be Called Hairstylists?
Should Tech Writers Be Called Astronauts?
Should Engineers Be Called Cobblers?
Should Pizza Makers Be Called Dry Cleaners?
Should Heart Surgeons Be Called Cashiers?
Words have MEANINGS, okay? Stop with this dumb-ass shit.
Just cruising through this digital world at 33 1/3 rpm...
Go watch this video, it's long but it makes the point better than anything I've seen previously.
Summary - this whole argument about what "engineering" really is ignores what most engineers actually do. Civil and Structural Engineering is not all of engineering, there are so many other fields which all do things their own way and which are not at all comparable to the oft-quoted bridge building or skyscraper construction. The process of creating software is part science, part art, part craft and part engineering. That's OK, it's alright to be lots of things. They're not exclusive.
---- Den ene knappen er powerknapp, den andre er Bender voice knapp "Bite My Shiny Metal Ass"
No is the correct answer.
All those moments will be lost in time, like tears in rain.
I also agree that the answer is no.
I agree with your agreement. The answer is no.
Just cruising through this digital world at 33 1/3 rpm...
It's a mote point.
It's also a moot point!
I'm just trying my hand at changing the meaning of mote... (grin)
Yes, I meant moot......
The PE is usually the one who looks over and signs off on plans. They are usually liable for any design issues as well and one of the first people contacted when something fails.
Perhaps Doctor Happy has a PhD in English Literature, so he's entitled to call himself a Doctor. But, he can't call himself a Medical Doctor (MD).
Likewise, someone calling themselves a Software Engineer doesn't imply that they are a Professional Engineer (PE).
"National Security is the chief cause of national insecurity." - Celine's First Law
First, that PE's exist is great. I think it is wonderful that there is a system to attempt to pass along experience.
The work they do is only to stand up to the world of physics. This world has been the same for the entirety of the practice. There have been changes in acidity of rain, and the severity of weather, but the problems remain the same. Any attack on a structure is physical and local. And the structure stands alone.
Had we secured things via encryption 20 years ago they would not remain secure today. Or had we gone bonkers to ensure 20 years of unbreakability we would have been terribly slow then. And we still wouldn't protect from future computers.
Basically the digital world is much less static. The threats grow in scale with time. The threats grow in quantity with time. We historically have only been able to manage getting a workable solution. The arrogance that a system would be universally awesome if our engineers weren't hacks is staggering. When building a structure validate the ground is sound, the components are sound, the design is sound. If I tried to do this for the software, I doubt I would be finished listing things to verify in the time it takes to design a house. And that is just to validate a angry bird flies true.
However, engineers who happen to program shouldn't be considered licensed software engineers anymore than they can be considered doctors because they happen to give an aspirin to their kid.
Nobody should be considered a software engineer unless a codified practice of software development is defined such that measurable differences in safety and reliability outcome can come from those practicing it, and a training and testing regime can be used to determine whether someone is practicing it in their work.
And, the test cannot be "something failed, therefore you didn't do it right". We need to be able to distinguish malpractice from new discovery, i.e. an engineer isn't necessarily at fault when a new kind of material failure occurs that the engineering corpus as a whole has never observed and characterized.
In the industrial world where liability exists and is rigorously enforced, engineers who build software and hardware systems are respectable individuals with strict and comprehensive training, theoretical and practical, very worthy of the title and our gratitude in creating and advancing much of the infrastructure that makes our life easier (and in some cases, possible). A former student of mine works in GE's aircraft engine division (which makes the Dreamliner's engines, amongst others): if the effort he puts out guaranteeing that the software that makes such an engine run achieves a better than 99.999% reliability can't be called advanced engineering, then nothing can or ever will.
Microsoft's infamous greediness in the consumer marketplace, OTOH, led the way many years ago to a cheapening in the public perception in what we are entitled to expect from something we pay for. Doesn't do what you wanted it to, or fails when least expected? Well, did you not read the EULA?? It says that's a what it is and you accept it as such. And if you don't like it, well... the software isn't even yours. We just let you use it for a fee, but we decide who can or cannot play with our ball. And since all thisway of doing business has never been challenged in court and concluding with a jurisprudence-establishing jury verdict (all such cases 99.99% of the time end in settlements with no acceptance of guilt or responsibility), things will not change.
There's a class of software that is required for the infrastructure of the internet. If you buy into the argument of "Internet is a Utility", then a software engineer working on things like the network stack, firmware, maybe even clouds... would be considered an engineer, because you are assumably adhering to the kind of rigor necessary to make sure that the Internet Is Not Broken (tm). If, however, you're someone who uses that existing resource to support your own efforts, then I'd classify you as a developer. This isn't devaluing either - our world needs both civil engineers and realestate developers, for instance - it just happens to be a description of what the inputs and outputs of the trade are. As for programming- that's a skill, not a job classification.
Note: This also applies for engineers working on software for large technological control systems, such as train routing, power control systems, industrial machinery, and more. The internet just happens to be the most illustrative example.
This signature can save you $400 on your car insurance!
And completely dependent of the education system. Some of us have gone through engineering studies in a technical university, with half to a years of training as part of the degree. Some of us have gone through the traditional computer science degree in an university without the training as a part of the formal degree. The first bunch are called engineers, or engineers with a diploma and the second bunch as computer scientists. Eventually they are all developers, or programmers and are subject to constant training at the job. That is if we are talking about the MSc level education.
That sounds more like a bug than a feature.
There should be Software Engineers held to the standards of every other Engineering discipline who create critical systems, but not every programmer making web pages is an engineer.
Many programmers barely pass muster as programmers, never mind engineers.
No
It's a mote point. No matter what the opinion, the word Engineer is commonly included in computer related position titles (programming, networking, etc.) by companies, hiring agents, in normal conversation, etc. Once a new meaning for a word has entered the common vernacular it's near impossible to pull it back...
Yes, but it's like the difference between a quack calling himself "Doctor Happy" selling herbal diet pills and an actual MD with a recognised qualification.
You're not allowed to pass yourself off as the latter.
This is a poor argument. It's not as if programmers or network guys are passing themselves off as bridge builders. Calling yourself something does not usually equate with fraud or illegality (except in some countries with tight regulations), there needs to be some sort of direct action and/or intent.
It would be a different story if people were just using the term "Engineer" instead of prefacing it with a computing profession.
And we need them for the missile defence systems!
Looks like some engineers are upset they don't get the respect they deserve anymore. Boo Hoo.
There is no concept of professional licensing for programmers, so there is no legal justification for this.
I don't hold a professional license but I assure you that I am an engineer (among other things). That would be true even if I didn't have a degree in engineering. An engineer is one who does engineering. Any other criteria is superfluous. Now if you are talking about credentialing for legal/liability reasons then that is a separate issue. For certain activities you want to have reasonable assurance of competence. That is what a PE license is for. But most engineers are not certified nor is there any reason for them to be.
Also, programming is not an applied science, so there is no philosophical reason for this.
"Engineering is the application of mathematics, empirical evidence and scientific, economic, social, and practical knowledge in order to invent, design, build, maintain, research, and improve structures, machines, tools, systems, components, materials, and processes." It's more than just application of science to a problem. Programming absolutely can be engineering. It is instructing a machine to do a function. If that isn't engineering then nothing else is either.
It would be problematic if both the Software Engineer and the Structural Engineer would start calling themselves just "Engineer". But currently there just isn't any ambiguity. For diplomacy's sake, a title such as Software Developer or Software Technician may go down easier with the certified professional engineers. The two main pillars of software engineering (enterprise dev and web dev) could just go with Software Clerk.
Programmers are not necessarily software engineers, so the question is dumb. Ask whether software is an engineering discipline and the answer is that yes it is. Not every software project is a software engineering project. Just like doing maintenance on your lawnmower doesn't make you a mechanical engineer.
There isn't a single board that regulates engineers. There are specific certification boards that have been developed from the earlier system of guilds for some specific engineering disciplines, but what seems to be asked here is that something like a guild be established for software engineering.
A decidedly stupid notion, even though a Programmers' Guild already exists and can provide you a nice and convenient letter for certification if you really insist upon the idea. It certainly can't be used as the excuse for why software engineering should not be considered a proper engineering discipline unless you are seeking to make such organizations official and legally required as membership.
No, I don't think it is a money grab. Engineers self-regulated to stave off government regulation that was going to happen due to some high-profile failures. Any time you introduce regulation, you reduce efficiency - but I think sometimes it is OK to give up some efficiency in order to get some other benefit.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
My first programming job was as a Software Development Engineer, I didn't come up with the job title.
Haven't we recently learned that bad/unethical software engineering is devastating for public health? My car is drive by wire. A firmware malfunction on highway would be no less dangerous than a part breaking, and would be much harder to predict and prevent during scheduled maintenance.
Software engineering has critical and non-critical projects just like hardware engineering. I don't see why respect or professional standards should be any different. These days anyone can also design physical objects and print them on 3D printer, and that's fine unless you expect to take your hobby trinket and put it in your car's transmission.
We had a guy interview for a software engineering job at our company. First words out of his mouth were "I'm also an electrical engineer and I don't think you guys should use the term software engineering because blah blah blah" (I zoned out at that point). Guess who was NOT invited back for a second interview.
And, the test cannot be "something failed, therefore you didn't do it right". We need to be able to distinguish malpractice from new discovery, i.e. an engineer isn't necessarily at fault when a new kind of material failure occurs that the engineering corpus as a whole has never observed and characterized.
Yes, an engineer is at fault then. Every time.
If I used a plastic that hadn't been tested for durability in a product that's supposed to be durable, I would have my hide stapled to the wall. The buck stops here.
It's my responsibility to check every component I use, whether it's by making sure we do it ourselves, or accepting certifications that suppliers provide with an iron-clad contract putting the responsibility in their hands.
Software "engineers" don't take that responsibility, and generally pass the buck any chance they get.
I'm in the UK and I rarely hear engineer used to describe anyone that writes code. When I do, it's usually CEOs who have swallowed the jargon book from an American collegue.
I want a list of atrocities done in your name - Recoil
Most mechanical engineers in the construction field are also PEs for the same reason - but yes, in general most design and manufacturing engineers don't bother with certification. It's easier and more effective to regulate the products themselves rather than the process that results in the product. In other words, create a regulation that specifies that cars should not burst into flames and then let the market figure out how to produce cars that do not burst into flames. Bridges are different because they are often one-off designs, or worse, modified stock designs where they guy doing the modification had better know exactly what he's doing. They are expected to last 50 years in the face of little to no maintenance and a single failure has massive human, economic, and political consequences.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
You are not an engineer.
I can perform first aid and can identify certain illnesses. I don't call myself a Dr or even a nurse.
Software engineering already has measurable processes and results. I have additional background in mechanical engineering and physics and can find no fundamental difference in the fundamentals of engineering, weather mechanical or software. OTOH, the project management isn't just different but often opposite measurements and results between SE and ME.
Testing... not so much. Software is run by corporations, the old engineering types are run by societies. Add in the flexibility and rapid change of pace in software and testing becomes irrelevant as soon as it's developed. Most "certifications" are run by corporations for their profit and to enforce marketing with little or even negative value for the test taker.
A software engineer has a formal background and can apply formal processes effectively. That accounts for maybe 10% of software programmers/developers/engineers out there.
There is already the long standing and widespread use of the titles "Systems Engineer" and "Sales Engineer" in the IT business, and neither refers to someone with a PE license/certification. Why would "Software Engineer" be any different?
"National Security is the chief cause of national insecurity." - Celine's First Law
Such tests exist, and software developers are legally held to be liable for their mistakes. It is just that most of the time the lawyers involved in software development usually have end customers agree to silly terms in their software licenses that disclaim any sort of liability on the part of its use.... and the customers even agree to such a disclaimer that it is essentially a worthless piece of software that won't ever do the job it was supposed to do in the first place.
It certainly isn't the lack of such tests, or the fact that software is used in literally life critical applications where a bug in its development will kill people or cause great harm to life and property. The software developers who work on guidance computers for rockets certainly know the liability, legal, and professional risks to screwing up are concerned.... and rarely get caught any more making the kind of silly mistakes you are complaining about here.
If only companies like Microsoft gave a damn about reliability rather than clogging up the OS with useless crap, deliberate spyware, and so many back doors to bring down the computer that even a competent security analyst can't even keep track of where a security hole can be found to bring the whole system to its knees. When I see the Microsoft logo on a piece of medical equipment, I just cringe thinking about the potential for screw ups that can happen.
An "engineer" is someone who "engineers," i.e. performs engineering. The guys who design dialog boxes and make things attractive, while quite valuable, are not "engineering." The guys who design stuff like motor control software, who use math and science to develop their algorithms and can "prove" their algorithm logically, they are "engineering" a solution and thus are "engineers."
Like all false choices, the "some are and some aren't" rule always works.
On one hand, it's a mote point.
On the other hand, it's a moot point.
On the gripping hand, it's a motie point.
Yep. We wouldn't let self-proclaimed civil engineers build bridges.
Why do we let self-proclaimed programmers write important software?
Who makes that decision to call somebody a proper civil engineer?
A government bureaucrat. All you are complaining about here is that the government is too small and that taxes are too low. Be careful for what you wish, as you wish might just be granted in a case like this. Do you really want software development to be heavily regulated?
If you're a programmer, you are not automatically an engineer. You are almost certainly not.
If you're a programmer who does everything exactly as the textbooks say, without any variation for what happens in the real world, you might be an engineer.
But still, probably not.
-- 'The' Lord and Master Bitman On High, Master Of All
Not sure what you mean. Architects don't design engineered systems and engineers don't practice architecture. Doing so is outside of either's scope of licensure and expertise. The occasional architect or engineer attempting to practice the other's will pay fines and can loose their license. I can't tell you how many projects I've cleaned up on behalf of Owners that were started by unqualified and unlicensed "designers and engineers."
Design is the comprehensive practice of conceptualization, strategy, and coordination. A myriad number of complexities get sorted by architects that may or may not involve math, as you say. Component and material systems and connections, building functional accommodations, adjacency efficiency, occupancy loads, exiting, fire resistance, accessibility, material finishes, acoustic performance, health department demands, lifecycle costs, envelope design, energy performance strategies... just this week for me.
Specifically to the article topic, it's the same for software. There are both design/architecture and engineering components. Design tools focus less on math because they are more strategic. The error is saying one is more important than the other.
There is no need to use a SlashDot sig for SEO...
The organization which controls the title Professional Engineer and which sets the standards some states use for licensure does in fact certify Professional Engineers in software just as they do for electrical engineering and other branches of engineering. So they recognize it IS engineering.
They also recognize that just as most construction workers aren't engineers, neither are most code monkeys. It's a common mistake to think that everyone working on information systems or software is a coder. That's no more true than thinking that everyone involved with building a skycraper is a welder. The structure of a skyscraper requires engineering, which should be performed by a qualified person, the elevator and hvac systems inside require engineering to design properly, and the enterprise information systems housed in the building also require engineering, which again shoul be done by a qualified person. You wouldn't have any random hvac employee witha pressure gauge design the entire hvac system for a skyscraper, and you shouldn't have any random coder design the enterprise information architecture either.
NSPE also recognizes that there is a difference between an engineer (someone skilled in the art and science of engineering) and a Professional Engineer (trademark). Their faq page includes the question "What makes a PE different from an engineer?" Just as not all good real-estate agents use the Realtor brand, not all good engineers use the Professional Engineer brand.
"Should programmers stop calling themselves engineers?"
I'm a good cook. I'm a fantastic eater. - Steven Brust
I would agree that proper software engineering involves about 10% coding and a whole lot of doing a great many other things like documentation, specifications, and debates over interfaces (user, API, and even hardware hooks if you get to the driver level). and last but not least quality assurance testing to proof the system including formal code review. When I was spending more than 10% of my time actually coding, I thought I was making some real progress for the week... and started to get worried.
Most professional and many talented backyard mechanics can build a car out of parts laying around and a machine shop. Designing a car that maximizes profit, meets government regulation and is desirable to the people buying them requires a team of engineers.
I think much of the software in use today is kind of equivalent to a mad-max vehicle.
love is just extroverted narcissism
I always resisted any engineer label since I am aware that it has legal implications. However, whenever I needed a new job I would look in the classified/online job ads under software or IT or computer or some other dumb category and find a moderate list of specialized this and that. After many years I finally realized that I was missing out on dozens or hundreds of potential jobs I could easily qualify for since they were being (mis-)classified, thanks to HR types, under Engineering: like Database engineer, software engineer, etc. So unfortunately, I have to look under the Engineer category for IT work though it is often mixed up with EE jobs, not to mention Civil or Mechanical or Environmental or Materials...real engineering jobs. It would have been much simpler to keep a separate, respectable IT category on job boards, but unfortunately corporate HR people or managers trained in business or some soft arts-history-sociology type major who are creating these ads and should, but don't, know any better often call these positions 'software engineering' now. I can't fight this alone so I am forced to go along with it. Anecdote: I once attended a huge job fair with 10,000+ other job seekers, most of whom had become unemployed. Due to the huge crowd, the company announced that it would only meet with the engineers in person and everyone else who had waited for hours and driven from afar would need to drop off their resume and leave. I stayed thinking that they were including all other similar technical professions but had a hard time getting the promised face time (which I did get) because HR had to argue between each other as to whether I counted as an engineer. As it happens I often see their job ads for 'software engineers' and wonder why the hostility back then.
I love this.
Exactly. They want to see software development regulated as a way to deliberately slow down innovation and to make software development an exclusive profession from only certified and accredited schools. That sounds like some sort of real progress to me.
Well, to be fair, "AC Engineer" sounds a lot like either an electrical engineer or an air conditioning engineer. :)
I'm a good cook. I'm a fantastic eater. - Steven Brust
Programmers should BE engineers, period. It's high time we stop f---ing around, and start the process of certifying, regulating, and most imporantly, sanctioning those programmers who simply should NOT be trusted with a keyboard and mouse.
I'm sick and tired of finding bugs that are inexcusable at best, and at worst are criminal. I'm tired of having my designs pissed on by people who don't understand the nuances, only to have their designs look like something a 10th grader created (apologies to all the GOOD coders who happen to be 10th graders).
Yes, this will increase cost. Yes, this will require more rigorous training, and the necessary creation of apprenticeship programs, but this will all be for the best.
You want to use the engineering title, then you have to ACT like an engineer, be CERTIFIED like an engineer, be REGULATED like an engineer, and be SANCTIONED like an engineer. If you don't like the idea that you could lose your programming certification FOREVER if you do something boneheaded stupid, then maybe you shouldn't BE a programmer to begin with.
An engineer would know the assembly language for the machine they are working on and would know the physical system inside-out, or at least be able to understand it when they need to.
Computer programmers are not engineers and shouldn't fool themselves into thinking they are.
You will be the joke of the scientific and engineering community if you're a visual basic programmer calling yourself an engineer.
Yea agreed, working in the airline industry for my career there is definitely a huge difference in systems that my company has to deliver and systems the average tech company pushes out. We spend more time developing the specifications, test plans, and running through them than I've ever heard from other people working in other software fields. Not only that, but when anything we have even has a hiccup (and a lot of times not our fault) our support group is immediately engaged and sometimes spends hours on the phone helping them limp along and fix the issue (the systems we deliver are not allowed to have downtime, most of them have to run for a decade with maybe a couple of hours a night to do cleanup/maintenance). When working with physical equipment and having to maintain extreme high availability/fault tolerance it qualifies as engineering in my opinion.
That all said, I actually feel like there should be engineering oversight and regulations for software because allowing it to be the wild west and letting morons sling code out like crazy is exactly why we have all these security issues and such. I've argued for years that no matter how hard it is there should be some basic standards developed for software in general, but people either don't want it because it makes development more costly or they just dismiss it as impossible. I will conceit that it would be very difficult to develop standards equivalent to that of electrical or structural engineering, but it is definitely possible to at least create some to eliminate the morons that don't even know how to organize their code from spewing bug riddled messes out...
Is there a Professional Engineering Exam for software engineering now? When I was a college senior in computer engineering (which incorporates both hardware and software, I chose to specialize more on the software side) 11 years ago, I recall a professor saying that one was in the works but not ready yet, so if we wanted to get a PE certification we had to do it in a different discipline or the general engineering test. Some of my classmates who specialized more on the hardware side probably took it using the electrical engineering discipline, but most of us didn't bother. I checked online a few years ago, and I found no evidence that the PE board ever added another test with any kind of computer focus.
I have worked on projects tangential to aviation software that had to be DO-178B certified. That is rigorous beyond the point of programming in a straight jacket. The code must be completely deterministic from its inputs, which meant that networking was limited to UDP. TCP was thought to introduce non-deterministic aspects that would kill the certification.
Go back to your tea party Libertard, the big bad government does NOT certify engineers. They certify themselves through professional organizations much like doctors and lawyers, the costs of which are paid for by membership fees, NOT taxes.
Support Right To Repair Legislation.
"What's in a name? that which we call a rose
...)
By any other name would smell as sweet"
Would Romeo be different if he were named John? (I'm not sure romantic men would like being called a John instead of a Romeo. Then again
Call those who write software whatever they want to be called: it wouldn't change what they do or how people look at them.
There are a lot of professions that attempt to raise their credibility by using an inappropriate descriptive term: political SCIENCE; psychology and sociology as behavioral SCIENCE. Most literate folks, particularly true scientists, take this jargon for what it's worth.
In a time of universal deceit, telling the truth is a revolutionary act. George Orwell
Yes. One can now get the degree, pass the test, have four years of experience supervised by an existing PE, then use the Professional Engineer branding for software engineers.
I think this ambiguity is the real problem with the term. In countries where it is protected, the term 'Engineer' carries a lot of weight, whereas in countries where it is not, it really just depends on who has historically called themselves an engineer. I've noticed in the UK that metal bashers are traditionally called engineers, and after the whole Thatcher destroy the workers thing, anyone who is an engineer is deemed to be part of the 'old' economic order and generally marginalised. This unfortunately has included lots of really good degree qualified engineers.
Since moving here I have picked up the term developer (even though I have an electronics engineering degree) because everyone thinks of Google/Apple when I say 'developer', rather than some guy in a shed in Stains cutting chassis numbers out of stolen vehicles.
Yep. We wouldn't let self-proclaimed civil engineers build bridges.
Why do we let self-proclaimed programmers write important software?
We do let non-PE civil engineers work for PEs and design buildings and bridges that the PEs sign-off on. We basically require it, in order for non-PEs to learn so that they too can become PEs.
Outside of the civil engineering discipline the use of the term requires a lot less formal qualification. My wife is an ME by education and holds a CQE certificate. The firm she works for has some employees with the title of Engineer that do not even have college degrees, they worked their way up through the testing and manufacturing sides to where they do engineering work on key parts of products that they have expert knowledge of. Should they be called engineers? The employer thinks so even if some of the college-trained engineers don't like it.
Do not look into laser with remaining eye.
Given today's politics, if software development were run by societies, we would immediately accuse them of shilling for corporations.
In almost all states it is not illegal to practice engineering unless you are a PE*. My wife, a PE, reports that the quality of an engineering school is easily gauged by the pass rate of its graduates on the PE-fundamentals-exam. She's legally responsible for her work and must refuse to do work that violates professional standards; she has had conflicts with employers when the employer wanted to "cheap out." As a PE programmer you would be obligated to not only tell you boss "this RTM is an unstable POS and must be refactored" but also report it when the boss overrules you.
*Loopholes allow large corporations to employ grunts to do engineering w/o a PE. The airplane you flew on last week is guaranteed to have had the stress analysis done by a non-PE.
No. I mean, you probably do, but the correct answer is still "No".
Escher was the first MC and Giger invented the HR department.
As long as there is a steady pay check involved.
The problem is less with terminology than with expectation. To often management doesn't want programmers to spend the time to correctly write the software. Not doing a shitty job can get you fired. Worrying about little things like not destroying users data, bricking machines, etc is considered a waste of time by the people calling the shots. Beyond that, users frequently don't care about such things until after they have a problem. They don't want to spend more or wait longer. Easier to get it cheap and sue when something goes wrong. I know more math, science, engineering practice, etc as any Engineer but getting to use it in any practical way is rare.
At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
Web/game programmer/designer an engineer?
You got to be kidding me.
I call myself a Software Developer. I am generally responsible for the design, construction, and testing of the software I develop. I use a combination of techniques, including frequent testing, to ensure that the software does what I intend.
Some might argue that what I'm doing is Engineering. I don't.
Those that have engineering degrees and licenses and are working on safety critical systems! But not every guy with a compiler is an engineer. Disclaimer: I'm a guy with a compiler.
Correct but Canada's engineers area also trying to claim areas which are not engineering so they can bring it under their control and prevent anyone without engineering certification from having such jobs - just like the medieval guilds used to do in Europe. So I expect they would be very happy for programmers to be called engineers but shortly after that expect to have laws that prevent anyone without the right engineering certification being allowed to program. They have been trying to restrict what physicists can do for years.
I've done software engineering in the past. It was slow and expensive, parts of it were tedious, and parts -- particularly fallout from the fact that (fairly) rigorous software engineering is rarely done -- involved more hassle than they should have been. Even at that job, most of what I did was more traditional software development than engineering, and all my other software-developing jobs have been far from the level of rigor and care that I would call engineering.
However, when I did software engineering, with clearly defined requirements and interfaces, with an explicit architecture and functional decomposition of the software, with carefully planned and executed verification and validation, the results were definitely higher quality than you would get from less time- and labor-intensive methods. Most of the time, cheaper methods are acceptable and worth the increased chance of defects. Flight systems, healthcare, other safety-critical systems, and financial computing usually, and justifiably, prefer to pay for more rigor and higher quality.
The issue there is that software engineering as presently designed is neither practical, nor cost effective, or workable for all but a very few software projects where money is seemingly unlimited or the consequences are too grave.
Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
I call myself a developer, but my job title is Senior Application Engineer. That comes from HR who, in their infinite wisdom, decided it was the correct way to description. I've basically been doing the exact same job for 14 years (in the same company) and in that time I've been called a Web Developer, an Application Architect, and a Senior Application Engineer. The job duties haven't changed, but each change in title gave me a raise so I don't really care what they call me.
Crap. My mod points expired a few hours ago.
We need to be able to distinguish malpractice from new discovery, i.e. an engineer isn't necessarily at fault when a new kind of material failure occurs that the engineering corpus as a whole has never observed and characterized.
Yes, an engineer is at fault then. Every time. If I used a plastic that hadn't been tested for durability in a product that's supposed to be durable, I would have my hide stapled to the wall. The buck stops here.
I don't think the point was about untested materials, but about failures that had never been observed before. If a building in New York City is damaged because the steel beams buckle when exposed to the radiation emitted by the venom of a newly-discovered species of South American tree frog, I doubt the engineers and architects would be blamed for using steel beams.
I AM an engineer and I WORK in software development. Please son't mix that. The latter might change if I work at a different place or task. The first can't be taken away from me.
bickerdyke
Only when they have to take a test to be certified as a Software Engineer and then are held legally liable for their mistakes.
Plenty of "real" engineers have no certification and are not legally liable for their mistakes. My company employs several degreed EEs and MEs, and none of them are PEs, and none of them are personally liable for the safety of our products.
There is a limit to what they are allowed to work on though. If you were designing refineries, building bridges and buildings, or power plants then you damn well need to have a licensed PE checking and approving everything. It also varies by state and discipline, in some you can't be a Principal Engineer or Manager of an engineering group without holding a PE license.
Its worked for me for 30 years.
MS Windows would not be "engineering" code because each instance of execution is private, while the code inside, say, a traffic lights system, aircraft control system, or automobile is "engineering" code because these instances of execution happen in public, with public effects
Does "engineering" code running on or written in an MS Windows environment disqualify it then?
Without a waiver of the experience under a supervising PE, only software engineers working in cross-disciplinary companies have much hope of fulfilling those requirements in the foreseeable future. It will take a long time to spread out into general software development.
This is one of my pet peeves. I am a programmer. The place where I work bestows the title of 'engineer' to everyone who touches a keyboard. People who never write a line of actual code are called engineers. People who write thousands of lines of (meaningful, but poorly hacked together) code are called engineers. Neither should be. This is an insult to actual engineers. It's just a way of stoking inflated egos. Unless you know how to make use of Green's function, you are not an engineer. And that's just a start.
Software 'Engineering' is a fake title, and has no place in any engineering department. Stay away from universities that offer a degree in "software engineering".
Yep. We wouldn't let self-proclaimed civil engineers build bridges.
Why do we let self-proclaimed programmers write important software?
Because that kind is cheaper and doesn't waste time on producing a robust product.
Well, we call the onshore ones "architects" in my town.
Likewise, someone calling themselves a Software Engineer doesn't imply that they are a Professional Engineer (PE).
I am a professional engineer. I'm not a Professional Engineer because I haven't bothered to take/pass that test. Anyone who does engineering work and gets paid for it is a professional engineer. (note the lower case) An engineer is one who does engineering work. A Professional Engineer is one who is licensed to perform certain types of engineering work. Having the PE registration only means they can legally provide certain engineering practices to the public, typically stuff like civil engineering where there are safety consequences. It's a legal requirement more so than a practical one. It's a regulatory attempt to ensure a base level of competence but not having a PE doesn't mean the person isn't an engineer nor does it mean they are not competent.
Language belongs to everyone.
If your trying to reward the hard work of your slave labor force with something other than an actual raise or bonus it absolutely is a very good idea to invent an important sounding title with the word "engineer" in it and "promote" them.
If you don't like how the word engineer is thrown around you can either use more words which more specifically qualifies what specifically you intent to say or you can try NSA style to convince everyone the word means something other than what they think it does.
The term "engineer" appears to be sufficiently nebulous having been applied in such a wide range of contexts and domains that it makes no sense to even ask the question. It doesn't matter what myself or any of you think it only matters what society in general thinks.
If you were to answer questions about about your job title with the words "I'm an engineer" do you think the person receiving your words would have any coherent clue what the f*** it is you do or are talking about? No of course not because the word engineer by itself is not sufficient.. It must be further qualified to convey meaning.
Programmers are artisans, not engineers. The entire IT business is working on a level of professionalism similar to medieval guilds. That's the root cause of everything which goes wrong in IT and software development.
I wish it was a mute point.
Learn to love Alaska
At least I'm not a dick riding fuckboy who knows nothing about engineering and writes articles for a living
I'm surprised these ball riders haven't killed themselves yet.
I am a programmer and I approve of this message.
While in general the definition of engineering applies to programmers, as practitioners of mathematics and science, I would agree the more excepted definition of building physical things is more appropriate.
I'm an engineer (among other things) and even have several degrees to prove it. But that isn't what really makes me an engineer. I'm an engineer because I do engineering. The types of engineering I do have nothing to do with building buildings and often aren't even about building physical objects. Most of what I do is properly termed process engineering. I don't design the object, I design the system to build it.
As such, programmers are not really engineers. I always describe myself as software developer, not software engineer.
Disagree. I'm not a programmer and you should call yourself whatever you are comfortable with. But I would call you an engineer because you are doing engineering work.
Note that trash collectors call them selves sanitation engineers and stay-at-home parents are domestic engineers.
Which is exactly the point. This whole objection is dumb. Engineer is an English-language word and the attempts by professional societies to monopolize it and stop the general population from using it should be fought vigorously. If you want to require and imply a level of education and a set of standards, use a new trademarked term (like PE or Eur Ing or CEng).
"Doctor" is a reasonable comp: trying to remove that word from English and only let members of a certain cartel use it would be ludicrous, but the public interest is served by having a term that's reserved so that the public can have a baseline level of trust--hence MD (and DDS, RNA, DO, and all the rest).
There's no confusion here. Nobody thinks that a doctor of philosophy, a witch doctor, or Doctor John is a board-certified neurosurgeon any more than anyone thinks that an audio engineer, software engineer, or sanitation engineer is a certified civil engineer, and the word in English predates the narrow engineering-society sense by about 500 years.
rage, rage against the dying of the light
Off topic, but I swear I've heard people misuse the term saying it's a "moo" point" in business situations, literally making a cow-like sound. Then I get emails from them with every possibly misuse of their, there, they're, further, farther, two, too, to, etc. Perhaps it is because they know it annoys me.
Chance favors the prepared mind.
Perfect is the enemy of good.
I have always thought this is weird.
When I was working in the game industry, I actually had to use a lot more science knowledge in making physics, graphics, AI, and simulations. But I was called a programmer. And people think that I am paid to play games.
Now I am working for the IT industry (making website, DB, apps). I don't use any science-y knowledge at all. I just code. But now I am called a software engineer. I am paid a lot more and people think that I finally have a real job and making cool stuff.
*shrug*
Should Programmers Be Engineers: Yes.
in Canada you can't legally claim to be an engineer or do engineering without being a member of the professional body.
Which is complete nonsense because plenty of people do engineering every day in Canada which are not a member of any engineering organization. I have worked in Canada myself as an engineer and it even said engineer on my business cards and at no time was I ever "a member of the professional body". For the type of engineering I do there would be no point or purpose in joining a professional engineering organization.
There are certain engineering functions that require licensing, typically those involving public safety and liability related to said safety. And for those it make some amount of sense. But it isn't some sort of universal requirement, even in Canada.
That's certainly an issue. I spoke to the state licensing board about that and they basically said "tough". I used to work at Texas Engineering Extension Service and plenty of employees had an engineering education, but few to none were PEs. So even in a cross-disciplinary environment, moet of the engineers aren't PEs.
My current boss has an engineering degree, electrical engineering, and he didn't even recognize the term "PE" when I asked him.
No, but they'd probably be blamed for not planning for a proper environment for the tree frogs....
"I do not agree with what you say, but I will defend to the death your right to say it"
"engineer" outside the US wasn't sued into oblivion by professional engineering organizations.
The electrician I know from the UK has a certificate in "Electrical Engineering" that's essentially a certificate of attendance at a sparky school. Outside the US, I find engineer means the same as it did in the US in the 1800s. Tinkerer. No more. No less.
The problem isn't "engineer" being used for non-engineers, but the false idea that one must be a licensed engineer to be an engineer.
Learn to love Alaska
I'm guessing ya'll are NOT professionally regulated engineers!
Being called a programmer is just fine in my opinion; however, most programmers could be considered engineers based on definition: https://en.wikipedia.org/wiki/Engineer
If you're butthurt about a programmer recognizing as an engineer, "you need to check your privilege bro!"
You're clearly not a civil engineer...
Your an idiot
Is that for non-software engineers, or software engineers? I've found them similar for the behavior you describe.
Learn to love Alaska
Only a small fraction of engineers are licensed or regulated in any way. Only the ones that deal with public safety, for example a civil engineer who reviews the design of a bridge or structure, would need licensing. Probably 98% of all working engineers are NOT licensed. As far as continuing education, no strict or formal requirements, just the fear of becoming obsolete. Signed an unlicensed retired engineer of 47 years
Some people working as software architects, designers, implementers actually have what it takes to be called "engineers". That means a certain type of education, skills, experience, etc. Most do not. But that is because most coders are really, really bad at their job and should have gone for a different type of job altogether.
The argument about bridges and buildings is bogus though: The problem why software is often unreliable and insecure is due to budget constraints, project management issues, and, yes, the wrong people working on it. But other clear engineering areas have the same: Many electronic gadgets are not much better, yet there clearly were some EEs involved in creating them and these people are in fact and also formally engineers.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Can you just make this a mute point?
Yeah, yeah, just engineers protecting their turf. For awhile Novell was not "allowed" to call their certification a "Certified Novell Engineer" so they abbreviated it to CNE. But something happened, was it a court case? and they went back to the word "engineer."
It's like librarians bristling when you call every library employee you see a "librarian" whether they have the degree or not. Librarians don't own the word and engineers don't own the word "engineer" either. Lighten up. Are engineers so insecure that they can't handle a position called "Software engineer" unless it equires a BSEE?
How about a moderation of -1 pedantic.
Just be happy he didn't call it a "mute point".. and insisted.
The people who drive trains are called Engineers as well. I think that when I was at school there were both Computer Scientists and Computer Engineers. CompSci did programming and CompE built computers and other electrical devices.
Calvin:Do you believe in the devil? Hobbes:I'm not sure man needs the help.
Um.
Professional Engineers are licensed through the state. Professional Engineers are Civils, Mechanicals, Electrical engineers that hold a certification through the state licensing board.
Doctors are also certified by the state. Lawyers are certified by a board of their peers, but still require a license to practice law in the state.
Also, the people who run trains are called engineers.
Me: "I'm a software engineer."
Person: "Oh, cool."
Me: "I'm a computer programmer"
Person: "Oh, really? I think I've got this virus. Do you think you could take a look at it?"
Therefore, after trying it both ways, I now tell people I'm a software engineer.
you're all sheep, and this article is baaaaaaaaaaaaaaaaad
Get over it.
The tech industry is experience driven. Universities can't even come up with a class before the technology is outdated, and experienced Software engineers and Network engineers will usually do circles around those with degrees in the same field.
Licenses and certifications are nothing but a way for somebody else (usually government) to control people and take money.
Get over it you pompous windbags.
...Clerks?
The issue is, how much is left to the imagination?
And just because it's been coded before, doesn't mean imagination isn't required to code it again or to understand how it's been coded before. True engineers must be completely in touch with reality in the final analysis/implementation, thus, detaching themselves from any trace of imagination that was ever applied in the beginning of a project. Programmers often implement new consequences (figments) of their imagination to iteratively improve (hopefully) the end result. While programming tends towards improvement, it's the product of the figment of peoples' imaginations that generally works, whereas engineering systems always have to work in reality. Perhaps a real-time programmer could be considered at the intersection of both professional categories.
Interestingly, mathematics, a figment of everyone's imagination, works consistently all the time and mathematicians are in touch with reality almost none of the time.
I'd like to point out that the correct term is "moot point" but I suppose that it's already entered the common vernacular so it's nearly impossible to pull it back, thus it's a mote point.
So most of the objections to programmers being called "engineers" under discussion here seem to fall into two groups:
1. Manipulating code is sufficiently unlike the engineering of physical systems that using the same term to describe both robs the term of some of its meaning. That is to say: "programming is not engineering".
2. Programming is engineering, but there's no generally accepted formal certification and licensure process for computer programmers, like there is for engineers who design physical systems. Engineers who design physical systems thus find it unfair that they had to jump through all these regulatory hoops before they could legally call themselves "engineers", while a 13-year-old who codes Flash games in his bedroom doesn't. This is roughly equivalent to an actual physician's objection to chiropractors or Dr.-Laura-style "psychologists" calling themselves "doctor".
Certifications are well and good, but I don't think it's a good idea to require people to be licensed by some regulatory body before they can legally identify themselves by their profession, be it "realtor", "plumber", "accountant", or "engineer". Because then what do you call people who don't happen to have those qualifications, but are still doing the job? "Faketor"? "Plumberoid"? "Accountaint"?
I really like where this conversation is going lately. Coders are not engineers any more that carpenters are architects. There already exists a specific field called "Software Engineering." Not many universities offer it as a degree program. And there should be board accredited certification tests just as are required for all other professional careers. The fact that we do not have said certifications leads to this confusing grey area where some programmers get paid the big bucks because they really ARE performing the role of architect or engineer, and others think they should get the big bucks merely because they call themselves architects or engineers.
Most programmers/coders and other IT people need to face the fact that we are really just the welders, pipefitters, and crane operators of the computer world.
We have this argument in the mechanical world. The act of creating something is called design. This is the act of conceiving of something and bringing it into reality. Engineering is the act of using science and math to predict if the design will work before it's tested. My reasoning for this distinction is that very little time is spent in engineering education learning how to design, but the majority is spent on analysis.
For example, if you are building a bridge or airplane you need engineering because it's not realistic to build something that "looks" right, and then test it and hope it works. But, if you are building a hand held tool or consumer product, where if it failed during testing nobody would get hurt, it may be good enough to design, build, and test it without engineering.
I'm not familiar enough with software development to know if engineering by this definition is involved.
I love Jesus, except for his foreign policy.
a'int it a mute point (grin)?
Hey, it's in my official title, so I'm going to call myself an engineer. My wife always acts surprised when I actually manage to fix any hardware around the house, and I have to remind her "I'm an engineer!" This always gets a laugh.
The Moore-Murphy Law: The number of things that will go wrong will double every 2 years.
Programmers should be computer scientists: they create and study software objects and prove them mathematically correct.
Software Engineers should glue proven and tested objects into applications without writing any code, because the risk of introducing bugs in code is just too high. .
I doubt it, the public simply don't know or care enough about coding/computers at this stage.
Look at the Snowden reveal, everyone (sane) went "Oh that's a bad thing!", etc. Yet in the aftermath whereas all of the people in the know started encrypting their data, using tor, protesting, etc, everyone else went "eh, what can you do", or "eh, too much hassle", etc. and carried on with their lives. If you ask them up front you get a standard "It's terrible but what can you do?" response (If you're lucky).
So perhaps they would after a few /really serious/ car crashes, enough to rile people up. Otherwise... I'm not hopeful.
Please elaborate - should it never be possible to be classified as an engineer when you do programming or is a certain skill level required?
Software Engineering is a known subject already.
If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
In my multi decade software career I have repeatedly heard grumblings about somehow regulating those who can make software for money. The complaints were rarely aimed at software quality but more about raising the barrier to entry. It especially seemed to tick off people with a masters in CS or CE to watch as someone who trained themselves get hired into a plum position because that person new some cool hip technology while they were masters of something on the way out. I could never get a proper read on the attitudes of those with PhDs in CS as they tended to so hyper focus on some very narrow technology that they were sort of outside the loop.
But the theme was pretty constant. They were looking for a way to enforce seniority and a way to keep those who didn't have a "proper" education out.
But the simple reality is that anyone who has been responsible for hiring computer people will strongly attest that the modern CS degree does not ensure competency. Working in a huge firm does not result often result in valuable experience. Any hiring person will share amazing tales of people with "proper" educations not being able to pass the FizzBuzz test. Or people who have been working for impressive company X with a CS degree who can't do the slightest bit of ML, not because they haven't done it but because they are unable to do the rudiments of Linear Algebra or statistics; required courses for most CS degrees.
So at this point any region that creates a required certification, guild, or professional organization will simply be like Britain in the late 1800s when they placed onerous rules on automobiles such as the crazy flagman rule. This then basically shot the infant British car industry in the face. Plus we all can predict the outcome of any certification system as being one where major companies such as Oracle would stuff their dicks into it and somehow make Oracle knowledge a critical part.
Why should software engineering requirements be more strict than most types of engineering?
If only that already existed for years and years: https://en.wikipedia.org/wiki/DO-178B
Agreed, making software has nothing to do with driving a train.
Not necessarily. Engineers are held to a standard of reasonable professional care.
Oh, I see, you're conflating professional liability with product liability.
IANAL, YMMV
invoking Betteridge's Law makes no sense on a discussion forum, stop doing it.
I'm god, but it's a bit of a drag really...
Amen brother!
This really should be a settled issue for anyone that's been through University.
A Pirate and a Puritan look the same on a balance sheet.
The above is informative. In the consulting engineering field, I've always maintained that a professional engineering license is a license to hire un-licensed engineers to do all the work. (though others' experiences may be different depending on the field of engineering)
about civil engineering regulations. They know they want buildings to be "safe" and also that they want buildings.
I expect the same over the next 50 years in tech. They know they want tech to be safe and they know they want tech. The regulators and legislators will take care of the rest, for better and for worse.
STOP . AMERICA . NOW
I have an ABET accredited engineering degree in Computer Engineering.
You're indulging in a false strawman. The implied requirement is that you CAN be a PE not that you MUST be a PE.
It's interesting that you mention an electrician because they also have similar constraints. Testing and certification is required and someone in your shop better be a master. That doesn't mean that you yourself can't be a mere apprentice.
A Pirate and a Puritan look the same on a balance sheet.
Do you think that building bridges, skyscrapers and rockets is just 'rote application of math to science'? WTF that means.
It's just that simple. In a world without business or legal standards which force liability on software developers and fail to cover the costs [and that is to include living costs] of the free software developers we'll have a very difficult time striving to get designs right from a security and bug perspective.
We need to design strong standards BEFORE implementing any code and every line of code aught to be reviewed by people who've gone through rigorous security training programs. We don't spend 4 years in college learning to code and another 4 years learning to write secure and bug free programs. Half the people joining the workforce can't even write functional code.
Then we have employers who push whats possible to try and out compete on features rather than spending the 10 years that might be needed to write a small secure driver component. But how many would buy a 10-year (to todays standards) out of date network adapter or other device? This is the problem we face.
Yeah programmers apparently have no hard tasks, but to create apps and games.
AND to create all the applications that do all the engineering automatically for engineers so they don't have to anymore.
Face palm.
Each province typically has laws establishing professional organizations as the gatekeepers, so for example in Alberta the Association of Professional Engineers and Geoscientists of Alberta is legislatively in charge of engineers. The law protects the use of the title "Engineer" such that a lot of tech companies actually violate the law by having employees whose title is something like "Systems Engineer" when they are not in fact members of the governing society. And before you ask, yes, they do have provisions for Software Engineers but in Alberta at least that is probably poorly developed.
I'm always amazed at how US tech companies get away with having non-engineers titled as engineers.
Saying "mote point" is entirely possible. Though contextually his usage was wrong.
http://www.merriam-webster.com...
Some people working on software development are rightly considered engineers, some are just programmers.
The people Ian Bagost works with are almost certainly just programmers. They people developing flight control software for Boeing, on the other hand, are almost certainly engineers.
The distinction is is the level of rigor in the design, coding, and testing being applied.
Try that again. It would be nice if these professional associations were only voluntary, and that you can choose to start your own separate organization if you disagree with their philosophies. Unfortunately, you can't in the case of a professional civil engineer, as only one organization is legally sanctioned by most states.
It is this legal distinction that is being asked for by the author of the original article and something you are missing. It also sounds like you need to pay attention to the legal monopoly given to the American Bar Association, its state associated member organizations, as well as the American Medical Association and its legal monopoly. It is this monopoly that I'm complaining about here, regardless of the fees being paid or how they are derived and what you are missing.
It is also the charter and how standards for those professions are created, not to mention other legal restrictions for people in those professions you are mentioning. Is that something you really want in software development?
I have a Computer Science degree that is accredited as a System Engineering degree. Does that make me an Engineer?
I have been a Software Engineer and a Programmer in my career. The 'Engineering' job had some pretty heavy math but the Programming job involved working with some pretty massive systems.
Honestly, call me whatever you like as long as I am well paid!
... is that Engineering institutions seem to care more about lining their pockets with money than actually improving the trade.
When is the last time you heard of an Engineer getting "dis-barred"?
I for one see no value in a formal Engineering title or certification in any capacity. Customers don't seem to care enough about it, and even if they did, so-called Engineers are just as likely to fail their projects as non-Engineers.
Ironically, I studied Software Engineering in University but am not allowed to use the Engineering title because I refuse to pay fees to my local Engineering institution. They provide no value.
I could teach a monkey to program, especially with shit like Rubi...
Real world software development is far to chaotic for meaningful engineering. Imagine trying to design a building knowing full-well that at various points during the design process management/customers will be asking for an office building, apartment building, warehouse, or parking garage. This is why there is no "Agile Civil Engineering" process. Also your budget is so restricted half your team is making $15 /hour. It would be a miracle if your building can stand up under its own weight at all
Where would something like the obamacare website project fall in your view? It seems of a highly important public nature to me, so would that require a PE? It seems like it might have helped.
Oh? I worked as an electrical engineer early in my career, and I was never "regulated, certified, and subject to apprenticeship and continuing education."
I am actually a software engineer by education. About half of the education was related programming and other half was normal math physics etc. But my official title is still just engineer because there is no other title for me. But I usually just call myself coder.
How is this a problem? It's illegal to call yourself an engineer if you don't have an engineering degree and belong to the order of engineers. At least that's how it works here, and apparently in many US states too. That's why Microsoft stopped using the "MCSE" term.
So a "GAME DESIGNER" is questioning the profesionality of software engineers. Is there no one who sees the absurdity of that? And to answer the question: no. Not all people who write software are software engineers. You should only call software engineers software engineers. The fact that Google docs go down now and then doesn't make software engineers not engineers. But using it as an argument proves you don't know what you're talking about, because apparently you know nothing about the complexity of the infrastructure that is necessary to keep something like Google Docs up and running. None of its software parts need to fail in order for the service the stop working. But hey, you're just a "GAME " DESIGNER"".
It brings to mind something that I was told back when I was a freshman: "You're all here to become engineers. If you just want a job working under a car bonnet, congratulations for wasting eighteen grand to become an over-qualified technician."
If God forks the Universe every time you roll a die, he'd better have a damned good memory.
prima donna fits
I wouldn't want to drive over a bridge or enter a building where no one was actually paid to design or build it. If we want well engineered software, we have to stop demanding that everything we get is free. That doesn't mean all free software is bad, or that all paid software is better; but talent generally follows the money.
There's a big difference between the way your average programmer works than a formally objectified Software Engineer. The whole philosophy and methodologies are completely different. The latter is most certainly an Engineer.
Train Engineers
Electrical Engineers ( No License in the U.S.)
Non-Civil Mechanical Engineers ( No License in the U.S.)
And Scotty, What about Scotty.
The Term has been diluted for a while.
You can call me a Developer, Programmer, Software Engineer, whatever you want, but I draw the line at "Coder". That totally trivialises what most of us actually do, unless youâ(TM)re a data entry typist or something.
Why does anyone accept this notion that "Professional Engineer" implies this? That encoding that in law was a good idea?
How the fuck do corporations get to pass their legal responsibilities off onto particular employees because they've tacked it onto the job requirements' name?
And yes, I've known PE's who went quite off the "deep end" with the stress of this morally outrageous corporate dodge.
It isn't a money grab. The PE test in the USA is very difficult. Most engineers can't pass it. I studied about 6 hours a week for an entire year, and while I passed, I wasn't sure I was going to. The only book lookups I did were related to data table lookup, not "how to solve this problem". I calculated as fast as I could, wrote furiously for 8 hours, and still ran out of time and had to leave some questions unanswered. It's a hard test.
The PE test proves 2 things- the person holding it probably knows what they are doing in their field of expertise, and they have the dedication to work on a long-term project that doesn't show immediate results. Anybody can flub their way through college, and college difficulty varies by school and even by professor. The PE test is the same for everybody (in a given subject). There are many useless pieces of paper available to an engineer, but the PE is not one of them.
The PE in other countries does differ, and some may be money grabs. The USA PE is not.
Even those who arrange and design shrubberies are under considerable economic stress at this period in history.
What if I'm writing software for skyscrapers, elevators, power plants, and missile defense systems?
And wear a funny hat?
Hot Damn! It's the Soggy Bottom Boys!
The same goes for the word "architect."
Think about requirements. The requirements for a bridge or an airplane or a retaining wall are much, much, much simpler than even the simplest pieces of software. Until the things you build have well-defined parts that interact with other things in well-defined ways you can't be engineering them.
Most of the time, with software, we are doing something else. Not engineering. When I am developing software I usually end up debugging requirements ninety percent of the time.
There are some exceptions. If you are writing a compiler, an operating system, or a database most of what you are building is pretty well defined. You know it would be crazy to add a system that printed greeting cards to your compiler. You also know what the basic parts are of your compiler (pretty much independent of language) and how they interact. Since your compiler is implementing a specific programming language that doesn't change that rapidly you can probably find a well-defined test suite that will verify that your compiler more or less works correctly.
Moo Point explained: https://www.youtube.com/watch?...
The vast majority of programmers are no more 'engineers' than the 'sales engineer' I saw give demos of Flash 4 and Dreamweaver 4 at some event.
My question to "ask /." is this: what's the diff btwn a programmer and a developer?
Development is programmable; Discovery is not programmable. (Fuller)
Professional Engineer is actually a regulated term in most states, calling yourself one implies you are state certified and licensed and use of the term if you aren't can subject you to administrative punishment from the licensing board including severe fines.
When you become licensed you basically enter an agreement with the state to be accountable to the licensing board including giving the licensing board the right to not only fine you but potentially incarcerate you for violating the licensing laws. These laws regulate the practice of engineering and are not necessarily statements of qualification only that the individual is accountable to the board and the rules they make. Though to obtain the license most states require the applicant to obtain recommendations from 3-5 other licensed engineers, these recommendations are confidential and the applicant often isn't even allowed to handle the recommendation before it's received by the board.
So in the end, if you run into a licensed engineer chance are he found at least 3 other licensed engineers to say confidentially to the board that said person is qualified to practice and place their seal on plans that effect the life and safety of the public. Such a statement says nothing about the actual skills of said person, particularly outside their area of expertise.
Its really just semantics over the word.
Well if you are a programmer then you should know that semantics can matter a lot.
I wouldn't say you engineer processes. I'd say you develop processes, just as I develop code.
What I do IS engineering by pretty much any commonly accepted definition of the term. I engineer assembly lines but it is engineering all the same. You instruct a machine to do a task which is definitely a form of engineering.
Its just some touchy feely people who want the engineering title. Look at "food service engineer."
That is different. There no engineering is taking place therefore the person doing it is not (at that time) an engineer.
The primary role of an architect in the design of bridges or buildings is to say how it should look or other human interface-related things (floorplans, etc.). Anything related to keeping the structure from collapsing is done by an engineer. If someone wants to make a type of building or bridge that's never been done before, the primary innovations involved are engineering innovations (new techniques, etc.) and they come from engineers. Architects simply don't have the expertise to do this type of work.
For other engineering fields this is even more apparent. Who designs new figher jets in your world view? who designs computers? Look around at all the technology you interact with on a day to day basis and ask yourself who designs it? 99% of the time the answer is "an engineer". It's scary to me how many people in the world think that all these things just fall from the sky.
Indeed there are engineers who focus less on R&D and more on execution using existing tools (like your brother), but that's just one corner of the universe. A large fraction of the engineers in the world are doing R&D which involves quite a bit of innovation and creativity. Most things that involve rote application of existing tools can be transferred to a technician.
I have yet to notice any difference between when my title is Software Engineer and when it's Software Developer. As long as they pay me for doing interesting and useful stuff, I'm happy.
"When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
ABET (the big engineering accreditation board for colleges and universities) also has criteria for certification of Software Engineering programs, which is perhaps a bit more important as all engineers are going to go through academic programs certified by them, but not every engineer is going to get their PE or even take the FE exam that is a lead-up to getting their PE license. I pretty much completely agree with you, though. Some programmers are software engineers and therefore are engineers because they perform engineering work, but not all people who have the title "software engineer" are actually engineers.
Well no is a very small word, so mote isn't entirely inappropriate in context.
Yes and garbage men are sanitation engineers...
A programmer/software developer claiming to be an engineer is a sure sign that the person is 1) not very good and 2) a blowhard.
How about programs that build games shouldn't call themselves engineers.
Programmers are not software engineers.
Software Engineers are, generally, programmers also.
The cesspool just got a check and balance.
We've been building buildings for a very long time: thousands of years. After a while, there was arose a correct way to build things. All the certifications and apprenticeships and oversite as to the practice of building buildings (etc) is the end result of those thousands of years.
I'm willing to bet that there weren't as many certifications and degrees for building bridges in the 1st century.
We've been building software for 60ish years. There isn't one right way to build software. There aren't many wrong ways either - that we could all agree on.
The way that we build software has changed so much in those 60-odd years that I wouldn't expect it to be the same 40 years from now. Hell, we might not even need software in 40 years. We might just be able to tell some general system what we want in natural spoken dialog and it just does what we need.
He was a good programmer so everyone mostly just tolerated it but his signature line was "I'm not a programmer, I'm an ENGINEER!"
I'm like, "ok fine. Go 'Engineer' up a fix to that VB code that -Other Coworker- fucked up, please."
LK
"Hi. This is my friend, Jack Shit, and you don't know him." - Lord Kano
No, but then again, I don't think MDs should be called doctor either.
--signed: Someone who got their maths doctorate in a subfield of psychology (psychometrics), and spends his days being hated by his colleagues (clinical and developmental) for giving a fuck about whether a likert item is generated from a discrete rather than continuous normal distribution.
Titles are meaningless. Results are what matter. Still, if we're going to use them, I think you should have to suffer through an accredited Engineering curriculum in order to have the title "Software Engineer". Perhaps the biggest joke of the whole thing is that for a good many years, an Electrical Engineering degree (like mine) has been considered "relevant" when applying for a software engineering position. I know from experience that I could do most Electrical Engineering jobs with what I learned taking clock radios apart and setting up a Ham radio rig...but the stuff they taught me in Engineering School very rarely came up. Even less so when I became a software engineer a few years later.
Don't forget janitors, they are now called Custodial Engineers.
Microsoft Windows is used on battleships. The system is more than the sum of its parts, I think your black and white view is not very helpful.
I think the point being made is is, they are not actually doing EE or ME work then. They are doing some sort of electrical and mechanical work, but it is not as a professional Engineer.
Troll is not a replacement for I disagree.
I meant to account for real unknowns, like when metal fatigue first was discovered to cause airframe failures. An engineer wasn't considered at fault for that, but they might be today...
Software engineer, train engineer, political engineer, clickbait engineer (ahem)
For two reasons:
1) It would make us Professional Engineers look bad.
2) It would probably result in licensing authorities to apply the NSPE Code of Ethics to the software profession.
Engineers shall not attempt to injure, maliciously or falsely, directly or indirectly, the professional reputation, prospects, practice, or employment of other engineers. Engineers who believe others are guilty of unethical or illegal practice shall present such information to the proper authority for action.
The screaming rants that are so common in the software development world would cost you people your license and job. And pretty soon, there would be nobody left to write code.
An engineer is a professional practitioner of engineering, concerned with applying scientific knowledge, mathematics, and ingenuity to develop solutions for technical, societal and commercial problems.
According to Wikipedia, yes. Maybe we can agree on, if you program an engine you can be called engineer? Seems like a "mote" point.
Science e doesn't operate on consensus, only facts.
I'm afraid the answer is yes.
In most energy and manufacturing systems, there is a control level, which is, to put it frankly: programming.
I think the problem is that is it Professional Engineering?
When 50 percent of Computer Engineering grads can't get a system up and running from scratch, that's a good question.
However, we've also learned that all the credentials testing in programming tends to churn out people who can't code their way out of a paper bag, too.
I'm wary of attempts to further restrict who is called a Computer Engineer, given that.
-- Tigger warning: This post may contain tiggers! --
I used to say that I was a computer programmer. Then companies said that we should call ourselves Software Engineers. This problem being brought up here sounds like sour grapes from other engineering disciplines. The next great argument will be whether there should be train engineer.
They absolutely do, you stupid, arrogant, smug motherfucker.
If 'No', then there are damn few engineers in this country. I work with dozens of mechanical 'engineers' who design chassis and cooling systems, as well as electrical 'engineers' who design boards, backplanes, power supplies, etc. None of them are PEs, have certificates, or are required to have continuing ed.
This is a bullshit question designed to bait software 'engineers' when in reality most 'engineers' in the US don't meet someones version of a privileged 'engineer'.
They shouldn't be called, or call themselves, Engineers unless they actually have an engineering degree and are a member of the appropriate national engineering organisation.
ditto for "architect".
This was settled decades ago, long before programmers started big-noting themselves with professional titles they don't deserve - in many countries it is illegal to call yourself an engineer or architect (or doctor or lawyer etc) without both the qualification AND the membership in the relevant association.
Illegal, but not enforced often these days.
I am a doctor. I hold my Ph.D in Applied Mathematics. It is amazing how many times I have been asked medical questions after having been introduced as "Doctor Gregoire." I've actually explained that, no, I am not a medical doctor. I've then had people say, "Yes but you're a doctor so you must be smart. Could you..."
I guess my point is that there exists some confusion. I'd imagine, or at least not be surprised to find out, quite a few people actually are under the assumption that 'software engineers' are, indeed, subject to licensing and legal liabilities for failures. There should be, I suppose, a subset of programmers who do belong in this class of people. A poster, up thread, indicates that such a program and group exists with formal practices and licensing but this is the first I've heard of it existing.
I don't know what difference it will make, except maybe regulatory restrictions on the title, considering that there are an absurd number of people who assume that my holding a doctorate qualifies me to give medical advice. Sadly, I've personally experienced this with, seemingly, otherwise intelligent people.
"So long and thanks for all the fish."
The discovery of metal fatigue occurred because train axles kept breaking even though they were strong enough to take the expected load. Nobody had put enough strain cycles on steel before that point. When the failures were observed they started to test that condition, found the limits, and stared designing within the newly discovered corpus. That's science. Also engineering.
Oh man, Joey was always so funny. Good call.
Chance favors the prepared mind.
Perfect is the enemy of good.
Anonymous Coward Engineer... that's a special kind that doesn't take any responsibility
I graduated with a computer engineering degree, and was at one time in a computer science program. There are a lot of courses that are similar, and at most colleges and universities students in either program will take many of the same course.
What is different is that the engineering students must take classes that teach them the engineering process. Typically a computer science student is permitted to take the computer engineering courses but they are not required, so it's not improbable for a computer scientist to also be a good engineer.
Engineering to me is a process, and engineers are people that follow a rigorous engineering process. Programming is a part of software engineering but not everything. Software engineers may have programmers that work under their supervision, much like how a mechanical engineer will supervise machinists, or a physician will have nurses and technicians to help with a patient.
When I went to college the first time I had to decide if I wanted to take computer science or computer engineering. What made up my mind was this, a recruiter told me that he preferred to hire computer engineers rather than computer scientists. The engineering students understood the process required to make a good product, and teaching them a computer language on the job was easy. The computer science students knew lots of programming languages, but it was hit or miss on if they knew how to develop a good product, and teaching people how to make a good product on the job was hard.
Another analogy, I'm taking music classes but I would not call myself a musician. I may know how to plunk keys on a piano, and pluck a few notes on a bass, but I know next to nothing on how to write music, proper playing technique, or theory on melodies and harmonics. A good bass player, like a good programmer, can certainly make a lot of money doing what they are good at. A musician, like a software engineer, can understand and explain the why and how of their craft.
I am armed because I am free. I am free because I am armed.
Oh hell no
I do the same for every poorly designed thing I get in my daily life. Certified engineers make/design/develop the programs I work with and they are a piece o shit, just like the cofee machine, the toiled and the elevator. The gutter in my house, my refrigerator and that building that will be demolished who knows when.
There are plenty of engineering fields and people suck in all of them. The fact that programming is not being done properly doesn't mean we should stop calling them engineers.
There are certifying agencies. Including 1 for Data Processing professionals. However, most of us in the field could care less. 1 company I was with wanted to check out the tests they had. They had several senior people (I was 1) take tests in their field. The feedback was pretty consistant - the tests were not broken down into the correct brackets. They dumped the testing agency.
In another case I was required to take a "programming" exam as part of an interview process. Supposed to be generic questions without a language. I pointed out to the tester that 1 question had 2 different correct answers depending on a compile time switch in a language I was familiar with.
A couple of years ago, I got to help write a DB2 certification exam. The problem with that exam is that most people doing the actual work would do it with an open manual next to them, and IBM on the horn to answer questions, not closed book against a clock. (My assignment was 3 questions - 1 on each version of the exam). (A couple of the writers were people that then wrote study books for the very same test)
So the question of certification is who is qualified to write the tests? And how realistic are they?
Sorry, my best resume device is to list some of the things I have done to save companies money. The best 1 so far - found 1 line of code that was holding $10 million dollars of excess inventory. Close second - write a program from scratch and run it within 8 hours to avoid $4 million in IRS fines.
No, we are mechanics working on machines that no one can see, where all of the parts are laid out on the basement floor or our minds.
This "regulation" and "certification" nonsense is modern.
Software engineers are engineers in the classical sense. We carry around hammers (debuggers) and bang on pipes (bugs) to keep complex systems functioning. We also design and implement these complex systems.
Computer Software Cannot Be Engineered
Norman Young
Computer software cannot be engineered because there is no science of computer programs. Science is essential to engineering. The application of scientific models through engineering judgment defines the essence of engineering. Computer programs, as mathematical objects, are not subject to scientific laws. Consequently, by definition, computer software cannot be engineered.
The application of scientific models through engineering judgement,defines the essence of engineering. Engineering itself involves the creation of useful artifacts. What distinguishes engineering from other creative professions is the use of scientific models in creating those artifacts. Engineering judgement chooses among a number of available models to use in solving a problem, balancing risk of failure with the effort of analysis. What characterizes engineering is the scientific underpinnings of at least some of the available models.
Computer programs are mathematical objects. In particular, individual computer programs are specific values in a discretely parameterized model of the computer that executes them. ill The physical computers which execute computer programs have scientific meaning, but the programs themselves have no physical meaning apart from the meaning attributed to them by the computer. Consequently, computer programs are not subject to scientific laws.
As purely mathematical objects, with no underlying science, computer programs and computer software cannot be engineered. ...
For the full text: http://pastebin.com/nUutq9J1
The current state of Software Engineering is sad from a scientific perspective. We learn algorithms and so forth, but have no scientific basis to say one design methodology is better than another. Maintainability is the bottleneck of typical projects, not initial creation.
Software is as much about communicating with future human maintainers as it is communicating with machines. How do you scientifically measure readability and change-ability by future maintainers? Actual tests on a sufficient number of production products is very expensive.
Table-ized A.I.
I think MS Windows has been used to run battleships. At least from what I have read on Slashdot over the years.
On mobile currently so cannot find the relevant article(s), but Windowz has definitely been used in mission//life critical situations.
I have not worked with much industrial control software for around 10 years now. Last I saw (at least here in Australia), Windowz was being used to operate SCADA systems in a variety of situations where the physical structures and machines it was operating and interfacing with were required by law to meet certain engineering and safety requirements.
The structure could be perfectly safe. The mechanical systems could be perfectly safe. All certified and inspected regularly by (real) engineers... Yet I have personally witnessed a software bug (range error) remove a mans arm.
Anyone else involved in the creation of the system would be liable, by law, for a fault that resulted in injury. Yet microsoft, and any/all other software vendors get away scott-free.
No, most programmers are not engineers. Yes, the ones working on critical systems should be held to the same standards as other professional engineers.
Yes, I am both a programmer and software engineer. I'm also a qualified electronic engineer and have both assisted in aeronautical engineering and designed flight surfaces for aircruft. Yes, I have worked on critical systems. No, 90% of my work would not fall under the heading of "Engineering".
Just as a mechanic is not an engineer by default, neither is a programmer and engineer by default.
Is it really such a hard concept to grasp?
FTFY
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
In the steam engine days, the men driving the train had to deal with pipes, temperatures, pressures, valves, etc so the job wasn't a "entry level" position and required some basic understanding of mechanical engineering. Do the people who control the braking and speed of modern trains (especially commuter trains) be called "Engineers"?
It's not a lot different than apprentices and journeymen working for masters in a given trade, educational component not withstanding. Someone can come out of an engineering school with the highest grades and the most respect from their teachers and peers, but they still need a lot of professional development that they won't get from textbooks and academic examples.
Do not look into laser with remaining eye.
And the use of "doctor" in the western world predates the medical usurpation of the term by millennia . .
The moder MD is a "watered down" doctorate: in the classical use of "doctor," it referred to someone who had both acquired and contributed to knowledge. The MD dropped the latter.
The tradeoff is that an MD is far less likely to kill you than their predecessors . . .
The MD stating that "I am a real doctor" is merely amusing and shows his lack of education . . .
hawk, a real doctor, not a physician.
that's a VERY narrow definition and primarily applies ourely to CIVIL engineers with a small bit of mechanical and miniscule amounts of any other engineering specialization as far as what they're thinking is likely to be a professional engineering certificate.
generally speaking it's unnecessary for the vast majority of non civil engineers as it's generally inapplicable as most such certificates as implied focus pretty much on construction with as much federal, state, county, and local building codes.
so only a handful of pes are ever realistically needed, and it generally offers no expanded jobs opportunities or pay along with the greater liability of being directly suable.
it is in fact the hardest thing of being engineer . have colleagues whom preferred go selling instead of programming .... bunch of cowards
Buildings collapse, cars are recalled, hardware fails.
In the US we have "engineers" and then we have "Professional Engineers (PE)". PEs are regulated in the usual US way - the certification and regulation is provided by the professional organization, but the state governments generally require certification in order to do certain types of things or to offer your services to the general public.
Unfortunately, the PE system violates the Bill of Rights, like many things in US law.
Professionalism in engineering has nothing to do with PE status. Anybody that has a sense of professionalism and acts accordingly is entitled, as an exercise of freedom of speech, a fundamental right in a free country, to call themselves 'professional'. If they are an engineer, that implies they can call themselves a professional one.
Most ASIC designers, for example, do not take the PE exam, but they routinely do some of the most complex and difficult engineering the world has ever seen. They are certainly professional engineers.
Laws or precedents to the contrary are illegal (and it is certainly unprofessional for any engineer, or lawyer, or legislator, or anybody else associated with the PE system, not to understand this).
Further, as the right to reasonable conduct arises under the 9th Amendment are part of the right to ethical practice of law, and as calling oneself a professional when acts accordingly is certainly reasonable conduct, creating and sustaining such laws is unethical practice of law (like many other things done by the legal profession).
All too often in US law, when things are done "the usual way" that is synonymous "the unethical way". The US legal profession is in a position of ethical conflict of interest with respect to the nature, scope, and form of the legal system and legal procedures, and always has been. There are major ethics problems still existing in US law that go all the way back to English Common, law things that a more ethical / responsible (and professional) legal profession would have cleaned up a long time ago.
This has come up many times in prior Slashdot discussions. Since they can't be bothered to fix the major ethics problems, it shouldn't be a surprise that they don't fix the minor ones, such as the "PE" problem.
It would be different if they had been smart enough to use a different acronym. For example, GCPE (government certified professional engineer) or something along those lines. Claiming one is certified by the government (or some trade organization), when one is not, is fraud and is very different from stating one is a professional, when one actually is - by any reasonable standard.
Well at least he didn't say mute point... I hear that a lot. Often I get deer in headlights look when I correct them.
Because there's an unlimited supply of them and they demand 60% of a normal salary, compared to actual educated computer scientists? Duh.
My last gig had 15 "software engineers" and 90% of them were "English" or "Marketing" majors.... 2.5yrs later they have yet to churn out the first successful deployment of an unfathomable design for a very simplistic medical search engine that shouldve required no more than 5 ppl and 6mo to complete, max.
Here's a good example of how titles in this stupid IT industry work: Promotions came around and they needed to find a way to reward one person and make the other 14 seem like they just got something.... so they now appoint everyone as software engineer I-IV, and then made new director titles, such as "Director of UI Components" and even "Director of Senior SW Engineers".
I think all of the MBA holders will jump into this thread next, bitching about how you can't be a manager or director without proper understanding of business and knowing how to measure outcomes of success and analyze ROI formulas, etc.
Jesus christ I'm heated now. F**k this, I'm going to the army; where people know their place and keep their mouths shut.
Programming has appropriated both the term 'engineer' and 'architect' from those respective licensed professions. I'm a licensed architect (buildings) and somewhat resent the theft, but I can see why it was appropriated. There isn't another better word that captures the 'idea' of the job.
Architectural and engineering licensing boards are very aggressive about prosecuting anyone who tries to use those terms in the physical disciplines in order to keep a clear understanding with the public as to what they really mean - A professionally educated, trained and licensed person who has significant expertise in the discipline and who can be held liable for errors and omissions.
That horse has left the barn though for programming. The only annoying thing is that I have to filter those jobs out each time when doing a search. "Oh look, there are hundreds of jobs for architects.... Oh, wait..."
I wrote a blog post on this a while back... and suddenly found myself in the midst of a battle between those (like me) who acknowledge that the term "engineering" is used to describe us developers loosely but who realise that (most of) what we do is in no way like formal engineering, and those who are closer to clean room / formal engineers (military and aeronautics software for example) who possibly rightly deserve the title. There are also those who do nothing like engineering but who feel robbed of that title if told their coding is anything less than an engineering discipline. http://blog.iancackett.com/201... I feel that many of us would aspire to move software development in an engineering-like direction, or at least to add formality where it benefits the outcome (product / safety / bugs, etc). But arguing that what most of us do day-to-day (particularly at startups) is engineering, isn't the way to get us there. There's no way the MVP I helped write for my current employer included more than an ounce of engineering formality in its creation. Sure, we have things like test-driven development, continuous integration, load testing, etc. But we don't approach development with the rigour and formality of an engineering discipline.
"An engineer is a professional practitioner of engineering, concerned with applying scientific knowledge, mathematics, and ingenuity to develop solutions for technical, societal and commercial problems." I've meet some 'programmers' who definitely wouldn't qualify but there are quite a few bonafide engineers who develop solutions using scientific knowledge, math, and ingenuity to solve these type of problems. From my vantage, I put 'programmers' in the category of technologies who use the software created by engineers for general consumption. For example, most web site developers. Some off the cuff remark by a game developer isn't going to convince me that intense data mining, cryptology, or the creation of languages, frameworks, or high-performance computing platforms as anything less than engineering. There are a lot of ignorant people who underestimate what goes into building even basic social-media platforms, much more, for a single example, the software that coordinates air travel systems which is unquestionable something that is regulated and better frigging work without bugs.
It's worth noting that the ACM dissolved a joint venture with the IEEE over the question of licensing software engineers. The ACM opposed it while IEEE desired it. The IEEE claims 30 states now require it for software engineers "working on systems that affect the health, safety, and welfare of the public"; I think that's not so; they never list the 30 states. Certainly when I worked on Class II medical devices I was not licensed nor did any licensed engineer sign off on the code.
There is professional licensing for software engineers in at least one state, Texas. To show ridiculous it is, originally it took 16 years to get it without an engineering degree -- e.g., with only a CS degree. Now that's down to 8, of supervised work.
No
It's a mote point. No matter what the opinion, the word Engineer is commonly included in computer related position titles (programming, networking, etc.) by companies, hiring agents, in normal conversation, etc. Once a new meaning for a word has entered the common vernacular it's near impossible to pull it back...
Moot point. Not mote point. Unless you have a mote in the eye!
Coders don't really design software. They just hack away at the keyboard until something works. Software Engineers however put a lot of time in designing the structure (architecture) of the software system in the same way a mechanical or civil engineer would do. Software Engineers usually tend to occupy project lead and management positions. Coders just start at the keyboard and hack away without regard for form or structure. Let's start making the distinction between the two.
Programmers should only be called "engineers" if the purpose is to insult the programmers.
Just because a material is tested and certified does not mean there will not be an unforseen occurrence that will cause a new type of failure. In this instance it is not the engineer's failure.
You do realize that everything from ships to nuclear power plants are run by software. Do you really think that there is no testing and accountability for software development? In some cases I would agree with you; but there are slackers in every engineering field. This doesn't mean it isn't engineering, but only that you have a poor engineer.
Until we can come up with a repeatable process and verification system that produces software that could be warranted, using the term engineer is just masturbation.
Yes, I want strict regulations on software development.
If he had them in place in the mid-90's PHP never would have happened and the Web would be a safer place.
No one, without proper education and certification should be allowed to write software that is
1) used by the public
2) connects to the internet
So many issues would disappear with proper regulation.
Any idiot can read PHP for Retards and put up a website. There are even companies that will hire said idiot. That is wrong.
in this article. SOME people called "Engineers" those things apply to; but not most, by far.
Changing a title doesn't resolve underlying complaints. Failing to address the underlying issues simply perpetuates them. Simply changing what you call yourself is stupid and cheap.
I agree that the term "Engineer" is used too loosely. ;)
When I advanced in my responsibilities from merely writing code to designing the structure of applications, my title became Application Architect. "Engineer" is commonly used to describe people who design and implement deployment strategies, as DevOps Engineer - I think that is appropriate, because they are not typically involved in developing applications or application architecture. DevOps Engineers need to think like "engineers" to create a sound and efficient process, with deep knowledge of the tools and platforms involved. There is a direct functional line from "catapult" engineers to "software delivery" engineers. - they both throw shit at stuff
As a consultant, my actual title is not very precise describing my duties: Senior Developer, Application Architect, Software Engineer, Drupal Specialist are used interchangeably - I am typically responsible for architecting solutions, developing applications with code, and evaluating and improving deployment processes. When I was asked to explain my work in lay terms, I said, "I build logical machines that achieve business goals" - although my machines are mostly virtual, they need to be optimally engineered just like physical machines.
In larger teams, there is more specialization, and I am comfortable delegating deployment to DevOps Engineers. I have observed that some DevOps Engineers don't give a damn about the end user experience; usually their decisions do not impact the UI/UX of an application, but sometimes they do, then I may have to communicate a concern.
Just because a material is tested and certified does not mean there will not be an unforseen occurrence that will cause a new type of failure. In this instance it is not the engineer's failure.
Got a modern example?
That is unless you hold a PE in Software Engineering:
http://ncees.org/about-ncees/n...
Indeed. It's not that programmers call themselves engineers, it's that *everyone else* uses the term to describe anyone in a tech job.
Is it safe to say that if you spend more time coding than thinking, you're not an engineer?
Programming is simple grunt work compared to hardware design, that's why morons like you can do it.
No
It's a question of adjectives, what is software engineering. It's correct to say no is not the same thing as civil, mechanical, electrical or military engineering no.
Is programming software engineering? no.
Has the discipline of software engineering been codified? not completely, but much of the life cycle has been. It's too much of a moving target to nail it down, and therein is the rub. The word engineering comes from the Latin for use of ingenuity. When you objectively look at what developing software is as a discipline, it's the pinnacle of human accomplishment. Engineers from other disciplines may jealously want their honorific, but in reality they aspire to what software engineering is.
Commercial speech has a long tradition of being regulated. You can argue that this violates the First Amendment, but at the end of the day no one wants someone who simply claims to be "professional" signing off on engineering drawings and so you'll have little support.
No one is claiming that a PE is a government certification - it's self-regulation by the profession. It's just a certification that the government recognizes. You can call yourself a professional (lower case "p"), just not a "Professional Engineer" - because, like you say, that would be fraud.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
Licensed software engineers? Who is licensing software engineers? That's not a thing.
Medical Doctors were physicians for a long time, and there training was through apprenticeship, rather than University. They devised the MD to advertise that their expertise was on par with University professors, once the standard changed to academic training. Despite the fact that people these days tend to think that Ph D's are putting on airs by referring to themselves "Doctor"s, the truth of the matter is quite the reverse.
Architects used to do all of the engineering on the buildings they designed. Beginning with the modernist movement, where aesthetics incorporated engineering sophistication as an element of the style, architecture split into sub-disciplines, with structural, mechanical and electrical systems being designed by specialists in each of those area, at least for for more important buildings. There are still many architects who engineer their own buildings as a constituent part of the design process. Santiago Calatrava comes to mind among the current elite. Most "showcase" buildings today require an engineer's understanding of structural forms to even begin their designs. There are many architects practicing today who are well versed in engineering, many even licensed as engineers.
That being said, with the rise of architectural engineering sub-disciplines, it is true that the average architect today is trained in a smaller proportion of the total engineering curriculum than they probably would have been fifty or a hundred years ago. To be fair, though, engineers don't specialize in all of the areas needed to design a building, either. Systems have become more complex, and regulatory requirements and the associated risk have made subcontracting to experts the safer route for the modern practitioner in many situations.
Even non PE civil engineers are educated in the field.
You can't read Civil Engineering for dummies and get a job unlike many programming shops.
People are getting programming jobs with zero qualifications.
But they have degrees.
Many so-called professional programmers don't even have a degree.
Real Engineers drive trains, not slide rules!
Software Engineering encompasses all the phases of the Software Development Life Cycle: Analysis, Design, Code, Test, Maintain. In non-agile development shops, where rolls are strictly separated, then the person relegated to doing the programming should probably be called a programmer or developer or coder. A lot of companies use the separate phases as promotional carrots. Programming is deemed the lowest level, or perhaps Testing is. Then one gets promoted to "designer" or "architect" or "systems analyst" (back in the day). This is cheap malpractice on the part of bad companies. Flat out do not work for companies that do this. If during the interview you discover that design and programming are strictly separated and done by different people, just politely leave the interview as soon as possible and never return.
But "engineer" rolls off the tongue easier than "clueless code monkey that could not give $h1T about what this is actually supposed to do" or does this discussion go beyond microsoft?
Old school programmers from the 1960's, 70's and 80's are engineers and should be called such. All programmers after those decades are just programmers.
I too think public executions should be held to higher standards.
(reprinted from http://engineering.tripadvisor.com/no-software-engineers-sorry-exactly-the-opposite/)
This post originally appeared as part of an internal email thread at TripAdvisor. If you do not enjoy ranting on the internet (and if you say you don’t, you are not kidding anyone), please read no further.
So last Friday, Ian Bogost’s post on software engineering appeared on TripAdvisor’s internal humor mailing list, “catbert”. In it, he shares his opinion that software engineers aren’t really engineers proper, because of the flaws that sometime appear.
He is entitled to his opinion, insulting as it may be. I completely disagree. In fact, I think that software engineering is the purest form of engineering. As a software engineer, when I write down my ideas for something I am building, that something simply exists. There is no need to pour hot metal or use big cranes. Lots of these non-engineering activities are required in all other industries. Software is the only industry not encumbered with physical constraints.
Because of this lack of friction, software artifacts reach a level of complexity that no other form of engineering can ever approach. The guts of most computer programs today rely on layer upon layer of abstraction, providing more and more functionality at each layer. Gone are the days when a single person can know how each component of a computer system works, down to the actual electronics (an Apple ][ for me). However, that’s OK. I think this complexity can be beautiful.
Sure it can introduce unforeseen problems, but being so much more complex, that is inevitable. The alternative to avoiding software problems is to keep programs simple. Unfortunately, if you wanted to keep software that simple, almost all the innovation you see today would not exist.
Furthermore, the author completely misses the point about software design and real business opportunities. In order to fix a software bug, you can just release a patch. No need to tear down the bridge. Mr. Bogost seems to think this is a bug in the industry and not a feature. He points to Facebook’s change in philosophy as evidence that fast moving software development is a wrong-headed idea, ignoring the fact that Facebook wouldn’t be there if not for their original mantra.
Sure there are areas where we need the code to be rock solid. As engineers, we make the decision to design for speed or design for stability on a case by case basis. Those other forms of engineering simply don’t have the option of designing for speed.
I’m a bit surprised that Mr. Bogost, being a game designer, doesn’t realize that. Video games, unlike nuclear power plants, are one of the areas where a designer has to take chances and move fast. If not, the end result may be a perfectly rock solid implementation of Tetris, rather than something truly creative, interesting, or leading edge.
For all you software engineers out there: Next time you pass a building under construction, stop and take a close look at the simplistic symmetry of it’s design. Try not to laugh.
And apologies to the architects that designed our new building, which I think is awesome.
Relevant SMBC.
Examine even your most deeply held beliefs. Nobody is always right.
Programming is different from Engineering, in a lot of ways.
There is such a thing as a "Software Engineer", such as myself. They have a degree in Electical Engineering, specializing in Electronics, and a degree in Computer Science, specializing in system design.
And twenty year's experience, to learn Murphy's Law! 8-)
The article mentions "Professional Engineers", but that is different from most Engineers. A "PE" is regulated and certified by the state, as in: taking a big test.
And:
"If Engineers built buildings the way Programmers write programs, the first woodpecker that came along would destroy civilization!"
Consider how you would feel, if you could be arrested and jailed for a software bug...
Oh, I see, you're conflating professional liability with product liability.
Welcome to the rice fields (aka software engineering).
Which is backwards as hell, and most developed countries realize taxes should be used to certify occupations that affect the public welfare.
If you ignore ACs because they are anonymous - you're an idiot.
Huh? Most developed countries have government regulation, not free market regulation, and are better for it.
If you ignore ACs because they are anonymous - you're an idiot.
It's two means to the same end. We don't have a regulation problem with engineers in the US - we are quite competitive globally and when our infrastructure falls down it is from simple neglect and generally not from engineering deficiencies. Almost every profession in the US is regulated in the same way, and for the most part it works just fine. Doctors have the Medical Boards, lawyers have the Bar - it's a public-private hybrid, but it's still regulation and the entities are non-profit, bureaucratic, and very government-like. Like I said, it's not the most efficient way to do things, but sometimes efficiency takes a back seat. Moving it all over to some government agency would serve no purpose other than to crown a new Caesar.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.