Java Forum / General / April 2006
what is the difference between computer programmer and software engineer?
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 MagazinesGet 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 ...
|
|
|