What is the difference between software developers, engineers, coders, and programmers
Now that we've clarified a bit <a href="https://javascript.plainenglish.io/what-is-software-development-4a6433f2ded3" rel="noopener">what software development is</a> and <a href="https://javascript.plainenglish.io/what-is-software-engineering-dubois-s%C3%A9bastien-333e347a0919" rel="noopener">how software engineering differs</a>, let's look at the difference between software developers, software engineers, coders, and programmers. Please note that this is a personal opinion, and depends on the context; there's no universal truth here.
This content is part of my <a href="https://dev-concepts.dev" rel="noopener">Dev Concepts series</a>.
Is there really any difference?
Let's answer a seemingly simple, but important question: what is a software developer, engineer, coder, programmer? Well, like many things in IT, the answer is "it depends".
Usually, I use those terms interchangeably, because I consider that all the people who write code should actually apply software engineering techniques. I'm not a big fan of the term "coder", because it gives the impression that code is all there is, and nothing could be farther away from the truth. It's doing more harm than good, even if the term sounds "cool". The same is true for the term "programmer".
Generally speaking, a software developer is someone who writes code and thus who creates software. Obviously, software developers need to know as much as possible about code and programming languages.
Then, depending on the context/environment (e.g., hobby, side-project, small/large team, small/big company, etc), developers have more or less responsibilities. The common denominator of course remains the coding part and everything that surrounds it directly (e.g., code quality, best practices, patterns, etc). As a software crafter, I consider that all software developers also need to test their code (ideally using automated tests), but I know environments where quality assurance and testing are kept separate from development (for better or worse).
In small startups, "developers" tend to take care of everything, and the kitchen sink. For instance, they'll take on requirements gathering, solution architecture, software design, coding, User Interface (UI) design, User Experience (UX) design, testing, release management, deployment, infrastructure, security, and so on. It's much more frequent to find so-called full-stack developers working for small startups.
In large teams/groups/organizations, there is a much more granular separation of roles and segregation of duties. There, you'll find business analysts (BAs), functional analysts (FAs), enterprise architects, solution architects, software architects, software developers, UX designers, UX architects, UI designers, Web designers, front-end developers, back-end developers, testers, security analysts and more!
As I've said, it depends.
Conclusion
In this short article, I've quickly discussed multiple terms that are often used interchangeably in the software development world. Software developer, engineer, coder, programmer, etc. What's in a name, right?
It's just an idea, a simple concept. And that's the magic; if you learn the concepts one by one, then you'll quickly become one of us, a software crafter. It's not that hard; it's like everything, it just takes time.
That’s it for today!
PS: If you want to learn tons of other cool things about product/software/Web development, then check out the Dev Concepts series, subscribe to my newsletter, and come say hi on Twitter!