Hacker News new | comments | show | ask | jobs | submit login
Ask HN: What is the difference between a programmer and a developer
4 points by fffrad on Mar 4, 2015 | hide | past | web | favorite | 10 comments
Working as a web developer, or web programmer, I could never answer this question. I always had to make something on the spot. I think it is the one and same thing, but maybe HN can give me a better answer.

"Computer Programmer" is a term that basically anybody will understand if you tell them that's what you do.

"Developer", "Software Engineer", "I run a software company", etc. will often get you a blank stare when you quote it to regular people in answer to "what do you do for a living?". You'll have to follow up with "I program computers" anyway, so you might as well just start with that when meeting people at a party.

The only reason you'd ever need to pull out the actual official description of what you do is if you were interviewing for a job (or consulting gig) with an organization that took such things seriously. For that case, fall back on the reasoning outlined in the excellent article "Don't call yourself a programmer".

For the more common case where you're not trying to impress anybody (or explicitly trying not to sound impressive), and just trying to hold a conversation with people you're probably never going to turn into clients, it's best to simply use the quickest term they'll understand so that you can move on to more important things.

They are the same. However, some have noticed that some terms make other people think it's more important than others. So people say different things based on their perception.

As I see it:

A a person is a programmer to the extent they are competent at coding software to given requirements.

A person is a software developer to the extent that they are competent developing software to support an (initially, less-well-specified) business need, programming is part of that, but so is designing architecture for systems of separately coded, interacting components, doing the research and customer interaction to get to business and technical requirements, testing (not just unit testing), etc.

In practice, though, the terms (as well as "software engineer") are often used interchangeably with different places using different terms for the same role (which may either fit the "developer" or "programmer" description above.) Some places do make the distinction, though not always with the exact terminology (for instance, in California State civil service, there is a rough correlation between "programmer" role described above and the "Programmer" series of classes and between "software developer" role and the "Programmer/Analyst" and "System Software Specialist" series of classifications.)

Programmer: dismissive term used by people that don't really understand programming. You will often encounter it in industries where software is just one of the many supports for the main product. The pay is usually low. The people doing the hiring don't really care what you do or what your skills are. They are just using a checklist of buzzwords and standard tests found on the internet. The work environment is either bad or boring. And coworkers are usually not interested in evolving professionally or personally.

Developer: term used by software people. The kind of persons that are plugged into the tech and IT world one way or another. They usually understand how a product is built and the efforts involved. Because of this, they are often prepared to pay for your work and invest in your skills. The hiring process usually involves higher level concepts and is done in a more sociable manner. The work environment is mostly good, but overworking, missed deadline anxiety and crisis management are often encountered. Sociable coworkers can also increase anxiety if you're an introvert.

Engineer: proud term used by pretentious people. You will often encounter it in companies entrenched in a specific niche. The lack of competition usually leads to strange work ideals and preconceptions. The environment is usually filled with politics and managerial incompetence. And although most coworkers are introverts, everybody thinks very highly of themselves. So clashes are common, even for minor things. The pay is average. While the environment is great for learning and getting started, experienced people usually leave for greener and calmer pastures.

Of course, there are exceptions. But this is what I noticed so far based on jobs, interviews and people. Each of these titles has advantages and disadvantages. So I don't think one is better than the other. Picking one is a just a matter of what you currently want from your job.

I call myself a hacker. It's like a fake it till you make it developer

Wow this is the best answer I read. I agree that it is more about how the title is used versus what it means. The title defines more the person using the term than the job description.

The word "developer" can be abbreviated to "dev," which is convenient.

Add software engineer to the list.


Wider scope.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact