what is the difference between computer programmer and software engineer?

Discussion in 'Java' started by Leo, Apr 21, 2006.

  1. Leo

    Leo Guest

    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.
     
    Leo, Apr 21, 2006
    #1
    1. Advertisements

  2. Leo

    James McGill Guest

    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.
     
    James McGill, Apr 21, 2006
    #2
    1. Advertisements

  3. 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.
     
    Frank Seidinger, Apr 21, 2006
    #3
  4. 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.
    No, just if you call yourself "engineer" or "Ingenieur".

    /Thomas
     
    Thomas Weidenfeller, Apr 21, 2006
    #4
  5. Leo

    Bjorn Abelli Guest

    ...
    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
     
    Bjorn Abelli, Apr 21, 2006
    #5
  6. 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
     
    laura.paterson, Apr 21, 2006
    #6
  7. 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
     
    Thomas Weidenfeller, Apr 21, 2006
    #7

  8. 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.
     
    Jeffrey Schwab, Apr 21, 2006
    #8
  9. Leo

    Rob@Bedford Guest

    Good answer!
     
    Rob@Bedford, Apr 21, 2006
    #9
  10. Leo

    Mitch Guest

    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 ;)
     
    Mitch, Apr 21, 2006
    #10
  11. Leo

    Timo Stamm Guest

    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
     
    Timo Stamm, Apr 21, 2006
    #11
  12. Leo

    Mitch Guest

    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.
     
    Mitch, Apr 21, 2006
    #12
  13. Leo

    Mitch Guest


    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.
    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.
     
    Mitch, Apr 21, 2006
    #13
  14. 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.
     
    Larry Barowski, Apr 21, 2006
    #14
  15. Leo

    Mitch Guest

    I agree, though I would think these fall strictly into computer science
    and less so in software engineering.
    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 :)
     
    Mitch, Apr 21, 2006
    #15
  16. 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.
    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.
     
    Larry Barowski, Apr 21, 2006
    #16
  17. Leo

    Roedy Green Guest

    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.
     
    Roedy Green, Apr 21, 2006
    #17
  18. Leo

    Mitch Guest

    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...
     
    Mitch, Apr 21, 2006
    #18
    1. Advertisements

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 (here). After that, you can post your question and our members will help you out.