> 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."
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.
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.
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.
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..
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...
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."
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.
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.
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.
While I don't much like software developers calling themselves engineers either, it was hard not to read this and think that about a week ago I was reading all about a dam that seemed poised to fail and thousands of people had to be evacuated; or about a miracle of engineering, a skyscraper in SF that appears to be sinking (https://www.nytimes.com/2016/09/23/us/san-francisco-millenni... or, oh, here's an entire Wikipedia page just for structural collapses: https://en.wikipedia.org/wiki/List_of_structural_failures_an...
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.
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)...
>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.
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?
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.
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.
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.
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.
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.
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.
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.
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.
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.
> 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.
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...
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.
> 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.
> 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.
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.
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.
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.
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
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).
"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.
"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.
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.
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.
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
- 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.
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.
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.
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".
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
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.
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.
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.
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.
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.
"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.
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.
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.
> 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.
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".
148 comments
[ 3.6 ms ] story [ 285 ms ] threadThe 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)
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/
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.
> 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
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 don't mind having grown up in Germany---but I don't miss never having worked there.
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."
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.
http://www.oed.com/view/Entry/62225
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.
http://www.theolympian.com/news/local/article42065382.html
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)...
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.
Are you talking about research, rather than healthcare?
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.
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.
http://www-users.math.umn.edu/~arnold/disasters/patriot.html
Is the French software engineering diploma as rigorous as other engineering diplomas?
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.
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.
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.
Perhaps we're just looking at a category of engineering that is not yet at that level of maturity.
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.
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.
> 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.
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.
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.
I think engineering is less about adhering to regulations, and more about solving problems in a wider context.
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.
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.
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).
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.
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.
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.
When you compare the rigour (esp. in testing) of nomrla engineering disciplines and software engineering, you should be able to spot a difference
- 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.
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.
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.
A fancy degree doesn't dictate what type of work you do. Just my two cents :)
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
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.
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.
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.
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.
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 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.
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".