The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
When did we become "Developers" rather than "Programmers"?
And what the he*l are "Coders" and what is the difference?
I started out as a coder, simply by writing code. When I learned the details of the language and learned to write an application without putting procedural code in the events and got paid for it, I became a programmer.
Developer was when I got my education, and requires a bit more than knowing how to program; it suggests you know a bit about databases, webservers, protocols and security.
The first is a bit of a hacker. The second a strong amateur, the third should be someone who doesn't just writes a program, but who can explain when NOT to automate, and what benefits to expect from both options.
Similar to the "three levels of cooking" series on Youtube. My current cooking-skill is just below level 1
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
That part sounds like a marketing spin on the term "programmers".
But there are practical distinctions between programmers (developers, coders, etc) and engineers.
Programmers are those who know how to productively efficiently write code to accomplish a purpose. If a professional, they understand why they choose the coding solution they use for a given problem domain. Some very experienced, very knowledgeable people choose to stick to being programmers because it suits them and the type of work they want to do.
As for software engineers, Merriam-Webster defines engineering (in general) as:
a: the application of science and mathematics by which the properties of matter and the sources of energy in nature are made useful to people
b: the design and manufacture of complex products
Software engineers are also programmers. But they look at a project beyond just the code at hand. They consider value engineering, systems requirements and limitations, the full software development life cycle, can manage a project, manage developers, do architecture, interface with customers, etc. That is not to say some programmers are not capable of doing all this, but we are talking about roles, not individuals.
The reluctance to hire good software engineers is why development teams typically have a BA, a scrum master, as well as developers and QA folks. A good software engineer can replace the BA and scrum master functions and produce a better product quicker and better. Why? Because the software engineer has the BA and scrum master knowledge domains within their total knowledge domain. BAs and scrum masters do not have the software development knowledge domain within their knowledge domains. That means an inefficiency is introduced by communication and translation to BAs and scrum masters, and that leads to an accumulation of small delays, mistakes that have to be corrected, and sometimes missed deadlines.
It is not about one being better than another. Software engineers need to trust the skills of their programmers, and communicate project details and status to all, as well as mentor programmers who want to grow into software engineers. Programmers who have not yet obtained the broader knowledge and experience of a good software engineer need to recognize that, and return the trust.
Differences can be seen as competitive, or hierarchical. Or, they can be seen as complementary as all part of the whole.
This means that my daughter is a developer or maybe a software engineer. She has a master's in marketing and spends all day drawing web screens for business. She knows nothing about programming. She studies what the customer needs to know and how they react to screens.
So many years of programming I have forgotten more languages than I know.
Programmer - Someone that positively enforces proper grammar.
Developer - which sounds like Devil oper is someone who operates under H*llish conditions
Coder - Cod is a fish so its a specific type of fisher person. They like cod.
Full Stack - pile of pancakes or flapjacks.
Analyst - going to leave that one alone...
I didn't verify any of this with google, duckduckgo or bing, I just copied the letters from my keyboard and pasted them randomly on the screen to what you see now.
When I started work, in 1972, the other two terms did not exist. I was a "computer programmer".
That is what I put on my tax return and on the reentry card each time I returned from an overseas trip, and anywhere else that asked. So that is what I continued to call myself until finally, 2 years ago, I switched to "Retired."
Other people over the years have referred to me as, and I have answered to "Software Developer", "Software Engineer" etc but never "Coder".
A "coder" is a semi-derogatory term for someone who can translate pseudocode (or something similar) into a programming language, more or less mechanically, without being concerned about its use or place in a larger picture. A junior programmer who either have no aspirations, or is not trusted to make any decisions about the code structure. He is the runner boy on the software development site.
A "programmer" translates somewhat abstracted designs into a programming language. He makes significant decisions about how to realize the design, but the design is done by others. He is the skilled carpenter on the building site.
A "software engineer" is like a construction engineer: He decides on the structures and interconnections. In a small company, he may be present on the building site, even handling the hammer (/compiler), but in a larger company he leaves the menial tasks to the coder.
A "desginer" is an architect. Some architects decides on the structures and interconnections, like a software engineer, but he might as well be elevated above the physiscal construction - whether the design is realized in wood or concrete (/c++ or Python) and other real world details.
A "software architect" hardly knows what a compiler is, but knows how to structure the customer's problem into subtasks that can be left to a desginer for the details. He knows what the end product should look like to the customer, whether realized as a web interface or with WPF.
There are certainly no clear cuts, but great overlap. "Developer" is a diffuse term somewhere around software engineer, but it may cover a lot of the programmer's tasks, or the desgner's task.
The borderlines may depend a lot on the context. In open source environments, the recognition of designer and sorfware architect skills is essentially limited to the needs of a software development context; they rarely consider it necessary to ask a professional programmer what he wants in a photo editor, a musician what he wants in a music editor. On the other hand you've got the huge companies like MS, and IBM in the old days, whose architects could care less about NTFS versus ext4 (except for the marketing aspects).
I find it very useful to relate the roles in software development to similar roles in mechanical construction, like architect, engineer, carpenter, runner boy. Not everybody agrees with me, but use the terms in more arbitrary ways. So we may disagree at times.
As someone working solo on a big project "developer" seems to fit better than just "programmer". In addition to programming I do UI/UX design, feature planning, testing, artwork, and even handle support email.
As to "programmer" vs "coder", I can think of a couple of possible explanations. Some programmers are anal about efficiency. Clearly, "coder" is much more efficient than "programmer". Alternatively, given some of the "coders" I've known, it could just be that it's not as tricky to spell as "programmer".
I see this as very simple. Coders do what they are told to do. Developers ask why things need to be done so they can solve the actual problem. Just about anyone can be taught to write code but understanding what the business whats to do and how they do it can mean a completely different solution is produced. e.g. a coder can be asked to produce a report and they build it. A developer should as if they can make it generic and have inputs such as a client Id so it can be reused. without building the same report 10 times for 10 different clients. (I see this sort of thing a lot).