In this text, I use programmer to refer to a software engineer that specializes in building or developing applications or scripts for systems (example is for embedded systems) whereas a developer as a software engineer that specializes in building or developing web, mobile or desktop applications.
Yes, being a programmer and a developer are not in the same category.
We have lumped these ideas together for a long time now and placed unfounded expectations on developers to know a lot more than they should or actually need to learn or know.
Given a set of tasks to work on a system application, should a developer be able to do this or should we call upon a programmer to do this task.
Given a set of tasks to build an ecommerce system, should we call on a developer or a programmer.
I think sometimes someone actually wants to be a developer but is lumped together with being a programmer or systems programmer as they are misdirected by unsolicited and unapproved advice from a lot of developers on youtube and other online learning platforms. Developers are being told to learn all these concepts on data structures and algorithms that they don't actually ever use in their daily tasks.
A lot of developers might have given up not because they can't be web or mobile or desktop application developers but because of such ill advice that misdirects them and makes their learning journey soo difficult from the very beginning. Hardly would a developer depend on advanced concepts of computer science in programming when working on an application. Developers need knowledge on how to use tools, that is the most important thing. How to use docker, mongodb, firebase, aws lambda, reactjs, mysql (or a typeorm), sanity.io, google cloud functions and many other tools. These are the actual tools that they would be using in their work and not some random concepts in computer science that they would hardly use or ever depend upon.
A systems programmer or programmer as in this article would need the computer science based understanding for developing rather complex systems applications and would also hardly depend upon docker or mongodb or vuejs in their daily tasks. They would need to write applications sometimes in assembly (hardly ever happens these days) or other languages that help them have more granular control over systems.
Another ill advice is, Oh when you go to facebook or other FANG companies, they do use those principles so learn them. My brother, my sister, you would hardly work there, you want to make money now and as you begin in your journey you don't need to know all those concepts, it's arguable even how many of their developers do tree shaking or bubble sorting in writing their web applications.
Now, it will also be a very ill advice from myself too if I were to say that these concepts have no place in being a developer but given the type of software engineer you want to be, you might never depend on these concepts so it's why I think it's ill advice to get anyone who wants to be a developer to compulsorily learn these concepts as they can sometimes be hard to comprehend and might cause someone who could have been a very good developer writing applications with tools (as we mostly do nowadays, anyways) to give up. And don't come up with all sorts of things like, yes, if the person gave up then maybe they are not meant to be developers. Who said so? There's no-code software solutions and all other principles and tools these days that can allow anyone at all to begin their developer journey without knowing all or any advanced principles in computer science programming.
In the same way a systems programmer should not be lumped into the same category as an applications developer. They have their own tasks to perform and should not be called upon to do the tasks assigned to a developer. A programmer in this case, can easily be a systems administrator that configures and manages systems unlike a developer.
Placing both in the same category makes their tasks unnecessarily too complicated and difficult to do or become or specialize in the profession.
Look, modern times requires modern ways of thinking and I think we should drop old ways of thinking or categorizing engineers as now it's more evident the very different categories of software development ranging from the frontend to the backend of applications and how it differs also from developing system applications.
I think lumping these two very different tasks together places an unfounded expectation on either type of software engineer.
Pick your type of poison and stick with it, don't ill advise others out of a possible profession.