This week I heard “A developers job is to write great software” and I disagree. A developers job is to solve problems for their clients. We have a tendency to get so focused on specific skillsets like “I write code” that we miss the entire point of why we’re doing it.
A typical corporate development team costs about a million and a half dollars a year. That’s a significant investment being made by the company and it’s certainly not being spent so that developers can hack some fun things together in code. The expectation is that we’re solving real problems for the business.
By the time the problem has come to a developer, someone has decided that the problem can be best solved in software. The problems start when that assumption is wrong.
A friend of mine was once brought in to assist with the coding of a multi-million dollar project. The company had bought an expensive fax solution from a vendor and was planning to customize it in-house.
Instead of diving right into the code, my friend wanted to understand what the real problem was and began to ask questions. After some digging, he discovered that one specific person in the building was unwilling or unable to walk up two flights of stairs to get the faxes and that this was the actual problem that needed solving.
So he physically picked up the fax machine and moved it down to their desk, completely eliminating the need for this multi-million dollar project.
Sometimes the best way to solve the problem is not to write new code but rather, to find a solution that requires no code. When we think our job is one of writing software then we often miss simpler solutions.
I once had someone loudly argue with me that he’d been hired to write Java code and that he shouldn’t be expected to update XML files. This sounds ridiculous and yet he was serious. He was entirely focused on writing code as being his sole reason for being there. This is my job - don’t ask me to do anything else.
The agile manifesto even has an opinion on this: “Simplicity–the art of maximizing the amount of work not done–is essential.”
Developers take pride in the software they write and that’s a good thing. However, sometimes they fall into the trap of tunnel-vision and begin to assume that every problem is a software problem just because that’s what they know how to do.
Sometimes we need to just pick up the fax machine.