Ever found yourself wondering about the differences between a software developer vs software engineer? What about programmer vs coder? What really distinguishes the various job titles and roles in technology and software development?
Never fear, as you are certainly not the only one!
When I first started web development in the mid-2000s, it took me a few days to determine what the difference was between a blog and a website and if I had somehow launched the wrong thing. I have written about these job titles and roles in passing before, and have received feedback on both sides of the aisle.
Some say I am needlessly pigeon-holing people and that the differences are immaterial, while others have thanked me for a concise set of signposts that can help them navigate the crazy world of tech. Remembering there was once a time I didn’t know the difference between a blog and a website makes me keen to help demystify this world for new entrants or those who work in ancillary roles trying to get a handle on things.
With that in mind, let’s not only recap the differences I see between the main developer job titles but also discuss other roles, disciplines, and specialties that go into building a modern tech stack and application.
Looking to hire the best remote developers? Arc can help you:
⚡️ Get instant candidate matches without searching
⚡️ Identify top applicants from our network of 350,000+
⚡️ Hire 4x faster with vetted candidates (qualified and interview-ready)
Try Arc to hire top developers now →
Programmer vs Software Developer vs Software Engineer
I view the programmer vs coder vs developer vs software engineer delineations as modes of working rather than simply career or skill progressions. What mode you are working in depends on the type of work you are undertaking.
Programmer / Coder
The foundational unit of operation, the programmer or coder role is simply writing instructions to get a computer to do what you want. This is my favorite mode, as you can get into the zone, think simply about the next problem in front of you, and quickly develop a solution to a problem.
Sadly, the time you will spend working at this self-contained level in a professional setting is minimal, as you usually have a wider context to think about. However, if you divide your work down into small enough blocks and have a good understanding of the boundaries of your immediate problem space, then you might be lucky enough to slip into this mode occasionally.
Many developers will work on Codewars or HackerRank problems in their spare time as a way to clear their heads from work and feel more productive. I think it’s this mode that they are trying to get back into, a time where they can focus just on a small unit of work that has a known endpoint and, importantly, no ongoing maintenance or bugs to squash over the coming weeks.
Some may say that there is a difference between coders vs programmers, but I can’t think of a meaningful differentiator between the two words. Some may argue that a coder is someone who can make a simple script and not think any more broadly than that, even if it is done with an Excel Macro or AppleScript.
However, if you take issue with me breaking up programmer, developer, and software engineer, then you’ll really hate this further division. I think the difference between programmer and coder that could be pointed at 10 to 15 years ago has moved to programmer vs developer as language has evolved.
Read More: How to Build a Software Engineer Portfolio (With Examples & Tips)
Software Developer
This mode is likely the most rewarding role, but it comes with some trade-offs. You are working at a higher level than just programming, as you are linking in some third-party services or libraries, worrying about how your work may impact (or be impacted by) other team members, and you almost certainly have a testing suite to handle.
However, due to the larger context in which you are working the result of your efforts is more likely to produce work that you can point to and say “I made that” and have a non-technical person appreciate the output of your work. Getting too deep into a flow state in this mode can lead you to go too far down a path that has wide-reaching impacts. But, if you have a good plan in place for dealing with your public interfaces and an architecture that can accommodate it, then it should still be fairly frictionless.
Developer is the term most of us use to describe our work and what people talk about when discussing the role. Given that non-technical people understand that something can be developed, be it an app, a plan, or a physical product, it makes sense that the word most commonly used to describe the people writing the code to build that app is developers. I guess builder is an alternative, but that seems to be pretty universally understood to be for someone building a structure of some kind.
Read More: What’s the Difference Between a Senior Developer vs Lead Developer?
Software Engineer
There isn’t really a universal definition of a software engineer. There is no central governing body that lays out the minimum standards you need to meet or the minimum qualifications required. In the main, this is probably beneficial as it reduces the barrier to entry for people to get into a career writing code and developing systems. However, it does lead to some strife when it comes to determining what a software engineer is and what they do.
For me, software engineer is the role you assume when thinking about a system as a whole, how it is built, ways of working, and its ability to deliver a solution to a problem or value to a customer. A software engineer lives at the interface between product and technology and determines what’s feasible, how it can be done, and to put systems in place to deliver.
In a team, a software engineer can move up and down the full organizational and technical stack fluidly, switching contexts effectively and making sure that all parties involved are getting what they require from the process. All this while developing in-house best practices and thinking about costs, people development, technology choices, when to accumulate technical debt, when to pay down tech debt, etc.
Being a software engineer is as much about qualitative skills as quantitative skills. You generally need to be working on something with enough scale to have the breadth of concerns laid out above. Once our field matures to a similar level as electrical, mechanical, or civil engineering, then we may have a clearer idea of what the role looks like. For now, fluidity is best.
Read More: How To Use Social Media Thought Leadership To Level Up Your Developer Career
Arc is the best place to find great remote jobs. Find great remote jobs at top startups and tech companies. Freelance and full-time remote opportunities are available.
Sign up here
Wider Coding Roles & Job Titles
Hacker
Many people think that a hacker is someone who hacks into systems and exploits them for their own gain, but the original meaning is far less sinister. Traditionally, a hacker is someone who hacks things together in a way that is unintended, unexpected, or novel. This is why Hackathons are named so. Get a group of smart people in a room, give them a very short window in which to make something, and watch them hack it together.
Adding constraints to things is a fantastic way to spark creativity. In the case of a Hackathon, that constraint is time. In the case of a startup, it’s usually money, time, or expertise. Often the people who flourish and have a great impact in the early days of a startup are those who are able to hack stuff together.
Have you ever wondered where the term GrowthHacker comes from for what is basically a marketing role at a startup? It’s describing someone who can think outside the box and be exceptionally creative in a constrained environment and grow a company’s user base or revenue.
DevOps Engineer
The merging of development and operations has brought many benefits to the technology world over the past few years. At its crux, it is the development of automated, codified, and repeatable IT infrastructure to get rid of the monthly or quarterly Friday-night-running-into-the-weekend-release stories of old.
While seen as a practice and a mindset for an organization to embrace, DevOps has a wide variety of specific skills that warrants job titles of its own (e.g., DevOps engineer, DevOps architect). From advocating for strong observability, de-siloing, and immutable infrastructure to developing automated pipelines, scalable resources, and codified deployments, DevOps roles bring quite a bit of value when an organization needs it.
Read More: 12 Common Mistakes Keeping You From Landing Your First Developer Job
Data scientist
While data science is the current hottest trend in tech, it is actually a fairly well-established role that takes its routes from a mix of research, business, and programming. A data scientist is usually brought in to find answers to questions that a human can’t intuit from a large set of data.
They start with a hypothesis, write code to process and analyze the data, build a model that represents the story that data tells, and prove or disprove the hypothesis. How to deliver that code into production falls outside their direct purview. However, they often have to step into more of a software developer role to deliver a working model, so a breadth of skills is required.
Many people use the terms data science, machine learning, and artificial intelligence interchangeably, but they are however distinct disciplines stemming from the same underlying skills. I break them down as follows:
1. Data Science: Analyzing data to understand what has happened (e.g., traffic incidents per 100,000 miles go up with bad weather)
2. Machine Learning: Analyzing data to predict what will happen (e.g., reducing the speed limit by 10mph when it’s raining will reduce traffic incidents by X%)
3. Artificial Intelligence: Analyzing data to decide or change what will happen (e.g., self-driving cars that change speed based on weather conditions and tire wear)
Computer scientist
Computer science is the branch of study we most often associate with software development, though its relation to the day-to-day role is often limited.
The topics covered in computer science are most relevant to coding interviews, where you may have to find a loop in a linked list or explain the time complexity of an algorithm you have created. This is why there are many complaints that the hiring processes at tech companies are often totally unrelated to the day-to-day work.
The underlying concepts of computer science are valuable to understand when tackling a complex problem, but tangible links can be hard to find. Someone actively working as a computer scientist is most likely in some kind of research position or at university.
If you don’t have a degree in computer science, it can often be intimidating to suddenly find yourself in a discussion about the different flavors of tree data structures or Big-O time complexity (especially if that’s in an interview!). A fantastic book that bridges the gap from day-to-day developer to CS rock star is The Imposters Handbook by Rob Conery.
Read More: 5 Ways to Stand Out & Get Noticed in Your Current Development Job
Related Non-Coding Roles & Titles
Architect
An architect is seen by some as the pinnacle of a career in software development. Here, you work at an incredibly high level (which is just a fancy way of saying vague!), aligning IT structure with the business’s strategic needs. The software architect role is found primarily in enterprise-scale organizations and covers far more than just software development.
If you really love developing systems and writing code, this is unlikely to be a role for you. However, if you enjoy working across a wider remit and liaising with many stakeholders, it might be worth steering your career path in this direction.
Tester / QA
The tester or QA roles are vital for any team developing software. They work directly with developers to ensure business logic is followed, identify behavioral inconsistencies, and make sure that the code written does what it needs to do every time it runs.
Contrary to how they are seen by many developers, software testers are not simply bug catchers. Code should be wrapped in an appropriate level of automated testing before it makes it to the tester’s domain.
It is the role of quality assurance (QA) to make sure everything continues to perform and give everyone confidence that the system will meet the demands placed on it. Identifying deficiencies and working with clients and users to make sure it is usable in real-world scenarios is also a focus. They do this using a variety of tools and methods that unearth the deepest and darkest nooks and crannies in the system, and apply lots of creative thinking and heuristics throughout all of this work.
Read More: How to REALLY Get a Job as a Self-Taught Developer
Designer / UI / UX
While these are different fields, there is a lot of crossover. Much like the programmer vs coder and software developer vs software engineer discussion, these could be seen as a spectrum across different modes of working.
- Designer: A designer sets the look and feel of the company and its visual representation. Much of the work follows on from the branding of the organization, and they will work on more than just the design of the software. A designer’s primary focus is to give a consistent representation of the company to the rest of the world that aligns with business objectives.
- UI: User interface designers maintain the look and feel of the product, making sure it feels modern, aligns with the company’s brand and design guidelines, and engages users.
- UX: User experience design is the other side of the coin to UI, and the two are extensively linked with a positive feedback loop between them. UX is about making sure a product is usable and creates a positive experience for users that aligns with business objectives. What is good for users (a pleasant and quick app engagement) doesn’t always align with what is good for the company (endless scrolling and seeing more paid ads). It’s the job of UX designers to walk this line effectively.
Conclusion
This has been a whistle-stop tour of some of the roles in technology. But, hopefully it helps guide your interactions with the wider team and also helps you decode some of the titles used in many job descriptions and advertisements you’ll come across.
Technology is such a new field that these terms are constantly changing, have many interpretations, and pop in and out of usage. So, remember to use this as a foundation meant to evolve over time.
We hope you now better understand the differences between a software engineer vs software developer and more fully grasp the other concepts we’ve discussed. As always, if you have any questions or feedback, feel free to leave us a message below. Thanks for reading!
Read More: Here’s When You Can TRULY Call Yourself a “Senior” Software Developer
You can also explore HireAI to skip the line and:
⚡️ Get instant candidate matches without searching
⚡️ Identify top applicants from our network of 350,000+ with no manual screening
⚡️ Hire 4x faster with vetted candidates (qualified and interview-ready)