Hacker, programmer, developer, coder, and engineer are terms used by different groups to denote the same people. So the difference is mainly what they say about the speaker.
Very true. "A friend of mine" was writing some ad copy for a job req. "his" employer was trying to fill, and wanted to use the word "hacker" in the headline. (E.g. "Looking for a great hacker", or somesuch.) The (oursourced, non-technical) HR dept. would not permit the use of that word, as it sounded too much like advertising for someone to break the law.
I've always believed that these terms told you a lot about the speaker, but I was shocked to see such a clear, real-life case.
Heh. I've had a similar problem. I do recruiting for investment banks, and sometimes the job spec says 'developer' but the job description clearly calls for a hacker. Financial HR departments are usually pretty forgiving when they can plausibly deny responsibility, though.
"Hacker" is somewhat special, though. I tend to use "programmer", "developer", and "coder" almost[1] interchangably, and I don't mind using them to describe someone whose only language is COBOL. "Hacker" confers greater respect, and I would only use it to describe a small subset of the people whom I would describe as coders.
[1] They describe the same group of people, but grammatically I use them slightly differently. Programmer is in association with a language, and developer in association with a project. Hence: Joe is a coder; Joe is a C++ programmer; Joe is a KDE developer.
I went to a functional programming group meeting and found that the people there used the term hacker with disdain. From the context it seemed like they used it to refer to programmers who don't have graduate degrees.
There's an anecdote about Ken Thompson having "coder" as his occupation in his passport. Shame I can't find a link. Typical of a man who debunked persistent objects with a quip about having them for years; they're called files.
Being an above average coder or programmer means understanding many things. Grabbing the moniker developer instead seems more about worrying how others perceive you.
I think they are mostly the same, but that "developer" means more than just programming. By developing something you take an active part and can make decisions about the software. If you're "just" a programmer, you just program something that matches the specs. (think outsourcing)
I don't think there is a hard and fast rule, but here is what appears to be many people's (i.e. not everyone's) interpretation:
- Programmer: Primarily just writes code to accomplish the tasks that he is given.
- Developer: Understands and writes code too, but is also involved in slightly higher-level considerations such as overall architecture and visual presentation of a large app, also probably has a say about software processes, an impact on testing procedures etc.
- Software Engineer: Doesn't write that much code but organises the framework in which it will be written: i.e. gathers requirements, manages the testing process, makes sure the architectures will support long term development and maintenance issues, forward looking in terms of functionality, languages, technologies, and competition, as well as making sure everyone else has what they need and things are on shedule.
"Instead of 'programmers' (people that specialize in writing code), what you need are 'developers' (people who will contribute in multiple ways to make the product successful)."
Instead of weasel words what you need is a description that covers how you get done what it is you do. In fact its my experience that people who identify as programmers, hackers or coders are much more down to earth about solving problems and doing useful stuff. What's after developers? Software construction facilitators? Fancy names just seem to miss the point.
The term programmer makes me thinking "we need 100 programmers to meet our deadline!"... stupid concepts like working_code=num_programmers x time and in general that programmers are easily interchangeable.
Developer is much better and is able to evoke the idea that it's not just a matter of writing code but there is a design process involved.
p.s. how can I write a verbatim asterisk? backslash quoting does not work
The word Hackers has been basterdized over the years and it's mundane usage makes it an elusive term. What do you call the traditional programmers that broke through systems?
in the case of my current employer, its how much you get paid and it stems from what you education you have. since i graduated with a computer engineering degree, i get the developer title.