Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

While travelling I met a mathematician who was sitting near me. In a discussion he said: "...there is nothing like engineering in IT or rather programming". A true engineering is what Architecture is, what Electrical and Mechanical is.

It made me think and I was puzzled. A percent of my brain agreed also because in Indian Army, there is no subject like Computer Engineering in the Engineering Corps. They don't consider programming as engineering. This is what I heard few years back, I don't know what Indian Army thinks now.

What are your views?

share|improve this question

closed as primarily opinion-based by Eric King, gnat, Kilian Foth, Bart van Ingen Schenau, Dan Pichelman Aug 4 '13 at 21:28

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

4  
My view: He is just jealous that you are paid more :P –  Simon Mar 14 '11 at 13:37
3  
In my opinion Architecture is not engineering –  hiena Apr 11 '11 at 23:09
    
@hiena - indeed, legally speaking, they are different professions, and the law (depending on your jurisdiction) legislates what is Architecture and what is Engineering. –  Scott Whitlock Apr 12 '11 at 0:42
add comment

11 Answers

up vote 16 down vote accepted

If we follow this description, we are 75% engineers, or 75% of us are engineers :)

Unlike other engineering disciplines:

  • software developers don't need formal education and/or licences
  • is a relatively young discipline and don't have proven best practices (like construction, for example)

I think this is going to change in the future. Someday we'll be 100% engineers.


Engineer

source: http://en.wikipedia.org/wiki/Engineer

An engineer is a professional practitioner of engineering, concerned with applying scientific knowledge, mathematics and ingenuity to develop solutions for technical problems.

The word engineer is derived from the Latin root ingenium, meaning "cleverness".

Occupation

  • Names Engineer
  • Type Profession
  • Activity sectors Applied sciences

Description

  • Competencies Mathematics, scientific knowledge, management skills
  • Education required Engineering education
  • Fields of employment Research and development, industry, business
  • Related jobs Scientist, architect, project manager
share|improve this answer
add comment

Software engineering is engineering, but IT or programming aren't. That's much like mechanical engineering is engineering and physics or welding aren't.

Software engineering is an incredibly young field (compared to other engineering branches), which it is actually hard to teach people, because there's not much experience to teach from. Only in the last 20-25 years has software become so big and complex that mere programming won't do the job.

Due to this shortcoming of established knowledge, actual software engineering is rarely taught. The only way you can become a decent software engineer is following the way of a craftsman: being mentored in the field. So while software engineering is an existent discipline, very few are actually in this field. Most people are doing software tinkering or software over-engineering.

share|improve this answer
    
You mean software engineering doesn't include programming? –  RPK Oct 22 '10 at 13:19
1  
@RPK: hard to tell, as I am more of a software tinkerer :) But basically I think programming is to software engineering what building is to civil engineering. The former ends in chaos without the latter and the latter makes no sense without the former, but the two are relatively distinct. –  back2dos Oct 22 '10 at 13:25
    
@back2dos: I would tend to agree. However, I think that software engineers almost have to know how to code, while civil engineers don't necessarily have to know how to weld. –  Michael K Nov 24 '10 at 14:53
1  
Say to a material or metallurgical engineer that welding is not engineering and he will weld your mouth shut :) –  Vitor Mar 14 '11 at 12:07
    
@Vitor Braga: What's your point? I'd really expect from a good engineer to understand the difference between engineering and a craft. And I also wonder how many metallurgical engineers actually weld in their job. –  back2dos Mar 14 '11 at 12:51
show 4 more comments

Software engineers in an engineering company are engineers. I'm talking about places like defense contractors, equipment manufacturers, etc. We follow rigorous processes for: creating requirements and design documentation, doing detailed analysis that the design will meet requirements before any code is written, performing code reviews and unit tests, planning and performing integration and qualification tests. Documents are reviewed by boards of peers and stakeholders, tests are witnessed by the QA organization and results presented to the customer for formal acceptance. Software engineering as practiced in these places is a rigorous, scientific process.

share|improve this answer
1  
100% agreed. I work at a critical-infrastructure company. We engineer here. –  Paul Nathan Oct 22 '10 at 20:01
add comment

As an actual P.Eng., I would say, in general, no. However, I think that programmers and Engineers both do significant design. If the question was, "Are programmers designers?" I would definitely say yes.

Professional Engineering, however, has to do with being legally liable for your mistakes, or at least risking the legal right to practice your profession if you make a mistake. It doesn't matter how bad of a programmer you are, you can go out tomorrow and legally put "programmer" on your resume. With a P.Eng. if you lose your license, you can't call yourself a P.Eng.

Professional Engineering is created to be a self-regulating profession, where the profession and the government agree on certain tasks that can only be performed by licensed individuals. They do this because of a mutual understanding that the work poses a significant risk to the public's safety.

There are certain software-driven devices that must be stamped by an Engineer before they can be sold (I'm talking about industrial safety devices here). The person who reviews and approves these designs is an Engineer.

share|improve this answer
    
Do you think the reason software development isn't regulated in the same manner as engineering fields is because the risk is different or the relative youth of programming as a profession? In applications like control systems for medical devices, military systems and simulation systems it seems like there could be real world damage cause by programming mistakes. Or is it that there is no easy distinction between a missile guidance system developer and an account system developer from a government/industry wide point of view? –  aubreyrhodes Mar 14 '11 at 20:37
    
@aubreyrhodes - I imagine in that case there's a different regulatory body for medical devices, so they may fall outside the realm of Engineering. There is a very strict line drawn, for instance, between what is Engineering and what is Architecture. While there's programming involved in lots of tasks, that doesn't mean you don't need Engineering too. Engineering isn't designing; Engineering is saying "I certify this design meets regulatory guidelines, uses the most up-to-date knowledge of the industry, does not pose excessive risk to the public, and I will stake my career on that." –  Scott Whitlock Mar 14 '11 at 20:53
add comment

It depends on the country, on their definition, on their academic system and so on. Some for example do not count architecture as engineering - unlike civil engineering, it is viewed as more of a mix between engineering and art.

It all depends on how you look at it.

But why does it matter. After all, what's in a name?

share|improve this answer
3  
Unfortunately, a lot. A name as an identifier doesn't mean much, but if I say 'geek' to my dad, he thinks 'gross', while if I say if to my friends, they think 'computer genius'. A name conjures an image in the listener's mind, and you want that image to be accurate. –  Michael K Nov 24 '10 at 14:56
    
@Michael - Uhmm, that was not exactly my point. –  Rook Nov 24 '10 at 16:06
add comment

Next time someone tries to bait you on the topic, ask them about the following jobs:

  • Locomotive engineer
  • Flight engineer
  • Audio engineer

None of those positions have much to do with electrical/mechanical/civil engineering either.

share|improve this answer
    
But actually those people aren't Professional Engineers (PE) and hence aren't really Engineers. –  Vitor Mar 14 '11 at 12:09
    
@Vitor Exactly the point, as only some programmers are real (certified) Engineers. –  Brian Knoblauch Mar 14 '11 at 18:54
add comment

I'd say most programmers are actually software mechanics. I mean, most programmers in the software industry do no more than software maintenance and bugfixing.

share|improve this answer
    
I think you're confusing mechanics with maintance. –  Rook Oct 22 '10 at 22:34
    
@Rook: But what does a auto mechanic mostly do? –  Michael K Nov 24 '10 at 14:54
    
@Michael - I was more reffering to mech. engs. who do development, in comparison to maintance. –  Rook Nov 24 '10 at 16:09
2  
@mhitza Your implication is that software mechanics do not build original software components, but only maintain legacy systems. I doubt that MOST programmers only do this sort of work. I would say that MOST programmers DO build new components and systems on a regular basis. –  Morgan Herlocker Mar 8 '11 at 18:17
    
@Prof Plum: Mhitza is correct. The lion's share of software work lies in maintenance because most successful systems have fairly long lives. I know people who have been in this field for thirty years who have never developed anything of significance from scratch. They merely fix and modify existing code bases. –  bit-twiddler Mar 14 '11 at 18:00
show 1 more comment

There are some similarities in terms of application of skills, but I'm firmly in the "no" camp. The distinction is not hard to make - Engineering professions have boards which govern who may call themselves Engineers based on qualification and experience. "Software Engineering" has no such thing (fledgling efforts exist, but I haven't heard of any repercussions for not belonging to one). Anyone can call themselves a Software Engineer, and hence the title tells an employer nothing about your capabilities. The same goes for someone describing themselves as an "Audio Engineer" - don't want to comment on "Flight" or "Locomotive" Engineer because I'm not sure about boards for those.

Personally, I'm a Computer Scientist working in an academic environment - I do research, I don't just build. I've spent some years in industry as well, and I refer to my work there as "Software Development". I don't need to pretend to be something I'm not.

Background: I'm in South Africa, where the term Software Engineer has fortunately not caught on in a big way. If Engineering councils in other parts of the world have fallen away, perhaps the distinction is not relevant there. If so, that's a shame - I'd rather live in a world with a professional software engineering board than one without bodies for any professions.

share|improve this answer
    
Concur! I too work as a computer scientist in an academic environment, but I spent over twenty years working in industrial software research and development before joining my current organization. I absolutely hate being called a programmer. A programmer is a craftsperson just like a machinist is a craftsperson. The only difference being that machinists are smart enough to get paid for overtime. –  bit-twiddler Mar 14 '11 at 16:55
    
An unlicensed engineer is still doing engineering, just as an unlicensed doctor is still practicing medicine. –  DougM Aug 3 '13 at 22:16
add comment

I personally think we are engineers, I mean..I may just be a programmer but Im still creating and engineering software as I modify code to fit etc..

Anyways to me it's just a name, I've been called an engineer at my job and i've been called just a coder, but either way it's basically the same thing.

share|improve this answer
add comment

Software engineering is engineering.

However, most people who call themselves software engineers are not engineers. Many of those that are not are programmers and coders that do not necessarily follow an engineering process. Nothing wrong with that since a) coding is fundamental to software engineering, and 2) is a science in its own right. But having an engineering process is fundamental for being and working as an engineering. That's one group.

The other group, unfortunately a quite large one, are not programmers/coders. They are just hacks, code monkeys who fling shit at their monitors and sell whatever sticks (quoted from somewhere, can't remember where.) A hive-mind collective of the dumb.

The influence of the later group is nefarious, poisonous and hilarious (in a black humor kind of way) which is why engineers in other disciplines (wrongly) sneer at the notion of software engineering, or think software engineering and computer science are anything but coding (and by coding, spaghetti coding.)

In summary: There is a negative perception of software engineering among many in other, older established disciplines. That is a wrong assumption.

But that wrong assumption comes from the real observation that many people that call themselves software engineers are nothing short of sad caricatures of lobotomized monkeys banging at keyboards in the hope that, by some random chance, they end up typing Knuth's TAOCP.

ps... My guess is that the Mathematician in your story is just butt-hurt. He had that crap deep in his chest for God knows how long, and you were simply the first outlet to let that go out in the open.

share|improve this answer
add comment

Since software development is relatively very young and evolving very fast, the borders between software- technician, engineer and scientist are not well determined / very blurry.

share|improve this answer
1  
Software development is not IT. IT is a discipline that is focused on configuring and maintaining existing intellectual property (IP). Software development is a discipline that is focused on creating new IP in response to a need. The acronym IT did not enter our lexicon until the convergence of computer and communication systems created the need for an umbrella under which to group multiple types of technically-trained operational personnel. If one works in infrastructure, one works in IT. If one works in software development performing project-oriented work, one is not in IT. –  bit-twiddler Mar 14 '11 at 16:41
    
Fixed, my mistake. –  Gipsy King Mar 14 '11 at 17:14
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.