„Alone we can do so little; together we can do so much“
Collaboration is the subject of this post. You will learn about „customer collaboration over contract negotiation“ with considerations for daily use in software development.
Collaboration is the keyword. It is hard to imagine software development undertakings that go without contracts. With “customer collaboration over contract negotiation”, all negotiations should happen collaboratively. This means that negotiations are transparent with no hidden agendas. Pricing should be fair for all parties. If a software development undertaking starts with hidden intentions, it will become difficult to work together in a truly agile manner. One of the values of agile software development, trust, is missing from start in this case. This doesn’t mean that the parties involved wont be able to work with each other, they will just have to do so in a more formal manner. Of course, some agile elements may still be included.
Ideally trust is built over time and customer collaboration is the main focus. The contract then just formally states what comes out of collaborative sessions. So contract negotiation is fine, it just shouldn’t harm collaboration.
As mentioned, trust is essential for real collaboration. Everything else may result in a non-agile way of working. Contracts are fine to set the boundaries, without fixing scope. A high level timeline with target delivery timeframes for releases should also be included. Why timeframes? Simply because it is very hard to predict the completion of software development, even the duration of a single task can be quite tricky to determine. Does it then make sense to set a delivery date or go live date weeks or months before it takes place? Reality would kick in anyway sooner or later. So why bother planing in so much detail. Don’t get this point wrong, you shouldn’t start with something like „we will see when we finish“. Contracts should contain roughly estimated work and with this you’re able to give an indication in what week or month the work will be done.
When talking about collaboration you shouldn’t limit this to a development team, a department or a group of people only. Collaboration should be applied across all involved people. This means that everyone who takes part in that software development undertaking must have a good understanding of what working in an agile environment means. At a minimum everyone should be familiar with the Agile Manifesto including all 12 principles and also with the agile values.
Another word about collaboration and what it means in daily work. It is the opposite of „I do my thing and pass my work on to the next person in the chain“. It means working together, being open to feedback, asking others for opinions and looking for alternatives. Collaboration involves a lot of communication and the Agile Manifesto and it’s 12 principles support creating such an environment. From my point of view and also my experience in several roles in agile software development undertakings, this way of working is more fun for everyone.
In this post, I wanted to bring across :
- the importance of collaboration for agile software development
- the role of negotiation as part of the software development process
If you like what you’ve read, feel free to share, subscribe & comment.
Sources & Links: