Lots of words are used to refer to software engineers: coder, programmer, developer. I usually prefer programmer, but I’ve come to realize that’s probably a misleading framing. Software engineers aren’t employed to write code: they’re employed to deliver on business goals.
If we look at “coder” first, the implication is someone who writes code. I’ve seen profile bios on BlueSky where people describe themselves as “I write code for a living”1. But that's a bit misleading. Software engineers turn designs and business logic into functioning tools and products. Code is one way to do that. But the end goal is never to have a large codebase: it’s to have a codebase that accomplishes the business goals2.
There’s the hidden implication that you are paid in direct correlation with the amount of code you produce. But that’s almost never the case. You are paid in direct correlation with the features and bug fixes you contribute to. Your ability to deliver features or bug fixes might indeed be through code: but it might also be through infrastructure, through reducing tech debt, through simplifying codebases, or through empowering others to solve those problems.
What about “developer”? Someone who develops things. Develops implies something ongoing, something improving over time. Usually “the situation is developing” implies that additional things are happening. But the other side of development is that things become refined, and improved. Sometimes through reducing features, a product can become better at delivering value to users or the business. Through reducing the amount of code, the complexity of a codebase can become easier to work with.
Finally my personal preference: “programmer”. I used to take this to mean someone who creates programs, but I like the idea that it refers to someone who creates, configures, cleans up and manages a program. I do still have the connotation in my head of creation being the main aspect, so I’m not thrilled at that.
I’ll probably stop using all of these, in favour of "software engineer”. If we take a couple of the definitions for “engineer”:
a person who designs, builds, or maintains engines, machines, or structures.
a person who controls an engine, especially on an aircraft or ship.
So much of our focus in tech is on writing code. It’s probably what we’re best at. It’s our main unique skill that we can offer a company. But that’s not all we do - and we know that the best code is often no or little code.
As the entire industry adapts to generative AI and vibe-coding, I suspect the better place to frame our skills is that we are there to manage, control, maintain, design and build software. Notice “build” came last in that list - if vibe-coders can build things now, can they really do any of the others?
In the case of Schibsted Media, where I work, I summed these thoughts up as:
You aren’t here to make designs, write code, or manage backlogs
You’re here to deliver news to users who love our sites
In a way that makes sustainable revenue
This isn’t to call anyone out - writing code is fun, and so many of us do it in our free time. Of course we want to bond with internet strangers over that. But it’s not actually how we produce value - it’s one way, yes, but not the only way.
Unless you work in a scary company that judges output based on lines of code, in which case I really hope you’re writing Java. If it’s number of files, I really hope you’re using React/Vue/Svelte.