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."
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.
Not all programmes should be called engineers. Only some of them should.
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.
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.
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.
That applies even moreso to non-technical degrees that cost $200,000 or more don't even bother to teach students how to say "Do you want fries with that?" with a smile.
But Little Precious Flower needs that B.A. degree!
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
And when it slows down the whole thing or introduces bugs, they complain that you are not doing your job properly. And the money they save by using 3rd party libraries sure ain't going into your paycheck either.
Fight for your bitcoins!
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.
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.
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.
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...
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.