Pergunta

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?

Foi útil?

Solução

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

Outras dicas

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.

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.

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.

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.

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.

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?

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.

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.

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.

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.

Licenciado em: CC-BY-SA com atribuição
scroll top