what is the difference between computer programmer and software engineer?

L

Leo

Dear All,

I read a news report today, saying that within IT industry the
percentage of computer programmers has been decreased from 21% in 2001
to 17% now, while the percentage of software engineers has been
increased from 21% to 24%.

To me, the two terms, computer programmer and software engineer are
identical. I have never thought they are different. Can you explain to
me what the difference are?

Thanks.
 
J

James McGill

To me, the two terms, computer programmer and software engineer are
identical.

Sometimes they are, and sometimes one is a superset of the other, and
sometimes software engineers do design and programmers do
implementation. And sometimes it's just an individual choice of what
sounds better on a business card, or perhaps a promotion that you are
forced to take, conferring the shackles of management.
 
F

Frank Seidinger

Leo said:
I read a news report today, saying that within IT industry the
percentage of computer programmers has been decreased from 21% in 2001
to 17% now, while the percentage of software engineers has been
increased from 21% to 24%.

To me, the two terms, computer programmer and software engineer are
identical. I have never thought they are different. Can you explain to
me what the difference are?

It might be no big difference in the US and other countries. In Germany the
term engineer is not free, but requires that you have finished a university
degree similar to a masters degree.

Therefore the difference here is usually, if you have studied or not.
Programmer here means only, that you know how to type with a keyboard.

Beside that, there are some proffessions that require you to finish an exam
held by institutes controlled by the government. The skill of this
proffessions are somewhere in the middle between programmer and egineer.

Frank.
 
T

Thomas Weidenfeller

Frank said:
It might be no big difference in the US and other countries. In Germany the
term engineer is not free, but requires that you have finished a university
degree similar to a masters degree.

Well, that's the theory. And still there are many people who just got
some vendor certification and call themselves "engineer" (using the
English spelling in Germany), or are self-appointed "software engineers"
(also using the English term in Germany), while the German term
"Ingenieur" is indeed protected by law in Germany.
Therefore the difference here is usually, if you have studied or not.

No, just if you call yourself "engineer" or "Ingenieur".

/Thomas
 
B

Bjorn Abelli

...
Frank Seidinger wrote:

No, just if you call yourself "engineer" or "Ingenieur".

I think that Frank is right in that the difference "usually" is if you have
studied or not.

The terms as such "usually" implies that the "engineer" does some kind of
"engineering", which could imply more analysis and design before they start
to program, whereas the term "programmer" just implies that the person
writes code, with or without a previous analysis and design.

But I agree that in practice, there probably are not that much different...

In the news report the OP found, there might be a reference to where the
numbers come from. In that survey or whatever those numbers are based on,
there is obviously a distinction between the two, maybe used by the
staticians.

Such a distinction is "usually" based upon whether the respondent had
studied or not, or some other statistical measurable variable...

// Bjorn A



Inviato da X-Privat.Org - Registrazione gratuita http://www.x-privat.org/join.php
 
L

laura.paterson

In the UK there is a difference between an engineer and a chartered
engineer - the latter requires a level of further education and years
of proven industrial experience.

I had always considered that a software engineer generally worked in a
wider area of the lifecycle than a programmer. i.e. that a programmer
would be primarily involved in the implementation of a software
application, whereas an engineer would have considerable input into the
design and wider system integration, as well as some implementation
effort.

Wikipedia admits to a blurred line between the two - but primarily
defines software engineering as:
"the profession concerned with creating and maintaining software
applications by applying technologies and practices from computer
science, project management, engineering, application domains, and
other fields."
and a programmer as:
"someone who programs computers.... a specialist in one area of
computer programming or to a generalist who writes code for many kinds
of software."

In terms of education, it is possible to become involved in software
through an engineering department, or through a computer science
department - I'm not sure if that would make a difference to what those
graduates market themselves as!

- Laura
 
T

Thomas Weidenfeller

Bjorn said:
I think that Frank is right in that the difference "usually" is if you have
studied or not.

Trust me :) I live in Germany, I work in Germany, and I am legally
allowed to call me "Ingenieur". There are many many self-appointed
"engineers" or vendor certified "engineers" in this country. MCSE's
(Microsoft Certified Systems Engineers) for example, or the
self-appointed "software engineers" (only topped by self-appointed
"software architects").

The trick here in Germany is to avoid the protected term "Ingenieur" and
just use the unregulated English term "engineer".

If you meet someone in Germany calling himself "engineer" you have a
good chance that he hasn't studied. If he calls himself "Ingenieur",
there is a very good chance he has studied (there are a few exceptions
in the laws). Of course, an "Ingenieur" might call himself "engineer"
for lack of a better translation, or because English sounds more "cool"
or whatever. But still, if you meet an "engineer" here it "usually" does
not mean he has studied.

This might change in the future, since the "Ingenieur" is an endangered
species in Germany. Universities change to Bachelor and Master degrees -
for international competitiveness. Then we might end up with Masters and
Bachelors who have studied, and "engineers" who haven't.

If I see an "engineer" I assume it is a job title on some
company-internal scale, not more. If I see an "Ingenieur" I assume it is
an academic degree, not more. The job title doesn't tell me about the
person's academic certification, the academic degree doesn't tell me the
job of the degree's holder.

Regarding statistics: Without knowing the definitions which where used
to compile them, I think they don't tell much.

/Thomas
 
J

Jeffrey Schwab

Leo said:
Dear All,

I read a news report today, saying that within IT industry the
percentage of computer programmers has been decreased from 21% in 2001
to 17% now, while the percentage of software engineers has been
increased from 21% to 24%.

To me, the two terms, computer programmer and software engineer are
identical. I have never thought they are different. Can you explain to
me what the difference are?


It annoys the piss out of me when people who aren't engineers claim they
are. Not everybody who designs something for a living is automatically
an engineer.

I'm a computer systems engineer: I went to an engineering school, and I
got a degree that says I'm an engineer. It was hard. Most of the
courses I took are not prerequisite to computer programming, especially
courses on static and dynamic mechanics (tension and compression),
modern physics, electromagnetics, and non-discrete mathematics courses
like differential equations. The reason for the courses is that
learning to be an engineer requires exposure to a broad range of wildly
different types of problem; engineering has more to do with a certain
style of thinking than with being proficient at one technical skill,
e.g. programming.

A programmer might be an extremely well educated, experienced
professional. A high school kid writing applets part time and selling
them on his web site can also validly claim to be a professional
programmer, but he is certainly not a software engineer.
 
M

Mitch

In terms of education, it is possible to become involved in software
through an engineering department, or through a computer science
department - I'm not sure if that would make a difference to what those
graduates market themselves as!

- Laura

I study in a computing engineering department alongside electrical and
electronic engineers (http://www.eee.bham.ac.uk/eece/). Here we study
modules that include project management, OOP design, industrial
awareness... (For those interested the list is available here
(http://www.eee.bham.ac.uk/eece/ug/ccs_structure.aspx). There are a lot
of engineering modules there that are of use to all of the engineering
disciplines. You want my opinion on programmers, however, I'm sure the
fact that the Birmingham uni computer science dept website isn't working
says more than I can ;) ... J/K

Seriously though, and of course this is only my opinion, Software
Engineers have studied engineering principles, and these principles are
common to many engineering disciplines. The alternative (academically)
is Computer Science, where there is less emphasis on design and
management, and more on the nitty-gritty of each programming paradigm
etc. I think both of these, if taught well, teach you how to become a
programmer, as well as tools that are invaluable to implement that
programming knowledge well. As such anyone who can justifiably claim to
be either should... If you were to call yourself a programmer, in my
mind I see you as self taught. I don't blame you for that, I'm £21,000+
in debt and starting to wish I went that direction, however there are
things that you learn that you just don't pick up when self taught,
which although may not be worth the money it has cost, do make a
difference. For example I worked on a programming project for my final
year project (with some help from the kind people on this newsgroup) and
I used UML and other knowledge to design my program before
implementation. I wouldn't call it invaluable, but I would definitely
say that it saved me countless re-writes of 2000+ lines of code. If I
were self-taught, I doubt I would have gone to the extra trouble of
learning any OOP design principles.

There is so much grey area around all of these terms though it isn't
something I would worry about. If you are asking for job applications
make sure experience shows what you are capable of, which is more
important than a title. If you are claiming to be an engineer though, I
would have to suggest you make sure you have a piece of paper to back it
up ;)

I suppose to summarise, a Software Engineer establishes how to use
software as a tool to perform a job (and indeed which kind of tool etc),
a computer scientist studies the tool of computers (software for this
specific example) to learn how to better the tool, and a programmer is
simply someone who knows how to use the tool.

Thus you need the engineer to decide if/what/why/when/who/how the tool
is to be used, you need the computer scientists to make/alter a tool to
be as efficient and useful as it can be, and you need a farm of monkeys
to use the tool to do your bidding ;)
 
T

Timo Stamm

Mitch said:
If I
were self-taught, I doubt I would have gone to the extra trouble of
learning any OOP design principles.

I am an autodidact. But contrary to your doubts, the book I value the
most is "Design Patterns" by the GoF.

In my understanding, theoretical knowledge only becomes useful with
practical experience, and practical experience has to be backed up by
theoretical knowledge.


Timo
 
M

Mitch

Larry said:
Most of the CS/CE graduate programs in the US have moved
away from computer science and toward software engineering,
though only a few are handing out "Software Engineering"
degrees at this point. I think a program that's heavy on theory
and mathematics is more useful in the long run, but at most
schools many of those classes have been eliminated or are
infrequently offered.

Why do you say that? (RE: the heavy on mathematics) - Sure there are
some areas of programming where maths is important (Graphics / Gaming
for example) and I agree that there should be some taught (Fourier
transforms for example are common enough to be required reading) however
in a programming environment it would be rare to use these often and
many mathematical principles, including Fourier transforms, are well
documented for any who need to use them.

Do you not consider that good design principles are as important, if not
more, in a computer science/software engineering establishment? I agree
that a move away from computer science isn't a good thing, I think
computer science and software engineering should both be available (no
harm in sharing modules of course).

If you want something heavy in maths (I started a maths degree before I
decided on computer systems engineering) most maths departments still
have programming modules. I learnt some Java and Matlab in my first
year there. As I mentioned in another post on the subject, programming
is simply a tool, which you don't need a degree to learn to use.
 
M

Mitch

Timo said:
I am an autodidact. But contrary to your doubts, the book I value the
most is "Design Patterns" by the GoF.


I would like to think so too, I after all didn't know what an autodidact
was, until I just went and read up on it :) Also, there will obviously
always be the exception to the rule...

I may also read the book when I leave university, thanks to your
recommendation.
In my understanding, theoretical knowledge only becomes useful with
practical experience, and practical experience has to be backed up by
theoretical knowledge.

I agree completely, and in no way meant to suggest that the theoretical
supercedes the practical, as I believe otherwise. My point was more
that when you learn *yourself*, often you only learn what is required
for the job, and will normally look over other tools that could help but
aren't required. The point I was trying to make was more along the
lines of although anyone can self teach to be a programmer, if you want
to move up the ladder you need other talents as well, which (hopefully)
many universities or similar courses will make you aware of.
 
L

Larry Barowski

Most of the CS/CE graduate programs in the US have moved
away from computer science and toward software engineering,
though only a few are handing out "Software Engineering"
degrees at this point. I think a program that's heavy on theory
and mathematics is more useful in the long run, but at most
schools many of those classes have been eliminated or are
infrequently offered.
 
M

Mitch

Larry said:
By "mathematics" I was thinking more along the lines of
computational math - computational theory, compiler theory,
language theory (formal semantics, etc.), optimization (lp, ip),
network flows, etc. Problem solving skills apply to all areas
of software development.

I agree, though I would think these fall strictly into computer science
and less so in software engineering.
Yes, but beside the point. In school you learn software
engineering principles in a very rote, vague and indirect way.
You can only "really learn it" through practice. If you don't
learn theory and develop mathematical skills in school, then
it is unlikely to happen later.

I agree, but as mentioned by Timo "In my understanding, theoretical
knowledge only becomes useful with practical experience, and practical
experience has to be backed up by theoretical knowledge."


I think in order to get into any respectable computer/software degree
you need a decent maths grade, at least sufficient to be able to teach
yourself any maths required for most programming. However, as you were
referring to a different kind of maths (problem solving skills-esque)
then my point didn't really matter. I agree that a certain level of
problem solving skills is essential.

I have mentioned in a previous post that I think that the differences
between comp sci and soft eng lie in the different perspectives on
software. I think for the most part those features you mention first
(computational theory, compiler theory etc.) are specific to computer
science, I.E. the science of computers. I see software engineering more
as engineering, but using software. So in that respect you have to
learn the theory as an engineer, else when you come to a practical
environment you are thrown completely into the deep end.

All in all I don't know that our opinions differ that much :)
 
L

Larry Barowski

Mitch said:
Why do you say that? (RE: the heavy on mathematics) - Sure there are some
areas of programming where maths is important (Graphics / Gaming for
example) and I agree that there should be some taught (Fourier transforms
for example are common enough to be required reading) however in a
programming environment it would be rare to use these often and many
mathematical principles, including Fourier transforms, are well documented
for any who need to use them.

By "mathematics" I was thinking more along the lines of
computational math - computational theory, compiler theory,
language theory (formal semantics, etc.), optimization (lp, ip),
network flows, etc. Problem solving skills apply to all areas
of software development.
Do you not consider that good design principles are as important, if not
more, in a computer science/software engineering establishment?

Yes, but beside the point. In school you learn software
engineering principles in a very rote, vague and indirect way.
You can only "really learn it" through practice. If you don't
learn theory and develop mathematical skills in school, then
it is unlikely to happen later.
 
R

Roedy Green

Why do you say that? (RE: the heavy on mathematics) -

Two reasons:

1. It is harder. It a more a training in problem solving than picking
up trivia about some particular problem domain.
2. the knowledge does not go out of date quickly.

The reason I went into math was everything else was based very much on
memorising. In Math, memorising skill did not help a bit. I felt I
was actually learning something, not just regurgitating.
 
M

Mitch

Roedy said:
Two reasons:

1. It is harder. It a more a training in problem solving than picking
up trivia about some particular problem domain.
2. the knowledge does not go out of date quickly.

The reason I went into math was everything else was based very much on
memorising. In Math, memorising skill did not help a bit. I felt I
was actually learning something, not just regurgitating.

I see your point, my memory is abysmal and it has always been a gripe of
mine when people clearly only succeed in an area because they can
memorise everything about it rather than understand it.

That said, however, you can learn problem solving techniques in a number
of areas, areas not restricted to those that can be described using maths.

In addition, although those skills learned using maths wont go out of
date quickly, in a business that moves as fast as computing, experience
in dealing with new techniques/changing theories should be a compulsory
part of the curriculum...
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,763
Messages
2,569,563
Members
45,039
Latest member
CasimiraVa

Latest Threads

Top