Software engineering includes engineering discipline, rules, ways, methodologies and programming. Programming is a part, but not the whole job. Being able to program doesn’t mean a software engineer is a programmer, like being able to cook doesn’t make your title cook. You have the ability to cook, but that’s probably not your main area of focus. It is a has-a relation, not is-a relation. Software engineers have the ability to program, but they are not only programmers.
Note: supporting sources and quotes are at the bottom. If you are giving a quick look, definitely check them out.
Many people are able to repair their homes by themselves, fix electricity lines, or fences, but differences with professional repairmen are the professional repairmen do it with the fastest ways and the cheapest expenses, they can handle bigger projects than one home and generate results that have more quality.
This is a similar difference between programming and software engineering. Software engineers are equipped with getting results with cheapest ways, right methodologies, best practices, high qualities and are able to handle very big and heavy software projects. The important part is when a fence is broken in your garden, its not really a big issue, but if the software application gets broken, your data may get lost or people may access your information, then you are in much bigger trouble. Please keep in mind that we live in an information age.
Amazon says that every 100ms their pages opens slower, they lose 1% of their customers and every 500ms they lose 20% (source). Even with that speed they are still faster than most of the pages on the internet. Please see this infographic:
Speed is very important attribute and difficult to have. To make a software product work fast, right algorithms must be selected and modified accordingly. Asynchronous programming model should be applied carefully, threads and thread pool sizes must be calculated for the server and needs, connections pools must be used without eating up the memory, right caching techniques should be applied in aligned with the architecture of the application without showing user dirty (obsoleted) data. And I can count hundreds like this.
People tend to see the result of an engineering work, however internals include many details. Especially managers may think “they programmed”, but they probably did not just do that. Of course, not every software engineer performs with the software engineering discipline and there are probably many programmers out there who apply engineering discipline. There are always exceptions, however this doesn’t give the right to call “programmer” to a software engineer. For those who wants to be called “software engineer” and doesn’t have an engineering diploma, there are certifications for it.
Let’s support this a little bit
“U.S. The Bureau of Labor Statistics predicted a 32% increase in jobs for software engineers during the years 2008 to 2018. During those same years, jobs for programmers were expected to decline by 3%. According to the Bureau of Labor Statistics, software engineering positions are less likely to be outsourced.” Source and the original source of the statistics on the www.bls.gov official site.
…possess other software engineering skills, beyond programming; for this reason, the term programmer is sometimes considered an insulting or derogatory oversimplification of these other professions… http://en.wikipedia.org/wiki/Programmer
“In June 1998, the Texas Board of Professional Engineers established software engineering as a recognized engineering discipline and established licensing criteria specifically suited to software engineers.” This paper appears in: Software, IEEE
Date of Publication: Nov/Dec 1999
Author(s): Speed, John R.
Texas Board of Professional Eng., USA
Don’t you think it is an insult too? Please share below.