Programmer Vs Developer Vs Engineer
The Naming Dispute
If you’ve ever looked through a software team line up, you’ve come across these job titles and perhaps wondered if a developer on your team is indeed good for your business development, or a software engineer is a key to success of your project as it contains a bunch of technical data that only an Engineer can handle. Or maybe for your application or a piece of software to have a reliable code, you need a coder? Let’s look into it.
“A software engineer, a developer, and coder walk into a bar.
— Here come the programmers! — says the bartender.”
🤷🏻♀️ One of these folks is not like the other
The variety of role names did not happen because of the fundamental differences in the way these roles operate. Rather, it was a historic process of industry growing and becoming more robust. The intersection of international terms came to contribute to the variety. First off, there is no incremental difference in the way these jobs of digital production perform in their specific environment. However, there are subtle differences in the approaches to solving technical tasks which might give you a hint of how the partnership is going to go, provided you settle with a certain nomenclature.
The programmer
Picking up on that joke, a programmer is the umbrella term for the entire array of jobs in the digital product manufacture. Now, I’ve seen definitions of a programmer as the one who “writes code for applications and software without too much involvement in design and experience. I think this is not quite accurate as these are more of the duties of a back-end developer. I believe a programmer is any computer professional who knows how to code.
Everything that results in a digital production output by utilizing programming languages can be considered programming, making the ambassador of these skills, a programmer.
In my country, 🇷🇺 we have the official state-regulated job titles and descriptions. Most of us involved in software and computer industries are in terms of labor legislation, engineer-programmers.
The developer
A developer is perhaps the most common job title referred to when you mean writing code and assembling software. Having been introduced in the late 80’s, the term developer reflects the modern understanding of digital production.
Today we see production as a gradual and systematic process of creating a product while achieving a certain level of performance, appeal, and exposure. Why gradual? If you could load all bases or score all goals, you wouldn’t need it to be gradual. Unfortunately, we are often limited in resources and also our ideas evolve over time. Development seems to be the really sharp word for this process.
Now, a developer in that sense is different from say a coder, because of the specifics of the process where coding is just a part of their responsibilities. Among these are also documenting features, conceptual analysis, in some cases, design, testing and debugging, and optimization.
There is a logical gradation of developers to junior, middle, senior, and lead. With juniors being mostly interested in and capable of writing code in a specific language. As they level up, their range of abilities grows, peaking eventually at the lead. With that, the lead steps away from coding and debugging more to the area of product management.
In general, a developer is a creative unit with a wide range of technical capabilities. Their responsibility is the performance of the product in all aspects, not just the back end.
The engineer
This sounds quite serious. If you tell your grandmother you’re a middle back-end developer, she’d think you are somewhere between a punk rocker and weird sports player. But if you say you are an engineer, your stokes will go up. Why is that? The profession of an engineer is rooted in the ancient world where the guys who either academically or naturally understood physics and mechanics would be capable of making things beyond the general public scope.
Millenia after, our world still runs on engineering. What’s significant here is an aircraft engineer and a bridge construction engineer are two different types of engineers. What is common between them is the fundamental and sector-specific education and training. According to the general definition, a software engineer is a person who applies the principles of software engineering to the design, development, maintenance, testing, and evaluation of the software that make computers or other devices containing software work.
In simple terms, the engineer has a solid educational grounding and the ability to apply engineering concepts to create digital solutions.
This sort of grounding puts more responsibilities on a software engineer as we expect an engineered piece to be reliable and radiate confidence. No art and creativity we can tolerate from a developer is expected from an engineer. In some countries, you have to be certified to be called an engineer because this profession is often connected to life-threatening situations if something goes wrong. While this is not yet the case with computer and software engineering, we can clearly see how they will reach that point once we delegate even more decision-making functionality to computers and software.
Let’s take a look at the scope of knowledge and skills a software engineer must have:
- Computer science. Computers solve human problems. There has to be someone who solves computer problems and teaches them. A computer scientist.
- Mathematics. There is no exaggeration of the spectrum of maths in its application in technology.
- Software engineering itself. Once again, the scientific approach can be applied to the process of building any sort of high-end digital product regardless of the languages, technologies, tools, and goals involved.
The software engineer has to be able to apply all of their knowledge of technical stuff to aid the business side of a product. There are no junior engineers if you take this stance on the profession of a software engineer.
🐝 The beehive
If you are willing to go beyond just these three and feel a little playful, here are some exotic titles of the programmer (I’ll stick to that) job with all sorts of nuances illuminated to create an effect.
The coder
Coders put requirements and feature descriptions in their user stories into the working pieces of software. Usually, the scope of a coder’s involvement does not reach any significant creative freedom. Once that happens, congratulations, you are a developer.
The scripter
Scripts are tiny programs capable of automating simple repeated operations in order to release a human from this routine. Today, modern scripting allows anyone write their scripts and automate a portion of their work, which makes them all… scripters.
The UI developer
Often referred to as part of the front-end development discipline, UI development lies closer to the UX than any other coding entity. If a UI/UX designer can code and create quality layouts through various programming tools, they can fairly call themselves a UI developer. And vice versa.
The creative coder
So if a scripter uses code scripts to achieve case-specific goals, their next phase can be creative coding. Keeping on with a designer example, there is a ton of creativity in them but often times, zero code. Being a creative coder means using a set of one-time code snippets with no scientific theory background or framework-building capabilities to make a piece of working software as it was designed. The creative coder can either remain a stopgap generator or evolve into a full-blown developer.
The computer scientist
Any science has a strong theoretic base beneath. Computer science is no different. This is similar to the way a theoretical physicist is interested in theoretical models and abstractions of physical objects and natural phenomena, computer scientists study theoretical foundations of information and computation and their application. Computer scientists in a way set the path for further development of the industry as well as try to invent the solutions to current problems.
🙄 The importance of distinction
The rejection of the unknown is the natural mechanism of defense. Often to save time and effort, we tend to stick to the things we are familiar with. In this case, being aware of different categories of objects, groups, and phenomena is a matter of experience.
For a business owner or a startup entrepreneur, it’s extremely helpful to have the ability to recognize patterns and make experience-based decisions. This concerns everything, from idea evaluation to product marketing strategies. But before that lies the team selection. In order to avoid being intimidated by the titles, you should at least know a thing or two about the specifics of each role.
Originally published at Shakuro