Agile PM – Building Trustful Relationships between Customer and Developer
January 31, 2012
Trust through agile PM
In software projects, there is often lack of trust between the customer and the developer, yet trustful relationships plan the central role in reaching project success. One reason trust is extremely difficult to build is that the customer cannot clearly describe what needs to be delivered by the developer. This situation happens when either the customer does not realize fully their needs regarding the project, or the developer receives the specifications that are incomplete or incorrect.
Agile project management (PM) helps resolve this issue. Agile PM was developed as an effective way to fight trust-inhibiting pitfalls that might arise between the customer and the developer. Agile-driven projects are divided into short, measurable and result-oriented iterations that produce an intermediate product which can be presented to the customer for review and approval. Such a product is operating so the customer can test it if needed.
After a couple of integrations the development team and the customer can hold a status meeting to agree on whether the project moves towards the right direction or there is a need to apply some fixes to code releases. If positive results are achieved, the customer can trust the developer, and vice versa. Thus, iterative agile-based project development appears to be the way to build the trustful relationships between the team and the customer.
Velocity & Flexibility
Agile-based teamwork allows the customer to understand and evaluate the dev team’s ability for producing expected outcomes with desired level of performance. The team is enabled to design a long-term, iteration-based plan that is driven by changing user requirements. The development process appears to be predictable and highly manageable because iterations allow responding to scope changes immediately.
The trust between the customer and the team lets the parties avoid waste of time and effort. It increases the actual velocity at which the developers can deliver code and the customer can propose requirement changes. Even if the velocity is too slow, the parties can quickly discuss possible workarounds and reduce the scope, inject more resources in the project, or terminate the project if needed.
Besides, the customer gains an opportunity to set priority to product features. If the customer thinks that adding new features brings no value, then the project can be stopped and the resources can be re-allocated to a more valuable job. Or the customer can switch the team to developing other features that have higher priority within the same project. And the greatest benefit here is that the customer will not be penalized for changing his mind. The team provides regular feedback, and the customer just figures out if this or that feature should be excluded from the product. This ensures flexibility of the project environment.
Meanwhile, the team does not suffer from altering customer requirements. They just focus on what the customer wants. An individual iteration has a clearly defined plan, and the developers follow this plan to produce an intermediate code release. The next iteration will be started only if the product is approved; if not, the team will lose nothing because no resources are allocated to the next iteration.
Thus, both the team and the customer benefit from agile project management. They can 1) increase the velocity of the dev process and 2) reach flexibility in managing the project. They collaborate with each other in a highly trustful environment in which every decision on change is balanced.
The Guiding Principles
A set of guiding principles for software developers known as the Agile Manifesto (agilemanifesto.org) provides an understanding of how to establish trust between the customer and the service provider in a software project environment. If you read this Manifesto, you may come to the following considerations about trust:
- Short iterations is much better (and hence agile) than long activities and processes
- Face-to-face collaboration results in more agile and trustful results
- Work techniques and methods that involve changing requirements are better them those that keep the requirements stable and permanent throughout the development process
- Higher customer involvement ensures a more agile development process
An agile-based project framework helps organizations move their project activities towards excellence with the major expectation that future activity corrections will be desirable. The changing environment will be safe and highly manageable because the customer trusts the dev team. Both realize how to manage requirements effectively. And there is no difference what agile practice is applied.
Whether or not the organization uses Scrum, test-driven development, paired programming, automated unit and functional testing, or whatever else, it follows the agile development principles. Each of the agile PM practices will bring value to the organization.
The only thing the organization needs to take care about is to encourage developers to continuously improve their skills and abilities. Developers should be well trained and provided with up-to-date and relevant information about agile software development. They must understand the logic of agile PM and figure out how to best apply one or another practice in a given project environment.
And when the team follows the Agile Manifesto and is highly engaged in agile PM practices, they know how to collaborate with the customer. Because they foster their creativity and reach outstanding team performance, the development process appears to be much effective, and the customer gains a better result, with fewer resources consumed.