Programmers should not call themselves engineers (2015)
theatlantic.com
theatlantic.com
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.
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
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.
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."
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.
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..
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.
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.
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.
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 ?
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.
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.
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 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".
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.
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'
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.
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.
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.
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.)
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.
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.
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 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.
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
We learn a lot more beside software engineering.
When you compare the rigour (esp. in testing) of nomrla engineering disciplines and software engineering, you should be able to spot a difference
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...
You can absolutely treat software development as a manufacturing process. It is sure as hell not appropriate for many situations, but is possible.
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.
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.
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.
- 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.
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.
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.
A fancy degree doesn't dictate what type of work you do. Just my two cents :)
But some programmers are also engineers. Most notably, those who architect systems and invent new technologies.