Non-coders might be forgiven for not truly understanding what a software developer does exactly — from the outside looking in it probably looks like black magic trickery combined with a scene from The Matrix.
However, after 15 years running software teams, I’m still surprised by how many developers themselves don’t truly understand their role.
“How could this be?” you might ask. After all, a coder’s job is to write code (it’s in the title!).
Well, let me offer an alternative perspective: a software developer’s role is not actually to write code at all. Code on its own, without a way to interact with it, without context or a clear imperative, is useless. Code for the sake of code can be fun or even educational but its place in the world is what makes it useful.
So, if a coder’s role is not to write code then what is it?
Lets first consider another profession: the humble delivery driver, Bill. Is Bill’s role to drive? Well, the word “driver” is in the title but most of us know that a delivery driver’s role is to deliver a package to its destination. The driving is not the goal, it is simply the means to get there.
Bill may care deeply about what kind of car he drives, what music is playing and whether or not he supersizes his Coke at the McDonalds drive through. But you don’t. You just want your package: on time and in one-piece.
A software developer’s role is to solve problems for users.
For software to be useful it must have a purpose. Most often that purpose is to directly solve a user’s problem (such as your accounting software). Other times the user problem that is being solved might not be so obvious — such as an encryption library or a control system for a satellite. But even in these cases there is a user need.
If you look hard enough every piece of software will have a user need somewhere down the chain. The encryption library is intended to make key negotiation fast and secure so that users can maintain privacy online. The satellite control system makes sure your GPS continues to work so that Bill can find the nearest Maccas (and with the added bonus that the satellite doesn’t crash into the Earth).
I’ve come to start calling coders “Product Developers”. Most of the developers I work with are solving needs for the users of our product at Expert360. By framing the role in this way the expectation starts to change. The developer’s role is not to write code, it’s to develop the product and solve problems for our users.
Developers who realise the true nature of their role will see things differently. Where once they cared only about making fast code they now care about the feeling a user gets when a page loads in under 200ms; about the satisfying feeling a user gets when she’s notified of a payment; or of the excitement she feels when a simple notification alerts her to a new opportunity.
Like the chef who’s job isn’t to chop vegetables, the driver who’s job isn’t to drive, the coder’s job is not simply to code — it’s so much more important than that…