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.
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.
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.