Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / April 2006

Tip: Looking for answers? Try searching our database.

what is the difference between computer programmer and software engineer?

Thread view: 
Leo - 21 Apr 2006 03:01 GMT
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.
James McGill - 21 Apr 2006 08:09 GMT
> 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.
Frank Seidinger - 21 Apr 2006 08:09 GMT
Leo schrieb:

> I read a news report today, saying that within IT industry the
> percentage of computer programmers has been decreased from 21% in 2001
[quoted text clipped - 4 lines]
> 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.

Signature

Geld allein macht nicht glücklich.
Es kommt auch auf die Menge an...

Thomas Weidenfeller - 21 Apr 2006 08:30 GMT
> 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
Signature

The comp.lang.java.gui FAQ:
ftp://ftp.cs.uu.nl/pub/NEWS.ANSWERS/computer-lang/java/gui/faq
http://www.uni-giessen.de/faq/archiv/computer-lang.java.gui.faq/

Bjorn Abelli - 21 Apr 2006 08:57 GMT
"Thomas Weidenfeller" wrote...

>> Therefore the difference here is usually, if you have studied or not.
>
> 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
Thomas Weidenfeller - 21 Apr 2006 10:24 GMT
> 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
Signature

The comp.lang.java.gui FAQ:
ftp://ftp.cs.uu.nl/pub/NEWS.ANSWERS/computer-lang/java/gui/faq
http://www.uni-giessen.de/faq/archiv/computer-lang.java.gui.faq/

laura.paterson@gmail.com - 21 Apr 2006 09:11 GMT
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
Mitch - 21 Apr 2006 15:27 GMT
> 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 ;)
Timo Stamm - 21 Apr 2006 17:17 GMT
Mitch schrieb:
> 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
Mitch - 21 Apr 2006 17:34 GMT
> Mitch schrieb:
>> 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.

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.
Jeffrey Schwab - 21 Apr 2006 13:34 GMT
> Dear All,
>
[quoted text clipped - 6 lines]
> 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.
Rob@Bedford - 21 Apr 2006 14:35 GMT
Larry Barowski - 21 Apr 2006 17:17 GMT
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.
Mitch - 21 Apr 2006 17:20 GMT
> Most of the CS/CE graduate programs in the US have moved
> away from computer science and toward software engineering,
[quoted text clipped - 3 lines]
> 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.
Larry Barowski - 21 Apr 2006 18:37 GMT
> Why do you say that? (RE: the heavy on mathematics) - Sure there are some
> areas of programming where maths is important (Graphics / Gaming for
[quoted text clipped - 3 lines]
> 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.
Mitch - 21 Apr 2006 18:39 GMT
>> Why do you say that? (RE: the heavy on mathematics) - Sure there are some
>> areas of programming where maths is important (Graphics / Gaming for
[quoted text clipped - 9 lines]
> 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.

>> Do you not consider that good design principles are as important, if not
>> more, in a computer science/software engineering establishment?
[quoted text clipped - 4 lines]
> 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 :)
Roedy Green - 21 Apr 2006 20:54 GMT
>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.

Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Java custom programming, consulting and coaching.

Mitch - 21 Apr 2006 21:40 GMT
>> Why do you say that? (RE: the heavy on mathematics) -
>
[quoted text clipped - 7 lines]
> 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...


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.