In the series about agile roadblocks: obstructions for implementing agile processes, the time has come to “Cross-Functional or Dysfunctional”.
Cross-functionality leads to autonomous teams where complete features can be developed independently. One roadblock to achieve cross-functional teams is organizational silos1. Another potential problem is the common misconception that individuals need to be cross-functional.
Stray Team Members
Drowned by Waterfalls
Lost in Translation
Predicting the Unpredictable
Cross-Functional or Dysfunctional?
In Scrum you often talk about producing a shippable product at the end of each sprint. That is, something "potentially releasable" to the customer.
Even if different departments or teams work well together, a complete feature is often difficult to complete by one team alone. Maybe there's one team dedicated to the back-end and APIs, another team working with business logic, and a third with the user interface. In a situation like this, you deliver subsystems rather than products for the end user.
At the individual-level, while it is nice if everyone can pitch in on any task (which is often true, although more or less successfully), it's not mandated by for example Scrum.
On the other hand, teams sometime end up in very role-based stories. You "know" when you see the story who will work on it. The way out of this dilemma might be to review how stories are written.
Swarming is one way to describe this. This post explains swarming, and lists three things necessary to achieve it:
- There is a definition of done that enables the involvement of the entire team
- The scope of the story is non-trivial
- A set based decision making model is used
- Teams try to be cross-functional at the individual-level, instead of as a team.
- The organization gets stuck in limbo: not knowing how to allocate teams and use resources.
- It becomes difficult to write user oriented stories as you interact more with other subsystems than with the end user.
- Think about how to involve the entire team in a story.
- Remember that the teams should be cross-functional, not individuals.
If you work in organizational silos: try thinking of other subsystems as customers. A story could be written something like "As back-end, I want to receive data as transfer objects so that..." This might also help creating a more collaborative environment.
Organizational silos imply, in my opinion, some level of dysfunctional behavior. Departments or teams competing rather than collaborating, being over-protective of own goals and designs and avoiding communication with the outside. The situation is probably not this bad, but teams are still not cross-functional. ↩