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
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.
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.
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.
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
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.
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.
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.
Software Priest? ... Software Mortician?
No, these are apt. There are times where intercessory prayer for a test build is needed, and others where a grieving stake holder needs to be told their beloved application has passed on to a better system.
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
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?
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.
"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...
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.
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.
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.
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?
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.
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...
Also question the source of the /. article. A "Game designer" wants to define who is an engineer and who isn't? Shouldn't we leave that up to Medieval History majors?
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
As long as there is a steady pay check involved.
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.
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
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.
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.
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.
says the tech industry has "cheapened" the title
I agree that software developers shouldn't be called engineers, but for the opposite reason. Developers are more than engineers, they're artists and intuitives. Calling them engineers cheapens the remarkability of the work software developers do. Treats development as if it was nothing more than the rote application of math to science.
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
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
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.
I think that bridges and skyscrapers are designed by architects, not engineers.
I think that engineers tend to be really smart folks. My brother is a mining engineer and in his case I know it for certain. But it's not his job to imagine innovative ways of doing things; it's his job to calculate the correct way to do a thing.
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
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.
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.
What about if the person builds a circuit board that uses physical transistors to solve a problem?
Move up 1 abstraction level. Now, the individual physical transistors are crammed into a chip, and the engineer just chooses a routing path on the chip (called a gate array) between the existing transistors.
Next level up is basically to use a network of truth table solver ICs (FPGA LUTs)
Next level up is to define a micrcontroller and then write a series of steps for it to perform.
Next level up is to use a premade microcontroller and define those steps.
Next level up is embedded C...
Point is, software engineers are engineers. Where you're confused is most programmers do not actually use most engineering techniques, and just create quick and relatively sloppy solutions. Kind of like if architects skipped most of the math and just sketched up a building real quick, stopping the moment it looks cool. They'd order a bunch of buildings built and when they fall down, they'd grumble and fix the mistake that caused the building to collapse, generally using the laziest shortcut available to fix the problem.