RU version of this blogpost is here
Only conflicts of interest lead projects to make progress. The project may be any: it-product, building houses, or society and state regime. In systems where its elements keep being static, life stops. Everyone is satisfied with everything he has at the moment.
First of all, I should declare what is “conflict of interests”. A conflict of interest is a dispute where the interests of two or more stand against each other to reach one common cause. Meanwhile, people do not get personal about those conflicts. They know that the dispute is needed to find the right ways and approaches.
People know that conflicts are needed to find the right ways and approaches.
Conflicts in IT
In IT, there are conflicts between a customer who ordered a product development and teams, including Project Manager (PM). The customer wants as many features as possible for fewer resources and money. On the other hand, the team wants to work less for more money. Somewhere in the middle, a balance between the scope of work and resources which will be paid takes place. The project manager stands with the team in this dispute. His main goal is to explain why the team does not develop more with the same payment. He uses velocity metrics, negotiates, makes processes transparent, and keeps documents clear.
Inside the development team, some conflicts exist as well as outside they do.
- QA specialists find more bugs to show that the product was not developed correctly; meanwhile, developers say the opposite.
- Tech/team lead makes a code repository to reject invalid code with failed tests, incorrect code style, or without code-review approvals; meanwhile, developers want to contribute more and more as fast as possible.
- The project manager watches the team members do their job as much as possible.
Conflict between QA and developers
QA should say that the product is not developed in the right way. As the QA will find more bugs, as much better they work. QA specialist should not like the product which he/she works with, because he/she always should see something to improve in it. QA should not say: “The product version is ready for deployment” because developers can do the same without them. QA should say: “The product is awful; there are many bugs and defects.”
As the QA will find more bugs, as much better they work.
QA finds bugs, creates bug reports, then says their severity. When it’s time to deploy a new version of the product, the project manager should decide where is a balance between bugs and new features to make a deployment. Also, the manager should set priority to bug reports: which ones should be fixed as soon as possible and which ones are low priority.
Conflict between code repository and developers
A developer wants to implement features as much as possible to take a new one or finish his work. On the other hand, the code repository wants the code to be more maintainable, reliable, and clear to understand. Tech/team lead as a repository representative should set appropriate reject rules to decline invalid code. The code with failed tests, without review approval, or violating code style rules, should be rejected. For implementing this approach, tech/team lead sets continuous integration and declares code review rules.
Tech/team lead as a repository representative should set appropriate reject rules to decline invalid code.
The code repository is not a friend to developers. It wants to get only high-quality and maintainable code. The project manager’s goal is to manage team/tech lead to declare and set reject rules.
Conflict between project manager and team members
Despite the project manager being a part of the development team, he often stands opposed to them. He should monitor the velocity of work of the whole team and every person inside it. If someone fails, the project manager should manage it. As I said before, people want to work less than possible and get paid more. The manager should take it into account. He declares rules of people interactions to make them deliver product or product version in time.
Project manager declares rules of people interactions to make them deliver product or product version in time.
To do this, the manager does the following:
- makes appointments for task estimation,
- sets up different dashboards and metrics in the issue tracking system to see progress and velocity,
- facilitates performance review in the team,
- makes processes transparent for customers and the team,
- keeps negotiating results in documents or emails,
- keeps documents clear for every person in the team and outside.
A good manager differs from a bad one because he can prove his arguments by metrics and facts.
Why it is crucial to mind conflicts
People as team members should consider conflicts as a way to reach a common goal. They should not fight against personalities. Meanwhile, every team member follows their interests during project implementation. Very often, those interests stand opposite each other.
The only balance between interests leads to product version delivery which is the primary goal of the project processes. As much strong pressure will be applied from every side of impact, as much better quality the product will get.