All of you who are familiar with the Agile Software Development Manifesto, this post seems familiar. Actually the inspiration for it comes from the Agile Manifesto, which says:
Customer collaboration over contract negotiation
My inspiration for this post actually comes from that. Only that I don’t want to limit collaboration to contracts. Collaboration is something that I find usefully in any part of software development, even outside of software development. But let’s focus on work space in this post. Whenever I worked in an collaborative environment, I enjoyed it. It wasn’t that important what the subject of the project was or which methodology or project management framework was used. What brought the joy was collaboration with colleagues, clients or other stakeholders instead of negotiating.
There is a nice quote goes perfectly with my experience:
„Alone we can do so little; together we can do so much“
We will shed some light on collaboration over negotiation with considerations for daily use in software development.
As mentioned above, collaboration is the key to enjoy what you are doing. It is hard to imagine software development projects that go without negotiation. What is meant with collaboration over negotiation is, that all negotiation should happen collaboratively, that negotiations are transparent with no hidden agendas and a common goal. If an undertaking starts with hidden missions in negotiation, it will get hard to work together in a trustful manner. Especially in Agile software development, where one of the values of Agile, trust, would be missing from start in this case. This doesn’t mean the software development shouldn’t be done in that case. It it’s less fun from my experience since it ends up in a more formal environment instead of a trustful environment.
Agile elements can be included in all kinds of projects. Ideally, trust is built over time, and customer collaboration is the main focus. It is hard to imagine software development projects that go without contracts. The contract’s role is to formally state what comes out of collaborative sessions. In other words, contract negotiation is fine, it just shouldn’t harm collaboration.
As mentioned, trust is essential for real collaboration. Any other way of dealing with customers may result in a non-Agile way of working. Contracts are there to set the boundaries. A timeline with target delivery timeframes for releases should also be contained. Why timeframes as opposed to strict dates for deadlines? Simply because it is hard to predict the completion of software development so exactly. Does it then make sense to set a delivery date or go-live date weeks or months before it takes place? Of course not. Thus, taking the time and energy to plan this in so much detail and exactness becomes useless. Don’t get this point wrong: you shouldn’t start with something so vague as “we will see when we finish.“ Instead, contracts should contain roughly estimated timeframes for work completion, and with this you will be able to give an indication of what week or month the work will be finished.
When talking about collaboration, we shouldn’t limit this to one team, department, or a group of people. Collaboration should be applied across all involved parties. This means that everyone who takes part in an Agile software development project must have an 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 core values.
Another word about collaboration and what it means in daily work: it is the opposite of an assembly-line system, where team members say, “I do my thing and pass it on to the next person in the chain.“ It means working together, being open to feedback, and asking others for opinions and alternatives. Collaboration involves a lot of communication, and the Agile Manifesto and its 12 principles support the creation of such an environment. From my point of view and also my experience in several roles in Agile software development projects, this way of working is fun for everyone. Collaboration creates and enjoyable work environment and great results!