I’m Not A Programmer
“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”
I have this thought all the time in my mind: “what am I?”. No… it’s not an existential question. I’m pretty sure I’m a human (am I though?). I’m thinking about what is my answer if someone asks: “what do you do for a living?”. Usually, I would say I’m a programmer, but I don’t quite like that term to describe myself 😅 I’d like to describe myself as a software engineer instead.
Even though we live in a digital era, not many people know about the terms for someone who works in the field of technology, especially software. The terms for other jobs are pretty well-known. For example doctors, architects, managers, etc. Whereas for people whose work is related to software, most people still find it foreign. Usually, people use the term IT, like “oh you work in IT?!”, and I don’t like it personally cause it sounds weird. You’ve never called an architect and said: “oh you work in buildings?!”, right?
So this story is about my uneasiness towards some of the terms that exist related to the software engineering job. To start this story, I created a simple survey on my Instagram account several weeks ago to ask my fellow “tech friends” about their opinion and to also check whether they got the same feeling as me regarding this matter. Along with their answers, I manage to put together this story.
1. Coder
The first term I would like to discuss is “coder”. By definition, a coder is a person who can write code. This term appears in movies and tv shows that I recently watched. In the show, there’s a programmer that often describes himself as a coder. This is weird to me because I’ve never met someone who will describe themselves as a coder. Even among my college friends, we never addressed each other with that.
I don’t know. Maybe in the USA or any other country, they use that term (?) But at least here in Indonesia, we who study and practice computer science never would have addressed ourselves as a coder. It was so weird and “cringey” as hell when I first heard it. So for my fellow computer geek out there, is it bothering you too? 😜
2. Programmer
The next term that I would like to discuss is the most common term used by people I think, programmer. If you look it up in Wikipedia, a programmer is a person who creates computer software. It’s a person who can write a program, and that’s that! So if you had created a simple program… Congratulations! You can call yourself a programmer 😎
As I said, I don’t want to be called a programmer. We who studied computer science or have a degree in computer-related majors have learned more than just writing a program. I think everybody can become a programmer as long as they can write computer programs. If you can write a program, regardless of how simple the program is, you are a programmer.
There are many online classes, even Youtube videos that can teach you how to write a program. Calling a person who studies computer science a programmer is an understatement. Yes… we learn how to write programs, but we also learn a bunch of other stuff.
So without the intention of undermining the “programmer” title, I think it’s not quite fit to call a person who studied computer science a programmer. Yes… we are also a programmer by heart ❤️ but I think we are more than that 😀 Also, we never call each other a programmer. We use this term to simplify the definition because the majority of people are more familiar with this term.
3. Engineer
The next term is the most common-use term among us and the term that I want to be addressed. Most of my friends who participated in my survey also prefer this term among others. It’s also the term used in technology companies. In my country, commonly known engineering professions are industrial engineers, civil engineers, mechanical engineers, and so on. In a sense, people who studied computer science are also an engineer.
By definition, engineering is the use of scientific principles to design and build something. So by that definition, we are software engineers cause we design and create software using known software engineering principles, not just writing codes.
"We apply engineering principles to the software that we built"
👆 is one of my friend’s opinions about what the term “engineer” really means for them.
We do not simply write a program, but we also learned how to think — about what it takes to build good software.
Aside from writing programs, we also pay attention to other aspects. Such as maintainability, sustainability, scalability, efficiency, algorithm, system architecture, and many other things.
“Software engineer” is also a general term that we often use. It’s similar to “doctor”. Kinda like doctors who have their specialty like cardiothoracic, neurological, psychological, etc. We also had our own specialties. Several of the commons nowadays are backend engineers, frontend engineers, mobile engineers, testing/automation engineers, and data engineers.
4. Developer
There is also one other term and that is “developer”. We use this term also among us, but not all of us can be described using this term. Confuse? Just hang on, I’ll try to explain it 😃 Programming is the use of programming languages to make a program (well of course 🙄). There is a wide selection of it, and each of the languages has its strengths and its use cases. For example, building a web might heavily use PHP or Javascript programming language. For Android apps, you need to use Java language. So the term “developer” is used to describe engineers who make software using one of these programming languages, that they are “developing” something using a specific programming language. So there are Javascript developers, Java developers, Python developers, and so on.
This term is also used for several types of engineers. For example, you can use this term for most front-end engineers. Like web developers or mobile developers. This term is also used for engineers who like to play. Yes, you guess it correctly! Game developers. These engineers could use this term cause in addition to creating the software, they also “develop” it, making it better in each version for users. We never used “game engineer” though, cause it never feels right 😂 After all, they are not essentially “engineering” a game, instead they “developed” a game.
We also never use this term in any other technology field like data, backend, or AI. What they do is closer to “engineering”, rather than “developing”. I know it’s confusing for the last part, but it’s the best I can do right now 😅
So there’s that! I hope you can know what’s the difference between each term and acknowledge my “uneasiness” towards each of these terms 😁
So my fellow engineer friends… do you feel the same way?
Regards — Ferzos 🍻