Who makes implementation decisions?
On another Scrum team in my department, there was a heated argument yesterday. The PO wanted the developer to make a change to business logic in a stored procedure, while the developer wanted to move the business logic out of the stored procedure. They both thought the other person had no business questioning them.
My understanding is that this should be a team decision, but is it just the development team, or is the PO included?
How are conflicting opinions on the team resolved?
Basically the question is: How is responsible for the code/implementation.
From the scrum point of view:
- The development team is responsible for turning Product Backlog Items into a potentially deliverable product increment.
- The product owner is responsible for optimizing the value of what the development team does.
From this i would say it is the decision from the development team how to implement a PBI and how to change the architecture of the code, because they know best what will be good and they are the people who will work with the code. If the PO thinks he knows it better it could become an impediment to the development team. The PO makes them slow through discussing and maybe even forcing the team to choose a specific technology/architecture which hey is not in the position to do.
How to solve this conflict:
The scrum master should try to speak with the product owner and to make clear what could be the result of his behavior. He should teach the PO to value and trust the teams decisions. He should make him sensible for the emotions he could create through not trusting the development team. Which at the end will result in a slower velocity.
I would question the role of the Product Owner (PO) within your organization. I read the line below and was wondering why the PO was in the weeds so far.
“The PO wanted the developer to make a change to business logic in a stored procedure, while the developer wanted to move the business logic out of the stored procedure.”
Could you explain a little more on the typical involvement of the PO and who the PO normally is (e.g. Developer, Manager)?
Moving business logic out of stored procedures can impact Non Functional Requirements such as performance and scalability. The PO is accountable to stakeholders for these product qualities.
Can the PO explain which requirements would be negatively impacted by the suggested refactoring?
On the whole, it sounds as though there should be greater collaboration between the PO and Development Team members during Product Backlog refinement, as they do not have a shared understanding of product value.
I don’t see a conflict, except for miscommunication.
The PO owns the business logic and can define it as deemed appropriate by the business.
The Development Team is responsible for implementation and for allocation it in the right place in the software building. This is a technical / architectural decision from with both the PO and the SM should refrain.
I assume the PO might be having a data base background. An example, he was a DBA before so he is proposing the stored procedure. Or it might be that the client is having serious trouble with performance, and he is suggesting the stored procedure as the best solution because every other solution has failed in the past.
I have also struggled with the question of, can a PO take technical decisions? I have seen POs doing coding to meet the commitments. I have seen them doing post mortem of the code that developers have written to highlight the code that is causing the defect.
I agree with Daniel, this is not within the scope of the PO role and the Scrum Master needs to rectify.
Unless, the PO is playing multiple roles. Either way it should be a team decision.
So what happens when there is disagreement between Development team members on the technical methodology/approach to implementing something? I know Scrum Master is supposed to make sure he/she coaches the team to have healthy debate/conflict and resolve issues. But if it gets to a point where one set of developers want to use method A and other developers want to use method B and they are not able to come to a consensus. Apart from the fact that, Scrum Master is supposed to guide them to make a decision, who is ultimately responsible to make a decision on the method? Does the Dev team basically have to experiment and see what works?
I agree with Daniel and Eric too.
In this case
Although PO is familiar with knowledge in the fields of architecture, technology, database, etc., or represents the opinions and situations of customers,
However, the principles defined by the scrumguide should still be followed, the opinions and decisions of the development team should be respected, and the development team is ultimately responsible for product quality
I agree with Ian, there does seem to be a bit of a miscommunication between PO and developers. There also may be a need to revisit any development practices the team may have created. Is it standard for business logic to be a part of a stored procedure? Are you willing to take on tech debt? Is this a question for your next retro?
With regards to @Rajesh Asok, "who is ultimately responsible to make a decision on the method? Does the Dev team basically have to experiment and see what works?". Good question. If a decision cannot be made you're probably correct and a spike may be required to investigate further and test.