Software Developers Are Not Coders

I got shocked by Mike Gualtieri’s post about agile. I’m not expert enough to claim if he’s right or wrong. He surely gave me a lot to think, though.

Agile’s principles are too much developer-centric, Gualtieri says. By the way, that’s exactly why we developers are the first ones in a company to fall in love with Agile methodologies, way before other stakeholders: Agile puts us in the center of the world; we developers are the one who are able to make a difference, we are the heroes.

Yet, Agile could be somehow wrong because developing software is not about software. It’s about user experience.

If Gualtieri’s post got you angry or slighted, I’m afraid you missed the point. I don’t believe he wanted to exile the developer’s role in a less prestigious or peripheral position. He said that developers should worry about user experience, not code. It may be a more challenging endeavor, I believe.

I suspect that developers should not even take care of business problems.

I’m just designing a car, not leading Toyota’s strategies

A lot of analogies have been used to represent the process of building software. A common allegory is we are car designers or masons or civil engineers. And, we are told, if we want to be agile we need business, marketing and * experts close to us, day by day, in order to let us understand the problem and solve it for them.

I think a lot of misunderstandings can raise from this vision. It persuades us that once we know how to design a car or a building, we can lead the whole process.

I cannot repair your heart

I was often told to communicate with the Domain Expert and to understand her problem, in order to find a solution and implement it. I don’t think this is a good suggestion.

Domain Expert should explain to me the solution, not the problem. It’s a doubt I expressed to Greg Young’s audience, at the DDD Day in Bologna.

In order to find a solution to the problem, I should be a Domain Expert. Isn’t it a presumptuous claim?

I could be hired by a huge finance company and be involved in the development of one of it’s more critical software, essential for it’s strategies. Should I understand how stocks exchange works, should I be expert enough to be able to design a solution for achieving company’s strategies?

I don’t think so. The company knows how to win in finance matters. It knows what the problem is and what the best solution it has decided to implement. Domain Experts are experts on domain, and they can explain me the solution to be implemented.

I don’t need, I don’t want and I can’t understand the problem and invent a solution.

All I can do (and it’s an amazing job!) is to build the best tool (in terms of user experience) that implements the required solution. If I was able to find solutions to finance problems, I wouldn’t have hired as a programmer and I’d be the CEO or some financial expert, instead.

Coming back to developers and cars and buildings, I think a better analogy could be: we are engineers who have to design and build very complex surgical instruments.

Engineers with these skills know something that Surgeons don’t know: in effect, only they know about electronic, mechanic and everything needed to build such sophisticated tools.

Yet, those Engineers are not able to operate my heart. And, in effect, they don’t need to be able to. They don’t even need to know about heart diseases and cures.

Instead, they need to exactly know about the tools’ features the surgeon needs. The surgeon has a problem: she knows the solution and she describes what she needs in a very detailed way. Engineers build the tool, and implement the solution. The surgeon does not need to know about the art of implementing it, and the Engineer does not need to know about the art of operating on a live heart.

My matter is about understanding the solution and implementing it in order to give the best user experience. As a developer, I’m an expert on this.

That’s why my attention should be moved from code to user experience. Coding is a technical problem I must master; user experience is about a business solution I must understand.

Somehow, is how I always be told to care about the problem, the research of a solution and the tool. To me, Gualtieri is saying I was told wrong: I should care about the user experience, that is something between the tool and the research of a solution.

I’m not sure of what I wrote. I’m just thinking about it.

5 thoughts on “Software Developers Are Not Coders

  1. I agree that, as a developer, I don’t need to know every nuance about medical supply chains or financial markets. However, I do think there is value in having developers who are domain experts, where a domain expert is someone who understands enough of the problem domain to be able to model it.

    I’ve been in positions where I’ve had to rely on a non-technical domain expert to provide requirements while I learned the business. In my experience, their proposed solutions looked like those dreamed up by junior programmers in that they lacked system thinking.

    • Me too. I also think that there is value in having developers who are domain experts able to model the domain space.
      What I say is that “able to model the domain” is different than “able to invent a solution for its problems“.
      I may be wrong. I mean, I’m not sure of this. My post was a sort of reaction to something I think is too much overrated: I heard in a lot of conferences that “we developers are problem solvers, we must understand the domain and tell the customer how to solve her problem” and so on. I had the feeling that sometimes we forget we are serving people who may know the domain better than us, and that with the Agile movement we could begin to overestimate our importance in the whole software industry.

      What you say in the second part of your comment is very inspiring. It reminds me of DevOps movement, where Ops people and Dev people are meant to collaborate, in order to find better solutions. It makes me think that a DevBusiness movement would equally be valuable. It also reminds me of the principle in the agile manifesto that claims that business people and developers should daily collaborate.

      I think you are right, Chuck.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s