Developing large software systems automatically generate some technical dependency issues. If this is often managed by software architects in traditional projects, how do you communicate this technical dependencies when you are organized using an Agile approach? This is the topic discussed in the paper written by a Swedish research group.
As Agile approaches are increasingly adopted by large software development organizations with distributed teams, the Agile breakdown of complex tasks create large challenges due to the technical dependencies between teams. This is not new, but with Agile the technical dependencies do not become more or less, they just become more obvious and this is actually a possibility for practice to deal with them. The research paper tried to answer two main questions based on a case study:
* What are the challenges associated with technical dependencies between teams in a large-scale agile software development?
* What affects the likelihood of a challenge to occur?
The following technical dependencies are considered:
* Unpredictability: teams find difficult to know beforehand what changes, issues, surprises, failures and successes they will come across during the development of a feature.
* Conflicting priorities: a team might depend on a component that has lower priority in the backlog of another team.
* Difficulty to understand overlapping and short release cycles when teams are
constantly changing priorities in each sprint
To mitigate the challenges created by these technical dependencies, the authors wrote that “one has to start with mitigating one challenge and then continue to exploit the positive influence on other challenges. Our interview data suggests that the knowledge sharing challenge is a good starting point. Improved knowledge sharing between technical and management staff on different levels can significantly improve the ability to create a good plan, and then in turn help addressing the other challenges.”
In their conclusion, the authors state that “we identified five challenges associated with technical dependencies in large-scale agile software development: planning, task prioritization, knowledge sharing, code quality, and integration. More importantly, we found that these challenges interact and can lead to a domino effect or vicious circle: If an organization struggles with one challenge, it is likely that the other challenges become problematic as well. […] Our results indicate that activities should focus on mitigating the knowledge sharing and planning challenges to reestablish effective communication across teams, which will then enable companies to achieve the benefits of large-scale agility.”
Read the complete article on https://oerich.files.wordpress.com/2014/04/nelson-felix-dependency-communication.pdf