Seeing the system dynamic: single-functional team vs. cross-functional team
This sounds like an easy choice in Agile development, however, single-functional team such as testing team is still prevalent in many organizations. There are forces favoring in it. By understanding the factors and dynamics behind different choices, we make more informed decisions.
Efficiency & Quality vs. Cycle time
Why do we want to have single-functional team? The answer is often with efficiency and quality, as shown in B1-loop and B2-loop.
Why do we want to have cross-functional team? The answer is often with cycle time, which further relates to speed and flexibility, as shown in B3-loop.
B1-loop: Functional specialization for efficiency
When there is efficiency gap, we reduce team's functional scope and develop more functional skill, thus, increase the efficiency so that the efficiency gap is filled.
B2-loop: Functional specialization for quality
When there is quality gap, we reduce team's functional scope and develop more functional skill, thus, increase the quality so that the quality gap is filled.
B3-loop: Cross-functionality for speed
When there is time pressure, we expand team's functional scope and decrease the number of teams to coordinate, thus, shorten the cycle time, so that the time pressure is released.
Only seeing this, team's functional scope becomes a tradeoff between efficiency & quality and speed.
Learning
The efficiency and quality comes from the functional skill, how do we develop our functional skill? Traditional thinking is that we achieve functional proficiency by focusing on the narrow functional scope. There is some truth, but does not provide the complete picture. Learning comes from the feedback and the collaboration with other functions too.
R1-loop: Reduced learning leads to less efficiency
As we reduce team's functional scope for more efficiency in B1-loop, the functional silo gets stronger and the feedback speed gets slower, which reduces learning. It eventually decreases functional skill and makes it less efficient. Together with B1-loop, they form the "fixes that backfire" archetype.
R2-loop: Reduced learning leads to lower quality
The dynamic on quality is similar to the one on efficiency. We reduce team's functional scope for higher quality, but the reduced learning eventually leads to lower quality. B2-loop and R2-loop form the "fixes that backfire" archetype too.
This adds more advantage on cross-functional team, as it both provides broader context and speeds up the feedback to support learning. However, this means to abandon the traditional waterfall development practices, but to adopt Agile engineering practices especially specification by example to make the cross-functional team collaborate in a truly different way.
Functional sub-optimization
Functional team tries to optimize in its own scope, which often leads to sub-optimization.
B4/B5-loop: Increase WIP for cost saving
Driven by the cascaded goal on cost saving, functional team increases WIP in its function. This achieves more efficiency, which leads to lower cost in its function, then, lower overall cost. One such common action is that testing team would accumulate many requirements to test altogether, as this is the most cost efficient way from their perspective.
R3-loop: High WIP increases cost of delay
As WIP gets higher, the cycle time gets longer. This increases cost of delay, which adds up to overall cost. The cost of delay includes both for the development (e.g. increased cost on rework due to delayed feedback from testing) and for the product (e.g. decreased customer value due to delayed releasing to market). B5-loop and R3-loop form the "fixes that backfire" archetype.
As team's functional scope gets bigger, it is more likely to make global optimization.
Summary:
In the short term, this choice is about the tradeoff between efficiency & quality and speed. However, learning also benefits from the feedback speed and cross-functional collaboration associated with cross-functional team. Therefore, in the long term, cross-functional team could lead to high efficiency and quality as well. Moreover, we shall be cautious of the sub-optimization often made by single-functional team, while it is more likely for cross-functional team to make global optimization.