I was an electrical engineer before being a software engineer. There is a difference in what level of the stack I focus on now, but there is very little difference in how I design solutions and think through problems (though hopefully I've continued to get better).
Most of my electrical engineering also involved coding day in and day out.
Certain types of tasks (eg building a bridge) require an engineer to sign off on the work. And the engineer is personally liable should the design of the bridge prove faulty. An engineer is a person whose license allows them to make those representations and have it be accepted.
Most software developers lack that license, and cannot legally sign off on designs. And as an industry we don't value software development's expertise as a final say on what does or does not fly. The consequence is chronic security problems, nonfunctional software, privacy specifications, etc, etc, etc.
As a society, we are not OK with bridges falling down. But apparently we are OK with having software projects routinely overrun budgets by 100+% and still fail to deliver required functionality.
Steve McConnell makes the case in http://www.amazon.com/Professional-Software-Development-Sche... that if a true software engineering profession was recognized - not just software developers being called software developers but actual engineering certifications in the field of software development - we could begin fixing this. I don't think it will happen, nor am I totally supportive of that approach - but he makes a case worth reading.
Just because most people who work on computers aren't engineers doesn't make the field not engineering. Just means that most of the people that do it are incompetent at their jobs.
Ex. Computer Scientist, who can fill the role of a Programmer.
This discussion keeps popping up [4] [5] , but the definitions are clear. I believe there's a Wikipedia article somewhere that explains all the differences.
[1] In Puerto Rico [2] http://www.eng.buffalo.edu/undergrad/academics/degrees/cs-vs... [3] http://en.m.wikipedia.org/wiki/Engineer [4] https://news.ycombinator.com/item?id=5936652 [5] http://blog.hartleybrody.com/hacker-developer-engineer/
And engineer is a scientist with thumbs - though some times they have to ask the technicians to remind them how ohms law goes :-)
When I worked at a top 5 Civil engineering consultancy I corrected one of the engineers math one particular bridge in Saudi
A lot of my friends are desk engineers at chemical companies. Not a single one is putting anything together at all with their hands, and most aren't figuring out how other people will put stuff together with their hands either. It's an almost entirely intellectual endeavor. In fact, at some places like Exxon, some chemical engineers are also internally known as economic analysts because they're mostly just trying to find ways to optimize revenue flow. If this qualifies as an engineer, why in the world does software development not, especially if what you're doing involves maintaing a server/database cluster or overseeing development practices?
My CS program was "in" the engineering school but after freshman year the required curriculums diverged greatly. Sure, we both took Physics III and whatnot, but so did all of the other decidedly not engineer STEM students. Even the required/suggested math classes diverged after Calc II (with engineers skipping Calc III and taking IV instead, and most CS students taking III but not IV.
We didn't even take the same ethics courses. CS took computer ethics while other engineers took engineering ethics.