Programmers should not call themselves engineers (2015)(theatlantic.com)
theatlantic.com
Programmers should not call themselves engineers (2015)
https://www.theatlantic.com/technology/archive/2015/11/programmers-should-not-call-themselves-engineers/414271/?utm_source=mitfb&single_page=true
148 comments
>I don't think anyone died as a result of a lack of proper collaboration and regulation in software development.
Come work in healthcare, you may change your mind.
In healthcare, a lack of domain expertise, rigor, collaboration, and regulation kills people every day. And inhibits our science. And is the root cause of billions a week in waste.
Yes, most web content and it's delivery we could do well, or be better off, without. But in many jobs, the software constrains or enables behaviors that have real consequences.
Come work in healthcare, you may change your mind.
In healthcare, a lack of domain expertise, rigor, collaboration, and regulation kills people every day. And inhibits our science. And is the root cause of billions a week in waste.
Yes, most web content and it's delivery we could do well, or be better off, without. But in many jobs, the software constrains or enables behaviors that have real consequences.
When I worked in healthcare, every piece of software that interacted with a human in a healthcare related situation was extensively regulated. There was an enormous amount of documentation, change control, effort to change things (for example, updating the firmware was considered a major change to the system and had to be documented in detail).
Are you talking about research, rather than healthcare?
Are you talking about research, rather than healthcare?
[deleted]
Pointing out failures in engineering isn't a productive exercise.
The difference is that engineers have both professional ethical obligations that they can fall back on and accountability. It is possible that the guy who stamped the sinking skyscraper will lose his license, for example.
In technology, the lack of a real engineering culture is a profoundly negative thing in many ways. When your boss demands that you do something clearly unethical, you have no backdrop as a professional to say "I cannot do this". Engineers, attorneys and CPAs have that.
The difference is that engineers have both professional ethical obligations that they can fall back on and accountability. It is possible that the guy who stamped the sinking skyscraper will lose his license, for example.
In technology, the lack of a real engineering culture is a profoundly negative thing in many ways. When your boss demands that you do something clearly unethical, you have no backdrop as a professional to say "I cannot do this". Engineers, attorneys and CPAs have that.
Except, you know, there's the law I could refer to.
Or like two months ago when the guy who hired me wanted me to ship software that was clearly going to explode in production and I told him that I'm not interested in having that kind of disaster on my conscience and that he would just have to deal with the fact that its going to take longer to ship.
Saying no is about having a spine, not about being able to hide behind something that you can hold against your employer. Maybe they're right. If you are incapable of making decisions in a professional fashion, you should not call yourself an engineer.
Or like two months ago when the guy who hired me wanted me to ship software that was clearly going to explode in production and I told him that I'm not interested in having that kind of disaster on my conscience and that he would just have to deal with the fact that its going to take longer to ship.
Saying no is about having a spine, not about being able to hide behind something that you can hold against your employer. Maybe they're right. If you are incapable of making decisions in a professional fashion, you should not call yourself an engineer.
Ethics can be a tough thing, and it can take more than just a spine to refuse unethical work. Identifying something as being unethical in the first place can be a challenge for someone new to a discipline. Having a professional community that explicitly teaches and tests you about their Code of Ethics gives you a framework and support network to help you with those decisions. It's also kind of a cultural thing. Having transitioned from chemical engineering to artificial intelligence, I'm amazed at the different cultures regarding ethics. Not having an entity responsible for defining the code of ethics in my new discipline, and the lack of community around it, has made it much more difficult to discuss and challenge the ethical decisions we make. Most of the time, when I bring up ethical discussions, my classmates and professors respond with "that's not our responsibility". When I ask whose responsibility it is, the answer is always "someone else's".
This is simply not true for all tech companies. I've had instances where I said no due to asks being not in line with company policies and we changed course to tackle the problem another way. I work at Microsoft and there's severe rules against retaliation should your boss penalize you for something like this.
For every Microsoft, you have 50 pretty much any advertising network, random consulting firm or other company that doesn't give a shit.
Exactly, having the backing of a profession that expects and mandates you uphold its Code of Ethics is a very powerful thing. Refusing to do work you deem unethical is much easier when you have the support, expectation and legal obligation to do so.
There are a number of well known software bugs that killed people. For example the Therac-25 is mentioned in every software engineering course.
Engineers have a way of falling on their swords when they #$%^ up that (at least in my experience) tech bros don't...
http://www.theolympian.com/news/local/article42065382.html
http://www.theolympian.com/news/local/article42065382.html
[deleted]
A very real and sad example of problems with software.
http://www-users.math.umn.edu/~arnold/disasters/patriot.html
http://www-users.math.umn.edu/~arnold/disasters/patriot.html
What about failures in medical software, airplane safety software, or military software?
Most planes crash because of something else than software... Most casualties in the medical domain are not caused by software... to say nothing about war casualties.
It's not sand in the oil, it's the lack of a filter, that cause a crash. It's not human error, it's badly designed UI. It's not aging, it's improper material choice. It's not a manufacturing problem, it's a design problem with the manufacturing process.
Software is just yet another imperfect engineering domain.
It's too easy to point to software engineering as fundamentally flawed without looking at all the flaws in engineering(TM)...
It's not sand in the oil, it's the lack of a filter, that cause a crash. It's not human error, it's badly designed UI. It's not aging, it's improper material choice. It's not a manufacturing problem, it's a design problem with the manufacturing process.
Software is just yet another imperfect engineering domain.
It's too easy to point to software engineering as fundamentally flawed without looking at all the flaws in engineering(TM)...
To round out your point: some failures are the result of perfectly valid cost/risk trade-offs.
I call myself a Software Engineer specifically because I see it as different to being a programmer. I don't just write code, I try to solve problems in a rigorous and maintainable way, while being aware of the wider implications of my work to the business, our customers, and anyone else who might be affected by it. Sure we don't have the same regulation as civil engineers, but I try to do my work in the same spirit.
As part of this, I have a "masters of engineering" in computer science, which again, while not the same as civil engineers, still had a lot more wider study than a standard computer science degree.
I think programmers should do more engineering, and I think they should be recognised as engineers when they do.
As part of this, I have a "masters of engineering" in computer science, which again, while not the same as civil engineers, still had a lot more wider study than a standard computer science degree.
I think programmers should do more engineering, and I think they should be recognised as engineers when they do.
This misses the point that all other types of engineering are regulated and licensed.
Software Engineering is recognized as Engineering both by IEEE and by Professional Engineers of Ontario (or other provinces) who are members of Engineers Canada.
Certification does exist....it's not widely used or accepted because in most cases, companies want developers not engineers.
To add to it, the only thing stopping Software Engineers from becoming members of the above mentioned organizations is a code of ethics (and experience) - not knowledge or know-how.
Certification does exist....it's not widely used or accepted because in most cases, companies want developers not engineers.
To add to it, the only thing stopping Software Engineers from becoming members of the above mentioned organizations is a code of ethics (and experience) - not knowledge or know-how.
"Engineer" is a protected title in Canada (like "Lawyer" or "Doctor", although not as strictly enforced). You can't use it unless you're a member of your province's professional engineer organization.
It's incorrect to say an engineer can "become" a member of one of these organizations, because you're not legally an engineer until you are a certified member.
It's incorrect to say an engineer can "become" a member of one of these organizations, because you're not legally an engineer until you are a certified member.
> Certification does exist....it's not widely used or accepted
That's an understatement. Was speaking to a fellow engineer recently, and he claimed that there are really only two licensed software engineers in all of Toronto. We probably have tens of thousands of software developers.
That's an understatement. Was speaking to a fellow engineer recently, and he claimed that there are really only two licensed software engineers in all of Toronto. We probably have tens of thousands of software developers.
The only place where I've seen the certification as a requirement is govt jobs (and UfT I believe).
Apart from those two, I've yet to find even a reference for it (let alone a requirement) - which is a cycle because one of the requirements of being a PEO is 12 months of work experience under a PEO (which won't happen as there aren't enough PEOs - the chicken and egg problem).
Apart from those two, I've yet to find even a reference for it (let alone a requirement) - which is a cycle because one of the requirements of being a PEO is 12 months of work experience under a PEO (which won't happen as there aren't enough PEOs - the chicken and egg problem).
Can you link to the U of T job with the cert requirement?
Has that always been? Were the first engineers regulated and licensed? By whom?
Perhaps we're just looking at a category of engineering that is not yet at that level of maturity.
Perhaps we're just looking at a category of engineering that is not yet at that level of maturity.
All? Are people that work in music studios (Sound Engineers) regulated? I have know people that have gone to Full Sail (one of those 40,000 for-profit schools) That have gone on to be "Engineers". Engineer simply means "one who engineers things".... or drives a train.
We have regulations. I deal with the data protection act, if you use medical records there's lots of regulation around that. I'd argue that there's plenty of engineering that doesn't have regulation as well.
I think engineering is less about adhering to regulations, and more about solving problems in a wider context.
I think engineering is less about adhering to regulations, and more about solving problems in a wider context.
If you take a look at the definition of engineer, nowhere does it say that you must have a license.
OTOH, the same principles behind civil engineering apply today and 10 years in the future, which means it can be regulated. Just think what this would mean for software, taking into account the iPhone is 10 years old.
...or at least ignores it without a reason.
> This misses the point that all other types of engineering are regulated and licensed.
Software is going to be regulated, licensed, and unionized within the next ten years. The main reason it's not currently is because the best practices have historically changed every couple years due to Moore's Law, but there is about to be an extended slowdown that will give the industry the time it needs to get its act together.
Software is going to be regulated, licensed, and unionized within the next ten years. The main reason it's not currently is because the best practices have historically changed every couple years due to Moore's Law, but there is about to be an extended slowdown that will give the industry the time it needs to get its act together.
Care to take a bet on that?
We just need to nail down some details: what jurisdiction(s) are we talking about? And what do you mean by licenced?: eg people without the licence won't be allowed to program computers?
What odds are you offering?
I am pretty confident, so I am happy to give you ten to one odds. Ie you pay me 1 dollar if no regulation&unionization happens, I pay you 10 if it does.
We just need to nail down some details: what jurisdiction(s) are we talking about? And what do you mean by licenced?: eg people without the licence won't be allowed to program computers?
What odds are you offering?
I am pretty confident, so I am happy to give you ten to one odds. Ie you pay me 1 dollar if no regulation&unionization happens, I pay you 10 if it does.
Not interested in betting.
> What jurisdiction(s) are we talking about?
But to clarify, I'm talking about the U.S.
> And what do you mean by licenced?: eg people without the licence won't be allowed to program computers?
I think at least one of the big tech firms will be unionized within the next five years, with more following soon after. I think initially people already employed will be grandfathered in without any licensing requirements. But within a few years, I think folks are going to have to demonstrate basic knowledge of security principles in order to become union members.
I don't think you will need a certification to work in the industry in the immediate future, but I think that tech employers will have a clear choice in choosing between union and non union employees.
> What jurisdiction(s) are we talking about?
But to clarify, I'm talking about the U.S.
> And what do you mean by licenced?: eg people without the licence won't be allowed to program computers?
I think at least one of the big tech firms will be unionized within the next five years, with more following soon after. I think initially people already employed will be grandfathered in without any licensing requirements. But within a few years, I think folks are going to have to demonstrate basic knowledge of security principles in order to become union members.
I don't think you will need a certification to work in the industry in the immediate future, but I think that tech employers will have a clear choice in choosing between union and non union employees.
It's not about the money, it's about going on public record (and also about nailing down the odds you are willing to give).
Interesting perspective you have. May I ask what makes you think so? Any current indications? What could go otherwise, and why? Do you see the beginning of these trends already?
I would be very surprised if any of the big American big tech companies (say, Microsoft, Google, Facebook, Amazon or any other company that rises to similar status in the next five years) will get unionised like you say.
There are already certificates available for employers to judge: be that university issued degrees or industry certificates like from Cisco or Microsoft. From all I can tell, the top employers don't care about them (and if anything, I have seen people scanning resumes react negatively to CVs claiming industry certifications). So current trends don't seem to point in your direction---as far as I can tell.
Interesting perspective you have. May I ask what makes you think so? Any current indications? What could go otherwise, and why? Do you see the beginning of these trends already?
I would be very surprised if any of the big American big tech companies (say, Microsoft, Google, Facebook, Amazon or any other company that rises to similar status in the next five years) will get unionised like you say.
There are already certificates available for employers to judge: be that university issued degrees or industry certificates like from Cisco or Microsoft. From all I can tell, the top employers don't care about them (and if anything, I have seen people scanning resumes react negatively to CVs claiming industry certifications). So current trends don't seem to point in your direction---as far as I can tell.
> May I ask what makes you think so? Any current indications? What could go otherwise, and why? Do you see the beginning of these trends already?
Basically there are already people quietly working on this, and when those efforts surface it's going to become apparent that it's in everyone's best interests to go along.
Unlike other industries, unionization in tech isn't going to be about negotiating salaries. Those are already good enough, and there is zero incentive for workers to organize around standardized wages.
Instead, tech workers are going to negotiate for things like longer periods to exercise their options after changing employers, and ownership over their side projects. And in exchange, my prediction is that management is going to negotiate for labor to become more self-policing to lower their costs of hiring and risk exposure.
Basically there are already people quietly working on this, and when those efforts surface it's going to become apparent that it's in everyone's best interests to go along.
Unlike other industries, unionization in tech isn't going to be about negotiating salaries. Those are already good enough, and there is zero incentive for workers to organize around standardized wages.
Instead, tech workers are going to negotiate for things like longer periods to exercise their options after changing employers, and ownership over their side projects. And in exchange, my prediction is that management is going to negotiate for labor to become more self-policing to lower their costs of hiring and risk exposure.
Interesting. Any links to places that document these quiet efforts? (Somebody's blog post or so is perfectly fine.)
There is a constant: people using memory-unsafe languages, and then collective shrugging after the same things have happened over and over. Cloudbleed? Old news by now...
You say that like it's a good thing?
We cannot retrofit these qualifications onto what have always been arbitrary titles, just because it sounds plausible. Imagine you are reading a candidate's resume. At one past job they were called "Software Engineer" and at another they were called "Software Developer". Nobody would presume to say to the candidate, "So, I see you did rigorous development with proper quality controls and metrics at Company A, but you did move-fast-break-things development at Company B?" You can't infer that from the job title, because the title is just whatever each company feels like calling programmers.
"I try to solve problems in a rigorous and maintainable way"
The original linked article was written by someone who's never engineered anything and clearly has no social or cultural connection with any engineers, but I can see in one line that you and I are at least partially on the same page about what engineering is, which is not much of an endorsement for the article.
The critical difference between science, engineering, and art/craft is engineering involves highly predictable well trodden ground where simulation always corresponds to measured reality. The predictive process is complicated and takes a long time and a lot of effort to learn and ingrain. The aesthetics and tradition don't matter as much (or at all) compared to the predictable performance and predictable cost. That's engineering.
The difference between a science and engineering is an engineers output is optimized to minimal cost yet fits a predictable yet variable safety envelope. That column will not buckle with 99.999% odds over the lifetime of the building if built to commercial standards and my specs. Science is much less predictable and its criteria for prediction is much lower and generally not "safety of life" related and tends to be extremely abstract. Is that theoretical cosmological model interesting and not provably invalid? OK publish. Does that biomedical pharma experiment have more than 2 sigma of abstract statistical significance or whatever the statistical flavor is for pharma research today? OK publish. Science can of course eventually turn into engineering... A lot of chemeng make a lot of money turning lab bench scale processes into factory scale processes, they are engineers because they understand and predict scalability, unlike computer scientists who famously do not.
The difference between craft/art and engineering is again safety of life and predictability but in craft/art you don't care about optimizing cost and safety as primary criteria. Does that custom bookcase have nice proportions? Is the wood grain clear? Is the stain too dark or too light or just right? Sometimes craftsmen such as framing carpenters need help from an engineer for a wide beam or similar weirdness but most of craft/art boils down to "grandpa put wall studs on 16 inch centers so I will too". Building codes for the building trades are written in human blood, not calculus math, for example. Somebody got electrocuted doing that, gets a line in the NEC or building code, we'd rather figure out the size of that weird beam using math rather than seeing if it collapses is structural engineering.
Very few people write code in an engineering fashion where the entire process is predictable and heavily testable against reality and human lives depend upon it. Some embedded stuff like PID controllers in factories or anti-lock brakes are like that. Your average web framework CRUD app, not so much, who knows what it'll do, and when it fails thousands will not die in the crash/collapse.
The original linked article was written by someone who's never engineered anything and clearly has no social or cultural connection with any engineers, but I can see in one line that you and I are at least partially on the same page about what engineering is, which is not much of an endorsement for the article.
The critical difference between science, engineering, and art/craft is engineering involves highly predictable well trodden ground where simulation always corresponds to measured reality. The predictive process is complicated and takes a long time and a lot of effort to learn and ingrain. The aesthetics and tradition don't matter as much (or at all) compared to the predictable performance and predictable cost. That's engineering.
The difference between a science and engineering is an engineers output is optimized to minimal cost yet fits a predictable yet variable safety envelope. That column will not buckle with 99.999% odds over the lifetime of the building if built to commercial standards and my specs. Science is much less predictable and its criteria for prediction is much lower and generally not "safety of life" related and tends to be extremely abstract. Is that theoretical cosmological model interesting and not provably invalid? OK publish. Does that biomedical pharma experiment have more than 2 sigma of abstract statistical significance or whatever the statistical flavor is for pharma research today? OK publish. Science can of course eventually turn into engineering... A lot of chemeng make a lot of money turning lab bench scale processes into factory scale processes, they are engineers because they understand and predict scalability, unlike computer scientists who famously do not.
The difference between craft/art and engineering is again safety of life and predictability but in craft/art you don't care about optimizing cost and safety as primary criteria. Does that custom bookcase have nice proportions? Is the wood grain clear? Is the stain too dark or too light or just right? Sometimes craftsmen such as framing carpenters need help from an engineer for a wide beam or similar weirdness but most of craft/art boils down to "grandpa put wall studs on 16 inch centers so I will too". Building codes for the building trades are written in human blood, not calculus math, for example. Somebody got electrocuted doing that, gets a line in the NEC or building code, we'd rather figure out the size of that weird beam using math rather than seeing if it collapses is structural engineering.
Very few people write code in an engineering fashion where the entire process is predictable and heavily testable against reality and human lives depend upon it. Some embedded stuff like PID controllers in factories or anti-lock brakes are like that. Your average web framework CRUD app, not so much, who knows what it'll do, and when it fails thousands will not die in the crash/collapse.
Agreed. And I work on a CRUD web app mostly, but I try to bring the same spirit into my work there. It's not the same, but I strongly believe programming can be done in a pragmatically rigorous and repeatable way.
The author of the article is indeed not an engineer, but he did work as a programmer at various startups for about 5 years (before he changed careers by doing a PhD in another field), which I believe is much of his context for this article. It doesn't take a lot of benefit of the doubt to believe that during that period, he ran into a number of fellow programmers who called themselves "engineers" who were not really doing anything resembling engineering.
But the original linked article missed why they were not engineers because OP didn't know what an engineer is any more than his coworkers.
Its like watching DnD players who pretend to be wizards while playing the game, argue out of game about why everyone else isn't a real wizard yet getting it all wrong, blaming it on unavailability of components such as ground up unicorn horns, or lack of authority such as a diploma declaring them trained wizards from Hogwarts. They are correct in that they're not really wizards, but they get the reasoning for why they're not wizards wrong. Which is kinda important if the implication is that a lot of software devs want to be wizards, er engineers.
Its like watching DnD players who pretend to be wizards while playing the game, argue out of game about why everyone else isn't a real wizard yet getting it all wrong, blaming it on unavailability of components such as ground up unicorn horns, or lack of authority such as a diploma declaring them trained wizards from Hogwarts. They are correct in that they're not really wizards, but they get the reasoning for why they're not wizards wrong. Which is kinda important if the implication is that a lot of software devs want to be wizards, er engineers.
> It undermines a long tradition of designing and building infrastructure in the public interest.
The author should know that the word engineer comes from the military.
> The term engineering itself has a much more recent etymology, deriving from the word engineer, which itself dates back to 1325, when an engine’er (literally, one who operates an engine) originally referred to "a constructor of military engines."
(from https://en.wikipedia.org/wiki/History_of_engineering)
The author should know that the word engineer comes from the military.
> The term engineering itself has a much more recent etymology, deriving from the word engineer, which itself dates back to 1325, when an engine’er (literally, one who operates an engine) originally referred to "a constructor of military engines."
(from https://en.wikipedia.org/wiki/History_of_engineering)
I recently visited Berlin to research about the German Freelance Visa [1] after being rejected by multiple local startups that were looking for Software Engineers with +3 years of work experience. I asked for feedback to one of them and was told that I should not consider myself an "engineer" because I don't have an university degree in the field, even with +9 years of work experience. I asked more people about the topic and most of them agreed that I should call myself a Software Developer instead since I am self-taught. What do you think about it?
EDIT: To add a bit more, I don't mind the title, you always end up doing more or less the same things, many companies love the titles though. Some of my friends have titles like "Lead Developer", "Senior Software Engineer", "CTO", "Back-End Developer", etc and they all do pretty much the same thing that I do, so I don't see the point on nitpicking my resume. I will surely take the advice and start calling myself a "Software Developer" instead of "Software Engineer" because I agree that calling myself an engineer without a formal education is misleading.
[1] https://service.berlin.de/dienstleistung/305249/en/
EDIT: To add a bit more, I don't mind the title, you always end up doing more or less the same things, many companies love the titles though. Some of my friends have titles like "Lead Developer", "Senior Software Engineer", "CTO", "Back-End Developer", etc and they all do pretty much the same thing that I do, so I don't see the point on nitpicking my resume. I will surely take the advice and start calling myself a "Software Developer" instead of "Software Engineer" because I agree that calling myself an engineer without a formal education is misleading.
[1] https://service.berlin.de/dienstleistung/305249/en/
Yes, German companies love their degrees...
I work as a Freelancer too and all the German contract jobs 'require' a degree 'or similar experience'.
In the end, explaining 'similar experience' is a struggle.
You even have to pay less taxes if you do 'consulting of higher value' as a freelancer (called freiberufler status) but explaining this without a degree is a struggle too.
In the end I'm happy about my B.Sc. in Computer Science. When I tell people I have it, I get no more questions asked...
I work as a Freelancer too and all the German contract jobs 'require' a degree 'or similar experience'.
In the end, explaining 'similar experience' is a struggle.
You even have to pay less taxes if you do 'consulting of higher value' as a freelancer (called freiberufler status) but explaining this without a degree is a struggle too.
In the end I'm happy about my B.Sc. in Computer Science. When I tell people I have it, I get no more questions asked...
Yeah, the Freiberufler status is crazy.
I don't mind having grown up in Germany---but I don't miss never having worked there.
I don't mind having grown up in Germany---but I don't miss never having worked there.
[deleted]
20 years in the industry with no degree: Engineer is just a word. Call yourself that if it gets you the job.
This is what you can find on the wikipedia entry on engineers [0]:
> The foundation education of an engineer is typically a 4-year bachelor's degree or in some countries, a master's degree in an engineering discipline..
I would add further that, following the above, a software engineer is someone who has a formal higher education in engineering applied to the design and implementation of software systems. Under these definitions, a developer without formal university education is not a software engineer, although he may be technical competent to design and implement software systems. In a nutshell, the difference is not on "competence" or "skills" but the lack of formal education..
[0] https://en.m.wikipedia.org/wiki/Engineer
> The foundation education of an engineer is typically a 4-year bachelor's degree or in some countries, a master's degree in an engineering discipline..
I would add further that, following the above, a software engineer is someone who has a formal higher education in engineering applied to the design and implementation of software systems. Under these definitions, a developer without formal university education is not a software engineer, although he may be technical competent to design and implement software systems. In a nutshell, the difference is not on "competence" or "skills" but the lack of formal education..
[0] https://en.m.wikipedia.org/wiki/Engineer
Sounds harsh, but knowing that Germans tend to be direct I wouldn't read too much into it. Also depends on the role. Universities teach programming from an angle which optimizes computation time over human time, even though that's rarely what industrial programming is about. For example, just recently I asked my professor can I reuse code which would achieve the required behavior in one line over creating a completely new approach. The professor asked me why would I want to do it inefficiently. I asked isnt it efficient to do it in one line rather than reimplementing the functionality. He said that you are technically wrong, but proceeded to show me how to do it nonetheless.
In addition, the programming languages used to teach things are old. We are still given examples in Fortran and C is taught on freshman courses.
The academic world is vastly different. For that reason, if I would personally apply for a software engineer role which is about web application development and I would be said that I need a degree for that, it would raise a red flag for me.
In addition, the programming languages used to teach things are old. We are still given examples in Fortran and C is taught on freshman courses.
The academic world is vastly different. For that reason, if I would personally apply for a software engineer role which is about web application development and I would be said that I need a degree for that, it would raise a red flag for me.
I don't see how you can say you're a Software Engineer when you don't have a national accreditation or standards body and peer review processes. Backed by research studies via Empirical evidence.
Electronic Engineer, Aircraft Engineer, ect... Have more standards and accreditation backing them up.
In other words half the fun is trying to figure out what they want.
Electronic Engineer, Aircraft Engineer, ect... Have more standards and accreditation backing them up.
In other words half the fun is trying to figure out what they want.
From what I can tell, the main difference in the US is that most states have a so called "industrial exemption" which waives the license requirement for engineers who work for employers under certain conditions. Depending on one's field, (e.g., electrical and mechanical), most engineers are unlicensed.
Also, the law in my state is less concerned with the specific title, than about what people actually do. In general, professions that could affect public safety are regulated. That includes haircutting, K-12 teaching, and engineering.
Still, similar to what people do in Germany, my friends who have their own businesses, but are unlicensed, choose vague business names that avoid the words "engineering" or "design." My LLC is "technology."
Also, the law in my state is less concerned with the specific title, than about what people actually do. In general, professions that could affect public safety are regulated. That includes haircutting, K-12 teaching, and engineering.
Still, similar to what people do in Germany, my friends who have their own businesses, but are unlicensed, choose vague business names that avoid the words "engineering" or "design." My LLC is "technology."
Title to me doesnt matter. I dont have degree either .Software arena moved to quick with lots of framework and new platform mobile. Most university will teach basic and some lecturer dont even understand what they teach at all.
If mechanical engineers were unregulated and built unreliable cars, they would still be mechanical engineers.
If doctors weren't a licensed profession, they would still be doctors.
If barbers didn't need a certification, they would still be barbers.
Defining an "engineer" based on how much regulation they must follow is kind of ridiculous. It's putting the cart before the horse.
Which is not to say that the software field doesn't need regulation to improve the protection of customer data and the reliability of increasingly critical services.
If doctors weren't a licensed profession, they would still be doctors.
If barbers didn't need a certification, they would still be barbers.
Defining an "engineer" based on how much regulation they must follow is kind of ridiculous. It's putting the cart before the horse.
Which is not to say that the software field doesn't need regulation to improve the protection of customer data and the reliability of increasingly critical services.
I disagree.
Titles exist to provide an assurance to people that the services they get from title-holders will be above a certain standard, with the threat of a serious penalty if the work is sloppy.
This is the social expectation in many societies.
If I find that a doctor doesn't sterilize needles or wash hands, they should face a penalty (regardless of whether it actually caused damage). We shouldn't have to specify up-front in some contract that we want them to follow $RULES as a set of deliverables. This stuff is therefore regulated.
I used to think differently, but now I feel that software engineers should be similarly regulated. That doesn't mean everyone will now have to follow a ton of regulations to slap together the next nodejs app, those people can still be called developers. But whoever is an "engineer" should ensure that the work is well thought-out and should stop the developers they supervise from moving fast and breaking things.
It's time the industry "grew up" as a whole. If "software is eating the world", we need to be damn sure it's not sloppy.
Titles exist to provide an assurance to people that the services they get from title-holders will be above a certain standard, with the threat of a serious penalty if the work is sloppy.
This is the social expectation in many societies.
If I find that a doctor doesn't sterilize needles or wash hands, they should face a penalty (regardless of whether it actually caused damage). We shouldn't have to specify up-front in some contract that we want them to follow $RULES as a set of deliverables. This stuff is therefore regulated.
I used to think differently, but now I feel that software engineers should be similarly regulated. That doesn't mean everyone will now have to follow a ton of regulations to slap together the next nodejs app, those people can still be called developers. But whoever is an "engineer" should ensure that the work is well thought-out and should stop the developers they supervise from moving fast and breaking things.
It's time the industry "grew up" as a whole. If "software is eating the world", we need to be damn sure it's not sloppy.
I think we actually agree on the need for regulation. I just don't think being subject to regulation is necessary to be considered an "engineer".
Funny, the first MDs were the town barbers.
>The term is probably a shortening of “software engineer,” but its use betrays a secret: “Engineer” is an aspirational title in software development. 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.
Well, at least in the UK, software engineers are uphold by the BCS code of conduct [1]. Our first responsibility is (at least should be) safety.
Like "traditional" engineers, we build the bridges and structures of the virtual world, but the impact on what we do can still have real life changing consequences. The fact that we aren't certified and regulated is a result of us being self-regulating, meaning that we can move quicker in our industry. Many other industries have this arrangement, such as advertising.
I would say that we are not as bound to delivering a fully reliable product, as long as there is enough in place to make it fit for purpose and safe. This is the same as engineering. Lifts regularly break down at our local library, but never do they suddenly plummet several stories. A bank App can crash, but never can it leak information.
[1] http://www.bcs.org/upload/pdf/conduct.pdf
Well, at least in the UK, software engineers are uphold by the BCS code of conduct [1]. Our first responsibility is (at least should be) safety.
Like "traditional" engineers, we build the bridges and structures of the virtual world, but the impact on what we do can still have real life changing consequences. The fact that we aren't certified and regulated is a result of us being self-regulating, meaning that we can move quicker in our industry. Many other industries have this arrangement, such as advertising.
I would say that we are not as bound to delivering a fully reliable product, as long as there is enough in place to make it fit for purpose and safe. This is the same as engineering. Lifts regularly break down at our local library, but never do they suddenly plummet several stories. A bank App can crash, but never can it leak information.
[1] http://www.bcs.org/upload/pdf/conduct.pdf
> “Engineer” is an aspirational title in software development
Some engineers aspire to, allow me this reserved term, 'build' software. And doing so fulfill their role as engineers, by doing it correctly. Some of this software later is used by so depicted real-hardware engineers to model their bridges before starting building them, their planes before flying in them. Would id be possible without engineers in software ?
Some engineers aspire to, allow me this reserved term, 'build' software. And doing so fulfill their role as engineers, by doing it correctly. Some of this software later is used by so depicted real-hardware engineers to model their bridges before starting building them, their planes before flying in them. Would id be possible without engineers in software ?
I think a lot (not saying all/most) of these comments can be summed up as:
No, Software Engineers are not engineers on a technical level but they do the work of engineers[1] and the fact the industry has not caught up doesn't make what they do any less engineering.
[1] They are using math to solve real world problems that have billions of dollars and in many cases lives depending on them.
For one, I am sick of being called "not an engineer" when I bear more responsibility in dollars and livelihoods and use math more extensively in my job than most mechanical and electrical engineers I graduated with. In college I took all the same courses as the "real engineers"... I'm only a few credits shy of an Electrical Engineering degree. The "technician" majors took different courses. Less calculus, less physics, etc.
Heck, my stuff gets attacked by hackers on a daily basis. Show me something a civil engineer built where they need to worry about the level of security needed to protect against something like that. No one blames the civil engineer because they didn't explosion proof the road.
In fact a lot of the firmware I have seen Electrical Engineers write is terribly insecure and poorly written. Stuff a well trained Software Engineer would feel embarrassed about.
No, we are not legally engineers. But we should be.
No, Software Engineers are not engineers on a technical level but they do the work of engineers[1] and the fact the industry has not caught up doesn't make what they do any less engineering.
[1] They are using math to solve real world problems that have billions of dollars and in many cases lives depending on them.
For one, I am sick of being called "not an engineer" when I bear more responsibility in dollars and livelihoods and use math more extensively in my job than most mechanical and electrical engineers I graduated with. In college I took all the same courses as the "real engineers"... I'm only a few credits shy of an Electrical Engineering degree. The "technician" majors took different courses. Less calculus, less physics, etc.
Heck, my stuff gets attacked by hackers on a daily basis. Show me something a civil engineer built where they need to worry about the level of security needed to protect against something like that. No one blames the civil engineer because they didn't explosion proof the road.
In fact a lot of the firmware I have seen Electrical Engineers write is terribly insecure and poorly written. Stuff a well trained Software Engineer would feel embarrassed about.
No, we are not legally engineers. But we should be.
Your main point aside, your experience having taken more math and physics courses than "technicians", and bearing "more responsibility in dollars and livelihoods and use math more extensively in my job than most mechanical and electrical engineers I graduated with" is anecdotal evidence. I am not even done with my BS/MS EE degree and I've already taken more math and physics than my CS peers will ever take. This will change from college to college and degree to degree. You are right about the state of firmware though--security practices in IoT are often pretty terrible. Perhaps that points to an inadequacy in the licensing/regulation system that we have in place. I think most people in the comments could agree that the word "Engineer" implies rigorous certification--once software development has the same, then it could be considered Engineering.
> This will change from college to college and degree to degree
This is most likely very true. But in that case perhaps Computer Science should be split up into two majors with one being more rigorous. In my college the CS major was very rigorous and was even accredited as an engineering program.
> I think most people in the comments could agree that the word "Engineer" implies rigorous certification
I don't agree with this one. For one reason:
Almost all my engineering friends didn't bother getting their PE after getting out of college. Many didn't even get their FE. yet they still do engineering work. I only know one or two who actually did.
At least in the US most medium size companies only have one or two PEs that sign off on projects. But the people without the PEs still use Engineer in the job title. So even within electrical, mechanical, and civil engineering having the word engineering in the job title does not imply any sort of rigorous certification.
This is most likely very true. But in that case perhaps Computer Science should be split up into two majors with one being more rigorous. In my college the CS major was very rigorous and was even accredited as an engineering program.
> I think most people in the comments could agree that the word "Engineer" implies rigorous certification
I don't agree with this one. For one reason:
Almost all my engineering friends didn't bother getting their PE after getting out of college. Many didn't even get their FE. yet they still do engineering work. I only know one or two who actually did.
At least in the US most medium size companies only have one or two PEs that sign off on projects. But the people without the PEs still use Engineer in the job title. So even within electrical, mechanical, and civil engineering having the word engineering in the job title does not imply any sort of rigorous certification.
My title says Senior Software Engineer. I didn't choose it. In fact it said Lead Software Engineer in my offer letter but a reorganization changed a lot of people's title to be more generic. I don't get to choose my title. I have always considered myself a programmer but what my employer calls me is their business.
For what it's worth, in Germany the title of Engineer is regulated and the correct term for those who write software (which goes in the contract) is "Software Entwickler" (Entwicklung means "development"). There's a few more complications here that I don't know very well.
I don't completely agree with this because serious engineering work on software happens in many industries. But most software jobs clearly do not fit the description nor the implied seriousness of an engineering role.
Other things that grind my gears:
1. The way the "Data Scientist" title is casually thrown around for those who are neither scientists nor know statistics. Everyone has a different idea of what the term means and (worst of all) feel that it probably applies to them.
2. "Tech" is a contraction for technology but people in the software industry (especially Americans) seem to use the term solely for Software.
I don't completely agree with this because serious engineering work on software happens in many industries. But most software jobs clearly do not fit the description nor the implied seriousness of an engineering role.
Other things that grind my gears:
1. The way the "Data Scientist" title is casually thrown around for those who are neither scientists nor know statistics. Everyone has a different idea of what the term means and (worst of all) feel that it probably applies to them.
2. "Tech" is a contraction for technology but people in the software industry (especially Americans) seem to use the term solely for Software.
Definitely true in Germany, I think it's also true in Australia and a few other places. However, the title "software developer" is also really common in English. Maybe even more common than "software engineer".
I think "Data Scientist" is alright, you just have to keep in mind how fragile and rackety lots of actual scientific code is.
This article feels painfully misinformed. I am a brother of Theta Tau, the professional engineering fraternity. Many of my brothers are certified professional engineers (FE, PE, etc.) I graduated with a dual-major in CS/Math.
I strongly disagree with this assertion that failures in tech make us undeserving of the moniker 'engineer'. Software systems are inherently complex, and we have built incredible testing tools, processes, continuous integration, monitoring systems, and infrastructure to add strong rigor to our discipline.
As part of most engineering degrees, students explore case studies of where engineering went wrong and failed. I can assure you that there are many failures in civil engineering (see ASCE's report card), mechanical engineering, electrical engineering, and other engineering disciplines just as there have been failures in the tech industry.
Licensure is not as applicable to the tech industry, and certifications have been cheapened by low-quality applicants. They've become a negative signal. Additionally, the tech industry, in my opinion, innovates at a significantly faster pace than the licensed engineering disciplines. Perhaps these are correlated in some way.
Companies like Google are right not to overvalue degrees. If someone has the requisite knowledge and ability, it should not matter whether they learned from a book or on their own. Software interviews are significantly more rigorous that interviews in other engineering fields. Civil Engineers are not expected to be able to whiteboard open channel flow problems during an interview, but software engineers are expected to answer multiple interviews of algorithms and system design questions.
This article is just long-winded, useless rambling. Rage against Silicon Valley all you want, but we call ourselves engineers because we _are_ engineers. Software runs critical infrastructure in medicine, finance, aeronautics, traffic control systems, the electrical grid, and even the internet infrastructure used to deliver this nonsensical article. I suggest the author read about incidents such as the Therac-25.
I strongly disagree with this assertion that failures in tech make us undeserving of the moniker 'engineer'. Software systems are inherently complex, and we have built incredible testing tools, processes, continuous integration, monitoring systems, and infrastructure to add strong rigor to our discipline.
As part of most engineering degrees, students explore case studies of where engineering went wrong and failed. I can assure you that there are many failures in civil engineering (see ASCE's report card), mechanical engineering, electrical engineering, and other engineering disciplines just as there have been failures in the tech industry.
Licensure is not as applicable to the tech industry, and certifications have been cheapened by low-quality applicants. They've become a negative signal. Additionally, the tech industry, in my opinion, innovates at a significantly faster pace than the licensed engineering disciplines. Perhaps these are correlated in some way.
Companies like Google are right not to overvalue degrees. If someone has the requisite knowledge and ability, it should not matter whether they learned from a book or on their own. Software interviews are significantly more rigorous that interviews in other engineering fields. Civil Engineers are not expected to be able to whiteboard open channel flow problems during an interview, but software engineers are expected to answer multiple interviews of algorithms and system design questions.
This article is just long-winded, useless rambling. Rage against Silicon Valley all you want, but we call ourselves engineers because we _are_ engineers. Software runs critical infrastructure in medicine, finance, aeronautics, traffic control systems, the electrical grid, and even the internet infrastructure used to deliver this nonsensical article. I suggest the author read about incidents such as the Therac-25.
> Additionally, the tech industry, in my opinion, innovates at a significantly faster pace than the licensed engineering disciplines. Perhaps these are correlated in some way.
I think you're right. Regulation stifles innovation.
Even in a narrow sense, thinking software alone, everyone knows the saying "Standard library is where modules go to die", meaning that there are stricter requirements to make it to the standard library in the first place and stricter still to update them once they've made it in.
I think you're right. Regulation stifles innovation.
Even in a narrow sense, thinking software alone, everyone knows the saying "Standard library is where modules go to die", meaning that there are stricter requirements to make it to the standard library in the first place and stricter still to update them once they've made it in.
Its not just regulation. We're not getting rid of Eulers critical column load equation because of neophilia whereas in software if its over two years old it must be scrapped as obsolete and no longer trendy.
Engineering is very predictable because of the enormous amount of procedure. It takes precisely X labor hours for an engineer to analyze a house roof blueprint and specify a scalable system of installing anything from 1 panel to covering the entire roof with solar panels that will survive local wind and snow loads with essentially 100% survivability yet also being minimal cost. Its just incredibly predictive.
On the other hand a lot of software development is throw something brand new at the wall see if it sticks, if it does, great, scale till it doesn't, if it does not then its not your fault because its new and nobody can predict nothing in software development. Will it take 3 months or 4 months to write that app, who knows, unpredictable.
No large body of "human life trustworthy" predictable process has developed... yet... for software except in the simplest cases.
It doesn't help that due to moore's transistor law times were changing fast such that what would have required a miracle and some scientific breakthrus in the 70s is now the structural engineering equivalent of some carpenter building a doghouse, its so small that overbuilding doesn't matter and theres no human lives at stake so hiring a structural engineer for hours to calculate the rafter geometry and size for a doghouse is a waste of time and money, leading ignorant people to think solid engineering principles are in opposition to profit for ALL software development, which is a bit of a mistake.
And leading to a desire for software engineering to exist, although there is no academic teachable scalable hyper-predictable mathematically provable process for software development like there is for circuit analysis or structural beam design or chemical process kinetics for scaling so desiring "truely engineering like software dev" is like wishing for magic to be true, sure would be convenient if it existed, but since it doesn't, the people who claim to be engineers are kinda like people who claim to be alchemists, best hold on to your hat.
With a side dish of "engineer" being a modern term of nobility only granted by certain authorities and extremely jealously legally guarded.
And a side dish of hiring people who know nothing about computers or engineering think engineer sounds impressive, so its required on resumes, just like "rock star" or "guru" or "ninja".
Engineering is very predictable because of the enormous amount of procedure. It takes precisely X labor hours for an engineer to analyze a house roof blueprint and specify a scalable system of installing anything from 1 panel to covering the entire roof with solar panels that will survive local wind and snow loads with essentially 100% survivability yet also being minimal cost. Its just incredibly predictive.
On the other hand a lot of software development is throw something brand new at the wall see if it sticks, if it does, great, scale till it doesn't, if it does not then its not your fault because its new and nobody can predict nothing in software development. Will it take 3 months or 4 months to write that app, who knows, unpredictable.
No large body of "human life trustworthy" predictable process has developed... yet... for software except in the simplest cases.
It doesn't help that due to moore's transistor law times were changing fast such that what would have required a miracle and some scientific breakthrus in the 70s is now the structural engineering equivalent of some carpenter building a doghouse, its so small that overbuilding doesn't matter and theres no human lives at stake so hiring a structural engineer for hours to calculate the rafter geometry and size for a doghouse is a waste of time and money, leading ignorant people to think solid engineering principles are in opposition to profit for ALL software development, which is a bit of a mistake.
And leading to a desire for software engineering to exist, although there is no academic teachable scalable hyper-predictable mathematically provable process for software development like there is for circuit analysis or structural beam design or chemical process kinetics for scaling so desiring "truely engineering like software dev" is like wishing for magic to be true, sure would be convenient if it existed, but since it doesn't, the people who claim to be engineers are kinda like people who claim to be alchemists, best hold on to your hat.
With a side dish of "engineer" being a modern term of nobility only granted by certain authorities and extremely jealously legally guarded.
And a side dish of hiring people who know nothing about computers or engineering think engineer sounds impressive, so its required on resumes, just like "rock star" or "guru" or "ninja".
The term "engineer" is regulated in Canada, and only Professional Engineers (PE) awarded a licence by their provincial regulatory body can call themselves as such. Someone who graduates with an engineering degree is usually called an Engineer in Training (EIT), until they become a PE. The reason we regulate a specific word for our profession is because of our relationship with the public, and the ethical and safety promises engineers are regulated to commit to the them. The average person does not have the technical background to judge the proficiency of an engineer, so they must trust in their abilities and morals. In Canada, engineering is a self regulated profession designed to uphold high technical and ethical standards so that we can maintain that trust society gives us. The intention is, that when someone calls them self an engineer, you can have confidence in both their technical ability and moral obligations. To be effective, the standards of the term and definition of who can and can't use it needs to be regulated.
That being said, I normally refer to myself as a chemical engineer (not a chemical EIT). I think the distinction needs to be made when you're interacting with someone that you are offering your engineering services to. For example, when at work I would always sign my emails indicating that I was an EIT.
That being said, I normally refer to myself as a chemical engineer (not a chemical EIT). I think the distinction needs to be made when you're interacting with someone that you are offering your engineering services to. For example, when at work I would always sign my emails indicating that I was an EIT.
> The intention is, that when someone calls them self an engineer, you can have confidence in both their technical ability and moral obligations.
I thought the intention was that, even if someone didn't have confidence in both their technical ability and moral obligations, it didn't matter. An engineer is a person whose technical decisions are literally protected by law - if they decide to not sign off on something, they don't have to convince anyone and can't face consequences for it (ahem, Quebec bridge[1]). What you're suggesting is just a byproduct of confidence in the system.
[1] - https://en.wikipedia.org/wiki/Quebec_Bridge - Search for 'iron ring'
I thought the intention was that, even if someone didn't have confidence in both their technical ability and moral obligations, it didn't matter. An engineer is a person whose technical decisions are literally protected by law - if they decide to not sign off on something, they don't have to convince anyone and can't face consequences for it (ahem, Quebec bridge[1]). What you're suggesting is just a byproduct of confidence in the system.
[1] - https://en.wikipedia.org/wiki/Quebec_Bridge - Search for 'iron ring'
I'm not sure that I fully understand your comment, but what I mean to say is that the intent of regulating the specific word is so that everyone has the same understanding of what using that word entails, when applying it to the profession of engineering. What you say about an engineer's decisions being legally bound are true, but that helps provide confidence in the work engineers do, but isn't the reason for regulating a specific word. I feel like I might be missing something in your comment though, sorry if this doesn't address what you were getting at.
My engineering school deliver engineers diploma certified by the Engineering Titles Commission, which is the only thing in France able to allow a school to make engineers out of its students. Thank you goodbye, do not make generalizations from how it is in your country.
It's the Atlantic, of course they will take about the U.S. unless eplicitly mentioned otherwise.
Is the French software engineering diploma as rigorous as other engineering diplomas?
Is the French software engineering diploma as rigorous as other engineering diplomas?
In Poland at least you have Physics and Math that you have to pass like on other engineering fields.
And you have to create thesis work that you have to defend in front of jury to get your degree.
I'd expect it would be similar in France.
And you have to create thesis work that you have to defend in front of jury to get your degree.
I'd expect it would be similar in France.
Many schools in the US also require physics and math for a CS degree. It's not the degree that's at issue, it's professional licensing and regulations.
Well, at least in Poland (and I'm not sure about the rest of Europe) having graduated from an engineering school (a polytechnic) serves as formal licensing, even for classic engineering disciplines, like e.g. civil engineering. So in order to be able to take responsibilities and perform work of a civil engineer, you are required to have graduated from a civil engineering faculty, but have no additional certification after you do. Software development is also thought in polytechnics (among other options) and you formally become an engineer after graduation (though it has no real life consequences) - I'm formally a software engineer myself for example.
It's almost the same in Quebec and I believe everywhere in Canada. Thanks for making this point clear!
That is exactly right. I'm a software engineer in Quebec. I have a degree in software engineering from an engineering school.
I even have the option to have a license at which point I could call myself a profesionnal engineer. This is the same in other Canadian provinces but the engineering license is regulated at the provincial level so there are a few diffenrences.
I even have the option to have a license at which point I could call myself a profesionnal engineer. This is the same in other Canadian provinces but the engineering license is regulated at the provincial level so there are a few diffenrences.
Of course programmers are not engineers. Nor are space shuttles controlled by software, nor nuclear missiles, x-ray machines, planes, drones or self driving cars. Nope that's all pure engineering. Zero software.
And of course engineering is only about bridges and public safety and Chernobyl didn't fail because of a flawed reactor design, nor did the Fukushima disaster happen because of regulatory capture.
Margaret Hamilton was a software engineer. Read up on the processes she and her team used to build the Apollo computer software and you'll realize, there really is a higher standard that software engineers could be held to.
After I read this article I was quite upset, but really I wasn't angry as I was as much hurt. I actually don't like to call myself an engineer. I don't like the title, because I don't think it represents how I work and what I do. I don't follow a strict rigorous process, my job allows me to be free and agile (no pun intended) which is quite different from building engineers, mechanical engineers etc.
Where I live developers, programmers, etc. have never had the prestige that other science like professions have had. Most of the time when you talk about what you do, it's often a look of either confusion, or ambivalence because "Excel is on a computer, so programming can't be much different." A lot of companies belittle programmers, because "everyone can learn to program." Programming is hard, and this isn't to insult other professions. A lot of them are hard too. It's just that a lot of developers want to be respected for what they do just like everyone else and that's normally missing. This article, although in my opinion correct about not calling developers engineers, seems to ignore that what developers do is highly technical and quite complicated. Developers saying they're engineers puts that force of science and process behind it, and it's a defense from someone equating their basic class in HTML to mentally tracing how a request is going to trace through 100 servers in different regions.
Personally, I don't want to be restricted to being an engineer. I love the freedom to rapidly alter how I work, and most of what I work on will not cause harm to others. I am sure I speak for all developers, and what everyone really wants is to be counted among the other people who have challenging professions and respected for what is accomplished.
Where I live developers, programmers, etc. have never had the prestige that other science like professions have had. Most of the time when you talk about what you do, it's often a look of either confusion, or ambivalence because "Excel is on a computer, so programming can't be much different." A lot of companies belittle programmers, because "everyone can learn to program." Programming is hard, and this isn't to insult other professions. A lot of them are hard too. It's just that a lot of developers want to be respected for what they do just like everyone else and that's normally missing. This article, although in my opinion correct about not calling developers engineers, seems to ignore that what developers do is highly technical and quite complicated. Developers saying they're engineers puts that force of science and process behind it, and it's a defense from someone equating their basic class in HTML to mentally tracing how a request is going to trace through 100 servers in different regions.
Personally, I don't want to be restricted to being an engineer. I love the freedom to rapidly alter how I work, and most of what I work on will not cause harm to others. I am sure I speak for all developers, and what everyone really wants is to be counted among the other people who have challenging professions and respected for what is accomplished.
Oh give me a break. People who build things (whether in the physical world or not) are engineers. Anyone who has worked at a serious software company knows it's an engineering profession. A more constructive approach would be to say "hey, here are some things engineers have learned over the years; perhaps some of them would be useful to those who build software for a living?"
And the other way round. Version control is terrifically useful eg for architectural drawing, lawyers drafts, contracts etc---but the non-computer professions are only slowly taking it up.
There is a title arms race happening with programmers.
If everyone is going to call themselves a Software Engineer on LinkedIn, and I decide to label myself as a Developer, or even worse, a Programmer, I'm going to miss out on opportunities that the "engineers" are going to get.
If you don't want programmers calling themselves engineers, just make it illegal for us to do so.
I know Texas and Canada already do.
If everyone is going to call themselves a Software Engineer on LinkedIn, and I decide to label myself as a Developer, or even worse, a Programmer, I'm going to miss out on opportunities that the "engineers" are going to get.
If you don't want programmers calling themselves engineers, just make it illegal for us to do so.
I know Texas and Canada already do.
If you are relying on LinkedIn to get opportunities, you are going to miss out on a lot of them. (LinkedIn is a joke. And nobody gives a damn about what people call themselves.)
I know there is a lot of hate for LinkedIn here, and I agree 90% of LinkedIn is crap, but I did get my last job through LinkedIn, so I have to admit it's not all bad.
Yes. It just feels like a bad dating website most times.
Btw, I had a much better class of recruiter propositioning me on stackoverflow's careers website: http://stackoverflow.com/jobs Can recommend. (And I don't even have any real karma on stackoverflow.)
Btw, I had a much better class of recruiter propositioning me on stackoverflow's careers website: http://stackoverflow.com/jobs Can recommend. (And I don't even have any real karma on stackoverflow.)
There are so many kinds of engineers, and I have little doubt that the author cherry-picked picked the situations that helped their worldview of engineers, while suppressing examples they don't like.
Like there are biomedical engineer, a hardware engineer, a petroleum engineer, the agricultural engineer, etc. These people don't obviously have a united ethic of placing public benefit first. The petroleum engineer is under no obligation to think of the public good. If anything, they are obligated to think of the employer's good.
To me, an engineer is a classification that separates you from a scientist. An engineer is mostly interested in applying knowledge, whereas a scientist is principally interested in producing new knowledge. The line is blurred when scientists are interested in applications, and engineers produce new ideas during practical circumstances.
In that way, a doctor is an engineer, but I'm not going to insist that doctors professionally rebrand themselves to fit my pet perspective.
Like there are biomedical engineer, a hardware engineer, a petroleum engineer, the agricultural engineer, etc. These people don't obviously have a united ethic of placing public benefit first. The petroleum engineer is under no obligation to think of the public good. If anything, they are obligated to think of the employer's good.
To me, an engineer is a classification that separates you from a scientist. An engineer is mostly interested in applying knowledge, whereas a scientist is principally interested in producing new knowledge. The line is blurred when scientists are interested in applications, and engineers produce new ideas during practical circumstances.
In that way, a doctor is an engineer, but I'm not going to insist that doctors professionally rebrand themselves to fit my pet perspective.
To be called Engineer in Italy, you need the specific degree and a special diploma afterwards. People from CS are an exception and they can access to the same title of the Computer Engineers. If you apply for a job with a CV that says you are an Engineer but you are not officially registered, you can be reported for fraud.
Pretty much the same here in Canada. In order to use the title 'Engineer' you need to 1) have completed your studies for an engineering degree at an accredited university 2) become part of your province's Engineering group with all this entails (exams,continuing education..)
Mind you, many who studied Computer/Software engineering do become accredited Engineers (as per the legal term in Canada). But even if you completed your studies, it doesn't automatically give you the legal right to present yourself as an 'Engineer'. You can choose or not to become a 'legal' engineer, but in the case of software it's usually not necessary. Of course, the case is different for people building bridges and infrastructures, they pretty much have to become 'legal' engineers to be able to be on such projects.
I find it's mostly in the US that the term seems to be used loosely. I might be wrong.
Mind you, many who studied Computer/Software engineering do become accredited Engineers (as per the legal term in Canada). But even if you completed your studies, it doesn't automatically give you the legal right to present yourself as an 'Engineer'. You can choose or not to become a 'legal' engineer, but in the case of software it's usually not necessary. Of course, the case is different for people building bridges and infrastructures, they pretty much have to become 'legal' engineers to be able to be on such projects.
I find it's mostly in the US that the term seems to be used loosely. I might be wrong.
"Software Engineer" is a title. It is not, and never was, a type of engineer. It is exactly the same as "Software Architect" in this regard, which is not a kind of architect.
If a developer says "I am an engineer" it is only ever in the context of a tech company, where everybody knows what they mean. No programmer would say to their friends & family "I am an engineer" without any further context.
"Software Engineer" does not denote any additional rigor, no matter how much you want it to. It may or may not connote rigor, depending on a dozen contextual factors that will tell you much more about the presence of rigor than the title will. It's a title. It means computer programmer.
If a developer says "I am an engineer" it is only ever in the context of a tech company, where everybody knows what they mean. No programmer would say to their friends & family "I am an engineer" without any further context.
"Software Engineer" does not denote any additional rigor, no matter how much you want it to. It may or may not connote rigor, depending on a dozen contextual factors that will tell you much more about the presence of rigor than the title will. It's a title. It means computer programmer.
Right, my current title is "solutions architect" which has no meaning outside of the context of software. If someone, non-IT asks me, I'm a software developer.
Where I'm from, you can't call yourself an "Engineer" without holding an engineering degree...
There are some regulations for software. I work for a U.S.-based electric power utility that owns and operates a nuclear power generating station. There are most definitely regulations addressing the software used in the operation of that facility.
But that's an extreme case. More generally, I see programming as a skilled trade and not an engineering practice. In my worldview programming is akin to carpentry, plumbing, electrical work, etc. Yes, one needs an aptitude for the job and some technical training - maybe even an apprenticeship - but by and large we should see programming as a skilled trade. Viewed in that context Peter Thiel's comments about education make sense - we don't insist plumbers and carpenters get 4 year degrees to practice their trade, so why do we insist that for programmers?
For software projects whose failure would cause tremendous harm to the public, either physically or financially, then I could see having a certified software engineer oversee the construction of that system. I don't see this as any different than how we build buildings. Certified engineers/architects design the building, review the design and inspect each stage of the build process and final result while tradesmen build the building. This model prevents us from overcorrecting and insisting all programmers become certified engineers - that's not necessary.
But that's an extreme case. More generally, I see programming as a skilled trade and not an engineering practice. In my worldview programming is akin to carpentry, plumbing, electrical work, etc. Yes, one needs an aptitude for the job and some technical training - maybe even an apprenticeship - but by and large we should see programming as a skilled trade. Viewed in that context Peter Thiel's comments about education make sense - we don't insist plumbers and carpenters get 4 year degrees to practice their trade, so why do we insist that for programmers?
For software projects whose failure would cause tremendous harm to the public, either physically or financially, then I could see having a certified software engineer oversee the construction of that system. I don't see this as any different than how we build buildings. Certified engineers/architects design the building, review the design and inspect each stage of the build process and final result while tradesmen build the building. This model prevents us from overcorrecting and insisting all programmers become certified engineers - that's not necessary.
I have mixed feeling about this. Having worked at {big defense Corps}, I knew that some extremely competent technical people were technicians.
I also discovered that back in the 60's or 70's, if you showed a spark, they'd pay for you to go to school while you worked.
Today, you can't get your foot in the door without a technical degree, AND you will be constantly dismissed even if you are right. Oh, the engineers know when a technician is right, showing initiative, and absolutely killing it - but I saw Senior Management actively disregard them, because they aren't engineers. The engineers had to say, "hey, he's right, we should all listen". This happened multiple times. It used to be at some places that every X years as a technician (I think it was 4?) was ranked as 1 year as a full engineer. Sure that's slow - but you got heard, and combined with the "bright spark" incentive above, was a great way to identify talent that didn't take the traditional channels.
I think "moving fast and breaking things" is a feel-good way to paper over incompetence and poor planning, but I've also seen the degreed set not be as competent as the technicians. I have no idea what the right answer is - except to say that industries where lives are on the line (medical devices, aerospace, etc) do have strict guidelines, responsibilities and take it very seriously - this makes me think the author is just taking a dig at people - it appears as discord without direction, to those in the field.
I also discovered that back in the 60's or 70's, if you showed a spark, they'd pay for you to go to school while you worked.
Today, you can't get your foot in the door without a technical degree, AND you will be constantly dismissed even if you are right. Oh, the engineers know when a technician is right, showing initiative, and absolutely killing it - but I saw Senior Management actively disregard them, because they aren't engineers. The engineers had to say, "hey, he's right, we should all listen". This happened multiple times. It used to be at some places that every X years as a technician (I think it was 4?) was ranked as 1 year as a full engineer. Sure that's slow - but you got heard, and combined with the "bright spark" incentive above, was a great way to identify talent that didn't take the traditional channels.
I think "moving fast and breaking things" is a feel-good way to paper over incompetence and poor planning, but I've also seen the degreed set not be as competent as the technicians. I have no idea what the right answer is - except to say that industries where lives are on the line (medical devices, aerospace, etc) do have strict guidelines, responsibilities and take it very seriously - this makes me think the author is just taking a dig at people - it appears as discord without direction, to those in the field.
Whatever they want to call us, just don't care. More than OK to address myself as software developer, programmer, hacker, code writer, keyboard dancer, etc.
Joke aside, what the heck is Certified? So your software skills can asserted, by written test, that last for several hours...?
I refuse to acknowledge that online judge style algorithm questions could qualify or disqualify one person's capability to build software, it is like as civil engineers to build lego, bureaucratic BS
Joke aside, what the heck is Certified? So your software skills can asserted, by written test, that last for several hours...?
I refuse to acknowledge that online judge style algorithm questions could qualify or disqualify one person's capability to build software, it is like as civil engineers to build lego, bureaucratic BS
I agree with your mindset. This discussion feels extremely ego centric, imo.
In France, only certified school can deliver engineer degrees, it's a symbol of a high standard of competence and quality. They are required to teach core engineering classes and other topics (biomechanics, signal processing, management, neuroscience...), industry experts also have to come and teach. One of their goal is to teach the students how to analyze a problem from different angles.
We learn a lot more beside software engineering.
We learn a lot more beside software engineering.
This doesn't really fit as the discpline of Engineering was generally licensed and regulated where, in many countries, you could only call yourself an Engineer if you adheered to certain standards and got the respective diploma/license. Gatekeeping (in the pejorative sense) is about not clearly defined groups that members want to make exclusive against certain people/groups, e.g. being a fan of something ("you are only a true fan if you can name the last five albums in chronological order")
When you compare the rigour (esp. in testing) of nomrla engineering disciplines and software engineering, you should be able to spot a difference
When you compare the rigour (esp. in testing) of nomrla engineering disciplines and software engineering, you should be able to spot a difference
There's actually a potentially good article in here, about how the software development community is failing to uphold its obligations to the public interest.
Unfortunately it's struggling to escape from yet another entry in the tedious genre of "software engineer (sorry, programmer) who has never worked in, or even read a book about, any other engineering discipline assuming that he knows everything about how they work".
It's ironic that he cites the failure of the NATO "Software Engineering" conferences as evidence that software development is not engineering, when the idea of those conferences was that "programmers" would be the assembly-line workers in a software manufacturing process.
Software development is a design process, not a manufacturing process. That's why we call its practitioners software engineers:
http://www.zerobanana.com/essays/reclaiming-software-enginee...
Unfortunately it's struggling to escape from yet another entry in the tedious genre of "software engineer (sorry, programmer) who has never worked in, or even read a book about, any other engineering discipline assuming that he knows everything about how they work".
It's ironic that he cites the failure of the NATO "Software Engineering" conferences as evidence that software development is not engineering, when the idea of those conferences was that "programmers" would be the assembly-line workers in a software manufacturing process.
Software development is a design process, not a manufacturing process. That's why we call its practitioners software engineers:
http://www.zerobanana.com/essays/reclaiming-software-enginee...
The problem with all of these arguments is that everyone is right.
You can absolutely treat software development as a manufacturing process. It is sure as hell not appropriate for many situations, but is possible.
You can absolutely treat software development as a manufacturing process. It is sure as hell not appropriate for many situations, but is possible.
I have a degree that says I'm an engineer, so I'll call myself an engineer thank you very much.
I have a degree that says I'm an scientists, do I have to call myself a Software Scientist now? :D
Some of them can, I remember articles of people solving problem with hard numbers and theories (bandwidth, maximum stack space, ) bridging mentally high level applicative layer and the low level one. I never saw this kind of methodology in my computer classes.
Still better than calling yourself code wrangler/ JS ninja.
Kidding aside, whats stopping software dev from being regulated and certified in 2017? The previous reason I heard of was that tech changes too rapidly to be standardized.
Kidding aside, whats stopping software dev from being regulated and certified in 2017? The previous reason I heard of was that tech changes too rapidly to be standardized.
Where's the demand for that?
Companies don't even trust university degrees right now. The most a degree gets you is a foot in the door; you'll still have to pass a grilling technical interview process.
Making certificates an official requirement just raises artificial barriers to entry, but won't make people actually better.
(If you have a good idea for how to certify actual competence, I am all ears. I'd like to upgrade our hiring practices, too. The current prevalent interviewing style puts way too much emphasis on confidence---which works for outgoing people like me, but we are missing out on a lot of good people.)
Companies don't even trust university degrees right now. The most a degree gets you is a foot in the door; you'll still have to pass a grilling technical interview process.
Making certificates an official requirement just raises artificial barriers to entry, but won't make people actually better.
(If you have a good idea for how to certify actual competence, I am all ears. I'd like to upgrade our hiring practices, too. The current prevalent interviewing style puts way too much emphasis on confidence---which works for outgoing people like me, but we are missing out on a lot of good people.)
I think the presence of this article indicates that there is a demand.
> Companies don't even trust university degrees right now.
This might be true in the US but may not be in other countries. I just read on a separate comment how the label "engineer" requires a degree in Canada and EU and has legal repercussions if used otherwise.
> Making certificates an official requirement just raises artificial barriers to entry, but won't make people actually better.
I think it would actually raise the quality of software and bring order/accountability to this otherwise chaotic and "wild west" (ehem JS ecosystem) world of software dev. And the low barrier of entry is a two edged sword. On one side, it does allow more people to code. On the other, more people = more less-talented devs thus more crappy software.
> Companies don't even trust university degrees right now.
This might be true in the US but may not be in other countries. I just read on a separate comment how the label "engineer" requires a degree in Canada and EU and has legal repercussions if used otherwise.
> Making certificates an official requirement just raises artificial barriers to entry, but won't make people actually better.
I think it would actually raise the quality of software and bring order/accountability to this otherwise chaotic and "wild west" (ehem JS ecosystem) world of software dev. And the low barrier of entry is a two edged sword. On one side, it does allow more people to code. On the other, more people = more less-talented devs thus more crappy software.
I don't know, maybe my perspective is particularly weird: I've been working in Haskell and OCaml most of my career (apart from a stint at Google) which tends to keep out the riff-raff people seem to afraid of, but I don't have a degree.
'Engineering claims an explicit responsibility to public safety and reliability, even if it doesn’t always deliver.' -> that's exactly why some programmers NEED to be engineers. And some are indeed 'verified' engineers (the author seems to deeply care about the fact that there are some regulation behind this word), like myself and lots of my 'programmers' friends from engineering schools. And yes we also have 'programmers' or 'developers' or 'coders', to whom we need to explain engineering principles.
- If you do primarily do work that involves making decisions about data structures and algorithms, then you might be an engineer.
- If you primarily do the work of figuring out how to make business processes scale using software (and then implementing those ideas) then you might be a developer.
- If you primarily implement tickets then you might be a programmer or coder.
The idea of calling everyone who writes software an engineer is ridiculous, but so is the idea of saying that no one who writes software is an engineer.
- If you primarily do the work of figuring out how to make business processes scale using software (and then implementing those ideas) then you might be a developer.
- If you primarily implement tickets then you might be a programmer or coder.
The idea of calling everyone who writes software an engineer is ridiculous, but so is the idea of saying that no one who writes software is an engineer.
Following this logic, anyone who manages engineers is a developer.
I added a parenthetical to clarify. But to play devil's advocate, it's hard to argue that PMs and managers aren't 'developing' software, at least in the plain English sense of the word. (Although clearly you need to draw the line somewhere.)
Interestingly that terminology fits in the building trades and we can only dream of making large scale software projects as predictable and reliable and human safe as large skyscrapers. That is a truly excellent analogy.
Cost overruns are sadly all too common in construction---especially for anything that goes on below ground. That's where all the surprises are.
Skyscrapers and bridges are less likely to fall down than software is to crash. But that's just different failure modes. Projects are still not very predictable.
Skyscrapers and bridges are less likely to fall down than software is to crash. But that's just different failure modes. Projects are still not very predictable.
this is like the fifth time i've seen this same flame-bait article reposted.
Engineer:
- a person qualified in a branch of engineering, especially as a professional.
- the operator or supervisor of an engine, especially a railroad locomotive or the engine on an aircraft or ship.
- a skillful contriver or originator of something.
if you're upset because you don't feel like simple programmers should call themselves "engineers" because they didn't spend 7 years in an expensive college to earn the title, or because they are not making physical bridges and buildings, consider the following:
1. software "engineers" build (software) machines for people to use. they have to take technical requirements and turn them into structure and functionality.
2. most software design is an iterative process: you have to make solid foundations to build upon and it's a skill that has to be acquired through experience. i.e. you build infrastructure.
3. it's not rocket science, but programming (and related skills like network administration) are highly technical and take lots of practice and study to become proficient
4. often have to build things within a constrained or otherwise limited context. given a problem to solve and a list of requirements and constraints, design a solution
Now, that being said, not every "engineer" is a good engineer.
Engineer:
- a person qualified in a branch of engineering, especially as a professional.
- the operator or supervisor of an engine, especially a railroad locomotive or the engine on an aircraft or ship.
- a skillful contriver or originator of something.
if you're upset because you don't feel like simple programmers should call themselves "engineers" because they didn't spend 7 years in an expensive college to earn the title, or because they are not making physical bridges and buildings, consider the following:
1. software "engineers" build (software) machines for people to use. they have to take technical requirements and turn them into structure and functionality.
2. most software design is an iterative process: you have to make solid foundations to build upon and it's a skill that has to be acquired through experience. i.e. you build infrastructure.
3. it's not rocket science, but programming (and related skills like network administration) are highly technical and take lots of practice and study to become proficient
4. often have to build things within a constrained or otherwise limited context. given a problem to solve and a list of requirements and constraints, design a solution
Now, that being said, not every "engineer" is a good engineer.
[deleted]
[deleted]
I call myself an "engineer" in situations where there's really no better fit. Neither "programmer" nor "sysadmin" fully capture the scope of my typical roles, and I do tend to take an engineer-like mindset when building things (shooting for "move slow and prevent breakage" over "move fast and break things").
[deleted]
Tell this to those reading resumes. Until then I will use the most impressive possible title I can reasonably use.
Exactly! Where do I get the JS Ninja diploma?
Please post $100 and a self-addressed envelope to me, and I'll reply with your diploma.
What I think is funny about this is that I prefer calling myself a programmer because I feel like the term "engineering" has a negative connotation, whereas this article wants programmers to stop calling themselves engineers because they think "programmer" has a negative connotation.
I only call software developers "engineers" when they are in the upper echelon of skill level
ITT: a bunch of people without engineering degrees calling this engineering.
Programming has far more in common with a trade than a profession. Just the process software is developed under should make that very obvious.
Software developers are more like electricians than like electrical engineers.
Programming has far more in common with a trade than a profession. Just the process software is developed under should make that very obvious.
Software developers are more like electricians than like electrical engineers.
[deleted]
[deleted]
if you do work that's considered engineering, how can you not be an engineer?
A fancy degree doesn't dictate what type of work you do. Just my two cents :)
A fancy degree doesn't dictate what type of work you do. Just my two cents :)
The article is silly. I've been an engineer forever and I don't think I know a single engineer who is regulated, certified, or whatnot.
All people who write code are programmers.
But some programmers are also engineers. Most notably, those who architect systems and invent new technologies.
But some programmers are also engineers. Most notably, those who architect systems and invent new technologies.
Engineers are people who hold engineering degrees. I'm not sure how it became otherwise.
Engineers are people who build and operate engines. I'm not sure how it became otherwise.
Computers are people who add together table of math facts to be used in artillery calculations. Not sure how it became otherwise.
That might be for the English term. On romance languages, ingeniero/ingegnere/ingénieur is based on the "ingenio" root, so an engineer is someone who uses their wit to build/solve something.
I am indeed referring to the Anglo-Norman etymology.
http://www.oed.com/view/Entry/62225
http://www.oed.com/view/Entry/62225
Maybe degrees became less relevant (and even less feasible) for the burgeoning engineering practices. That is, assuming you buy into software as an engineering practice.
I wish Real Estate Moguls would stop calling themselves "Developers".
[deleted]
After seeing some of the security flaws in Ruby on Rails, I have the impression that a book of standards for handling user data is needed. However, I do not have a degree myself, and I don't have much respect for higher CS education in the US. There have been too many certifications and education programs based on knowing APIs (which has nothing to do with good engineering), too many people learning Java and UML and comming out of college knowing nothing of use for the real world. I personally don't want there to become a profession of programming which excludes people such as myself. But if one does form, we need to make sure that it is based on actual technical principles, and not knowlege of a product be it Microsoft, Redhat or Java.
[deleted]
Stupid snobbery. Reminds me of the hall monitors on stack overflow who flag useful posts as off topic.
Unfortunately my browser won't run The Atlantic's malware so I can't read the article.
My point, if I have one, is that Ashley Madison getting hacked (specifically mentioned in the article) was a pretty embarrassing calamity, sure, but I don't think anyone died as a result of a lack of proper collaboration and regulation in software development.