Working as a programmer, I got asked this question so many times that I thought of making a shirt out of the answer. The famous question is, what is the difference between a programmer and a developer?
I asked the question on reddit and I was thinking that people will think just like me. There is no difference between a programmer and a developer. But the majority of people believed that a developer is a visionary while a programmer is someone who types code.
I still don't agree. I know that not every one that reads the question give their 2 cents, so I am glad that the most popular response was this one.
This sounds like an arbitrary semantic distinction. I call myself a programmer and a developer. So does every programmer/developer I know.
I used to work with a guy that was an expert in his field. He was the .Net developer(that's how we referred to him) in the team and every time there was a .Net issue in the company the other teams stood in line to consult with him. After working for a couple years, he was promoted. Bigger paycheck and new title. His new title was Web Developer. I wondered, what was he before that?
When working on your own project you wear different hats. You are the Sysadmin, the DBA, the Programmer, the Marketer, the Community manager, and everything that comes in between. There is no one to report to so you don't give yourself a title. But sometimes you do the same versatile tasks in a company, and the agreed upon title for someone that does all this is Fullstack Engineer
OK not everyone agrees on that. Engineer is another sensitive term used. What makes you an engineer? According to Google:
Engineer: a person who designs, builds, or maintains engines, machines, or public works.
synonyms: originator, deviser, designer, architect, inventor, developer, creator; mastermind
This is the definition I usually go with, but lets not forget about the other definition that makes people disagree in the first place. Merriam-Webster:
Engineer: a person who has scientific training and who designs and builds complicated products, machines, systems, or structures.
An engineer needs to have scientific training. In other words, has a degree from a renowned university. You have the ring to prove it so to speak. Yet, as I college drop out, I held many Front-end engineer positions and to add to the injury I worked as a Software Architect too.
The problem is not that I was unqualified for the job, I'm sure I did more than a decent job in those companies. The problem here is no one cared about the title. No one put a lot of efforts in the name of the position I was to hold. HR didn't question the lead dev if the person they were hiring was a Merriam Webster engineer.
As a programmer, I did the same tasks my fellow developers were doing. Actually I don't remember, maybe I was the developer and they were the programmers. When we had too much work to handle, our lead will say "We need more devs for this". Did we really need more "visionaires" as redditors put it? Or did we need someone that merely types what he is told to.
It's an entirely arbitrary distinction, and yet the words we use affect how people perceive us. I don't want people to perceive me as a mindless, obsessive machine; I want them to perceive me as a designer, a visionary, and a craftsman. So I tend to use "developer" instead of "programmer".
The meaning of those titles differ from people to people. If you are a programmer, say who worked 5 years in the field, you will have less trouble being called a programmer or developer. Because you know that they are to mean the same thing. It's not like we give the hard problems to devs and the repetitive stuff to coders (programmers).
But when you are new in the field, and are trying to make your linkedin profile look good, you will probably consult the dictionary first before choosing any of the words. And a developer sounds more professional then programmer. Engineer sounds even more impressive.
Are programmers the guys we are outsourcing from eastern Europe? My view definitely changed when I started working with developers in Mexico. What they really were was remote workers. It's not like we sent them the "programmer" stuff.
from what i understand, a programmer just programs and thinks "in logic" to solve a problem, while developing is developing a product with the intent of finishing it up. i dunno, english isn't my first language.
Developing implies there is a thinking process involved. You can almost hear a creative mind behind it. Working with real tools, schematics, participating in a team, meeting, visualizing a product. Programming is limited to a computer. You program a computer to do something. You tell the computer what to do. Basically a programmer could be replaced by a program.
That's only the dictionary definition. But on the job, this distinction doesn't exist. There is no one working like a robot. The difference merely exist in the mind of someone that doesn't work in the field.
There is however a title for someone that simply does everything we tell him to. Interns. (even that is debatable)
All the connotations of the programmer's title are actually reserved to interns. It could be an intern developer or intern programmer. The important part is intern.
Programmer: "OK, can do that."
Developer: "Wait, wouldn't it be easier to just X the Y and Z it through B? Would also mean no dependency to A."
The reason we don't know the proper title name for people who work in technology is simple. Software is magic to most people, including the managers and suits in the company. It just works. You give some guy the specs and he does it.
That is the same reason solo developers rarely stay long in a company. No one understand what they do. If you know anyone that worked in the times of Webmasters, he will probably tell you that he was also in charge of fixing the broken keyboards and mice.
There is a difference in the meaning of programmer and developer. But there is no difference in the workplace. They both refer to the guys and gals that know how to tell the computer what to do.
I am going to throw in "software engineer" into the mix and talk about all three. Disclaimer: I double majored in Computer Science and Philosophy in college and now my title is Software Engineer. I should also add that when I am talking to my coworkers I refer to myself as a developer, a programmer, an engineer, meaning the terms inside my immediate circle of colleagues are interchangeable. But from what I've seen and experienced, I think the respect hierarchy generally goes software engineer > software developer > programmer. This is how non-technical people will perceive and rank the titles and although to a lesser degree, this holds true in the eyes of some technical people as well.
A programmer is someone who can make software. A Software Developer is a job title, and normally means it is there source of income.
I think what we should take away from this, is that there is no universal distinction to be made. At the end of the day, everyone has slightly different expectations to what rights and responsibilities come with the titles.
I asked the same question on hackernews, it wasn't as popular but there were interesting answers too.
"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.
The longer you work as a programmer, dev, engineer, the more you adjust your definition.
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.
At some point you stop giving a definition to any of the titles. You realize that it all depends on the audience you are talking to. Most people are familiar with the word programmer. They know that it involves code, apps, websites. So if you are talking with a friend the answer is you are a programmer. With an interviewer, you are a developer.
With a marketer, you are an Elastic Software Engineering Architect specializing in Qubit Semantic Analysis.