Seeing system dynamics in organizational change: 5) job safety but not role safety
This is the fifth article in the series of seeing system dynamics in organizational change. In the previous article, we concluded that the best time to de-scale was when the organization is still small and has few roles. In this article, we take up the challenge of reducing special roles, notably managers and specialists, when they are already in place.
No role safety
We reduce the special roles to have more responsible teams, which increase the organizational adaptiveness. However, it creates the discomfort among those special roles. All kinds of concerns are raised to resist the change. As those concerns are often valid, the special roles remain and change stalls.
B1-loop: Reduce special roles to increase adaptiveness
To fill in the adaptiveness gap, we apply the de-scaling force, thus, reduce the number of special roles. This increases team self-organization, then improves the adaptiveness until the adaptiveness goal is achieved.
B2-loop: Increase special roles to reduce discomfort
Reducing the number of special roles causes discomfort, thus increases resistance, which keeps up those special roles.
We should ask what our system optimizing goal is. If it is for the adaptiveness but we address the discomfort at the expense of it, we lose the plot, as described in the article of "local optimization and system optimizing goal". The discomfort is the secondary concern, and it should be addressed in other ways.
In LeSS, there is a guide called "Job safety but not role safety". Managers and specialists should not have role safety, and we should not keep those special roles simply for them to feel safe.
More than ten years ago, while I was working in Nokia Networks, the organization experienced a major redesign. As a result, the PMO was dissolved. It was clear that the project manager role would be gone. I was one of the project managers, and ready to leave the organization. However, even though there was no role safety, there was job safety. The organization tried the best in helping the people adapt. Luckily - one of my life-changing moments in retrospect - I changed my role and stayed in the new organization.
Inevitably, some people would choose to exit, while we should focus on the people who choose to stay and take up the change, and help them get through difficulty.
Survival anxiety and learning anxiety
Edgar Schein in his classical book "The corporate culture survival guide" introduced two concepts - survival anxiety and learning anxiety. They are two different types of discomforts.
Survival anxiety is the discomfort that "something bad may happen to you if you don't respond in some way". It creates motivation to change and acts as driving force for the change.
Learning anxiety is the discomfort that "the new behavior that may be required of you may be difficult to learn, and the new beliefs or values that are implied may be difficult to accept". It creates resistance to change and acts as restraining force against the change.
R1-loop: Survival anxiety creates motivation to change
Reducing the number of special roles increases survival anxiety, which provides the motivation to learn, thus, increases the learning. Then, the number of special roles could be reduced further.
B3-loop: Learning anxiety creates resistance to change
However, reducing the number of special roles increases learning anxiety too, which raises the fear, thus, increases the resistance. Then, the resistance keeps up those special roles.
B4-loop: Survival anxiety creates resistance to change
Even though survival anxiety increases the motivation for change, it raises the fear, thus, increases the resistance too. Then, the resistance keeps up those special roles.
The above dynamic is also reflected by two principles about survival anxiety and learning anxiety.
- Principle one: survival anxiety must be greater than learning anxiety
- Principle two: learning anxiety must be reduced rather than increasing survival anxiety
The real leverage is to reduce the learning anxiety by providing psychological safety, of which the two most important aspects are:
- job safety, so that the people have time and space to learn and adapt;
- learning support, so that the people learn and adapt effectively.
Respect for people
In summary, while we have to remove some special roles, we shall do it in a respectful way.
1. Job safety but not role safety. It is more respectful to clearly and firmly communicate the change than to blur the message.
2. Acknowledge that some people will not take up the change but exit. Be respectful for their decision.
3. Provide strong support for the people who decide to stay and take up the change, and help them learn and adapt in all ways.
Seeing system dynamics in organizational change: 4) the best time to de-scale
This is the fourth article in the series of seeing system dynamics in organizational change. In this and next articles, we are going to look at one specific change in the large-scale product development organization: de-scale to scale. This means to simplify the organization to achieve agility, and this is the essence of LeSS too. One aspect is having fewer roles, as more roles lead to less responsible teams.
However, increasing number of roles is a downward spiral when an organization scales up. Among them, the major roles are managers and specialists. We will look at them separately.
More and more managers
The bee watchers in Dr. Seuss's book "Did I Ever Tell You How Lucky You Are?" are the best manifestation for more and more managers. They could indeed keep increasing forever.
This self-reinforcing nature is shown in the below dynamic.
B1-loop: Increase management control for better performance
When seeing a performance gap, we increase the number of managers to have more control, then, the actual performance goes up and the gap is reduced.
R1-loop: Management control decreases motivation thus performance
However, when we increase the management control, the intrinsic motivation from the people doing the real work decreases over time, thus, the actual performance goes down. In response to that, we have more managers and more control.
B1/R1-loops create the "fixes that backfire" system archetype. We are in the downward spiral of having more managers.
When organization scales up, it is even more natural to have more managers. Let's see the below dynamic.
B2-loop: Increase managers to reduce management load
When organization scales up, every manager has more people. The resulting higher management load decreases the actual performance. In response to that, we increase the number of managers, then, we have fewer people for one manager. This reduces the management load, then the actual performance goes up and the gap is reduced.
R2-loop: Managers create silos
When we have more managers, the silo effect gets stronger over time, which increases the management load. Then, the actual performance goes down. In response to that, we have more managers. This becomes self-reinforcing.
R3-loop: Managers hire people
When we have more managers, they tend to hire more people, so that the organization grows over time. Now we have more people for one manager, thus higher management load. Actual performance goes down, which calls for more managers. This becomes self-reinforcing too.
Both B2/R2-loops and B2/R3-loops create the "fixes that backfire" system archetype. We are in the downward spiral of having more people and more managers.
More and more specialists
When organization scales up, we have more specialists too. Let's see the below dynamic.
B3-loop: Split into many specialities to reduce required capability
When seeing a capability gap, we increase the number of specialities, leading to more specialists. This reduces the required capability, then the capability gap too.
B4-loop: Increase learning to improve actual capability
When seeing a capability gap, we increase the learning, thus our actual capability improves over time, leading to the reduced capability gap.
B3/B4-loops create the "eroding goals" system archetype. As there is more delay in B4-loop, B3-loop becomes dominant. We get more specialties and more specialists. See more from Over-specialization and waste of potential.
R4-loop: Specialists create people gap
When the specialists gotta work in their specialities, the varying requirements create people gap in different specialities over time. The people gap triggers the hiring or moving of the people into the organization, thus, growing the organization further. The bigger organization, the more specialities and the more specialists. This becomes self-reinforcing. See more from Why product development group ever grows.
We are in the downward spiral of having more people and more specialists.
The alternative path
De-scaling is to have fewer roles - fewer managers and fewer specialists. How is it possible to not have more managers and more specialists when we scale up the organization? Is there an alternative path?
Instead of having more managers, we:
- design for self-organizing feature teams, so that teams take more responsibility in delivering the end-to-end customer value, and there is less load for managers;
- increase management capability in teaching and coaching.
Instead of having more specialists, we:
- design for generic product developers with multi-specialities, so that people adapt to varying requirements, and there is less people gap for the whole organization;
- increase the effectiveness of cross-learning.
The downward spiral is one path, while de-scaling to scale is the other path. When is the best time to take the path of de-scaling? A client once asked me to help scale up their organization, so as to keep its agility. At the time, they were still small - around 20 people for product development, but they planned to scale up to 50-100 people. They were at the crossroads, and it was the best time for the change.
Yes! The best time to de-scale is when we are still in small scale and have few roles.
If we are already in large scale and have many roles, we shall face the bigger challenge to deal with existing roles, notably managers and specialists. That's the topic for next article.
Seeing system dynamics in organizational change: 3) from survival need to shifting the burden
This is the third article in the series of seeing system dynamics in organizational change. Even though we have agreed on the change vision and is progressing during the norm, we lose the plot when crisis comes.
During the norm
There is always a gap between our change vision and the reality, which is expected.
For example, we envision feature team who would:
- clarify requirements directly with users and stakeholders
- self-organize to coordinate directly with other teams
- develop the feature across components
However, the reality is:
- the quality and efficiency of clarification done by feature team is low
- the quality and efficiency of coordination done by feature team is low
- the quality and efficiency of some component work done by feature team is low
The suggested long-term solutions are:
- build team's capability in clarification via coaching by PO and SM (B2-loop)
- build team's capability in coordination via coaching by SM (B4-loop)
- build team's capability in some component work via coaching by traveller (B6-loop)
Note: traveller is arranged to help feature team increase the knowledge on certain components.
During the norm, we make progress, but it is still not enough to fill in the gap. Then, we hit the crisis.
During the crisis
During the crisis, our survival need increases. We need quick fix, thus we:
- reintroduce an analyst role, in the name of team PO, feature owner, etc. Essentially the old business analyst role comes back. (B1-loop)
- reintroduce a coordinator role, in the name of feature manager, feature coordinator, etc. Essentially the old project manager role comes back. (B3-loop)
- redefine a traveler role, so that the traveller would simply do the component work. Essentially the dynamic resource allocation in traditional project management comes back. (B5-loop)
If only they were temporary solutions!
Unfortunately, over time, we get addicted to:
- external analyst (R1-loop)
- external coordinator (R2-loop)
- external traveller (R3-loop)
We see the same "shifting the burden" archetype in all of those.
Therefore, the change vision is lost:
- team never becomes cross-functional
- team never becomes self-organizing
- team never becomes cross-component
For "shifting the burden", the leverage lies in two aspects.
- During the norm, we shall increase the effectiveness of the long-term solution, i.e. build team's capability via teaching and coaching. As it is long-term solution, we often lose the urgency and focus. We may break the long-term goal into sub-goals, and set time table to achieve those sub-goals.
- During the crisis, we shall first challenge ourselves - is it really a live-or-die situation? Even if the answer is yes, we make it clear that only do the quick fix to buy time. In order to avoid being addicted, we may put "temporary" in the name of the role, and set specific time limit for the role to expire.
Watch out on how the survival need fails our change efforts!
Seeing system dynamics in organizational change: 2) local optimization and system optimizing goal
This is the second article in the series of seeing system dynamics in organizational change. We shall learn where the local optimization comes from, and how important it is to define a clear system optimizing goal and use that to guide the change.
"It is more cost-efficient to test many requirements at once." This is a typical local optimization. Why do we do this?
B1-loop: Test many requirements at once to save cost
Once there is cost pressure, we increase the number of requirements in one test run, so as to reduce testing cost. Then, cost pressure is relieved.
We do this because the fixed cost of one test run is high, e.g. it takes much effort to set up the test environment. So, we do not make local optimization on purpose, but just try to solve a problem.
Why is it a local optimization? Let's zoom out.
In the upper left side, it is the original B1-loop. Now, we pull more variables into the picture. When we increase the number of requirements in one test run, we increase the waiting time. On one hand, this directly increases cycle time. On the other hand, this delays the feedback, and causes more rework. The rework increases development cost (here we apply the traditional distinction between development and testing). The total cost is the sum of testing cost and development cost, thus, it may increase too. Meanwhile, the rework also increases cycle time.
In summary, if we look at the "global" effect from increasing the number of requirements in one test run, while it reduces testing cost, it increases development cost, and possibly total cost as well; and it increases cycle time.
There are actually two different kinds of local optimizations here.
- Reducing testing cost may increase total cost. This reflects that "optimizing the parts does not optimize the whole".
- Reducing cost may increase cycle time. This begs the question - what do we optimize for as a whole? I.e. what is our system optimizing goal?
System optimizing goal
If we reduce cost but increase cycle time, is it a local optimization? We could not really answer it, before we are clear about our system optimizing goal. If our goal is cost efficiency, it may be a global optimization; but if our goal is cycle time, it is clearly a local optimization.
System optimizing goal should be defined in our change vision, otherwise, we do not have solid foundation to guide the change. One of the common change efforts these days is the agile movement, what does it optimize for? It is for agility and adaptiveness, as well as maximizing customer value and reducing cycle time; but not for throughput, resource utilization, compliance, cost efficiency, etc. If the goal is not clearly set, our change effort is doomed, as local optimization would be "natural".
Even though we set cycle time as our system optimizing goal, some people may still have the cost concern. They say: "Yes, cycle time is important, but we also need to consider cost. It is simply too costly to test one requirement at a time, thus, we have to stick with the current practice of testing many requirements at once." Other people nod and the group dismiss. Craig Larman calls this "losing the plot".
In the organizational change, we need to make clear distinction between system optimizing goal and secondary concerns. We shall not solve secondary concerns at the expense of system optimizing goal. Secondary concerns should be addressed in other ways.
In this case, it means that we should break the B1-loop, while introducing an alternative B2-loop to solve the cost concern.
B2-loop: Reduce the fixed cost in one test run
Once there is cost pressure, we increases the effort on automating test setup, which reduces the fixed cost in one test run, thus testing cost. Then, cost pressure is relieved.
In summary, it is important to set clear system optimizing goal for our change, which helps discern all sorts of local optimizations. Then, we address secondary concerns in ways that do no harm to our system optimizing goal.
Seeing system dynamics in organizational change: 1) from change resistance to limits to growth
I have written a series of blogs focusing on seeing system dynamics in organizational design. Now, i'd like to start a new series, focusing on organizational change.
In this first one, let's understand three common problems in organizational changes:
- change stalls after it is initiated, due to change resistance;
- change stalls after it is "done", due to goal seeking behavior;
- change stalls after it grows for a while, due to limits to growth.
Why is change resisted? A basic balancing loop is at work.
B1-loop: Change is resisted to keep status quo
Once we increase change effort, the actual increases, moving away from the goal. This increases the gap, thus, another "change" effort starts, which brings the actual back to the goal (as shown in the small arrow line at the right hand), then gap is reduced.
The goal is the status quo, and the "change" effort is change resistance. What is called change resistance is simply a force to bring the system into the stable state. Notice that there are two change efforts in the diagram. Change effort moves the actual away from the goal, while "Change" effort moves the actual back to the goal. From system perspective, they are both change forces, and neither good nor bad.
Instead of exerting more change effort, which invokes more "change" effort (i.e. change resistance), one leverage is to elevate the goal. As will be discussed in next sections, the change resistance disappears when the goal is kept above the actual continuously. This explains why many change attempts failed due to change resistance. Without the common change goal, people in the organization would naturally try to keep the status quo.
Once the goal we seek is higher than our status quo, the dynamic changes.
B2-loop: Change is done to achieve the goal
The goal increases the gap. Change effort starts to increase the actual, which brings it towards the goal (as shown in the small arrow line at the right hand), then gap is reduced.
This balancing loop actually is no different than the B1-loop, and they both seek goal. However, as the goal in B1-loop is the status quo, thus, we see the resistance to change; while as the goal in B2-loop is the higher state than the status quo, thus, we see the support to change, till the point that the goal is achieved.
After the goal is achieved, the change is done. The goal state becomes the new status quo. How could we continue the change towards even better state? One leverage is again to elevate the goal.
Grow the change
After the original goal is achieved, we elevate the goal again to grow the change.
R1-loop: Elevate the goal to grow the change
Once the actual increases to reach the goal through B2-loop (as shown in the first small arrow line at the right hand); we elevate the goal. Now, the B2-loop is at work again, until the new goal is reached (as shown in the second small arrow line at the right hand), we elevate the goal again. This is the essential continuous improvement.
Ideally, we would grow the change indefinitely. However, the change still stalls after a while, as there are limits to growth.
Limits to growth
In order to change the actual, it requires not only the effort, but also the capability. Capability here refers to all kinds such as organizational, technical, collaboration, and etc.
B3-loop: Capability shortage to limit the change growth
Once the goal is elevated, the required capability increases. While the available capability is the constraint, it leads to the increasing capability shortage, which decreases the actual.
R1-loop and B3-loop create the typical "limits to growth" system archetype. In order to keep growing the change, one leverage is to build the capability earlier, as it will take time. Various constraints will be exposed along the way, but in the context of product development organizational change, some are well known. One of them is the technical weakness unfortunately seen in many development organizations. This is why for example in LeSS, it is recommended to start technical coaching for a few months before doing organizational redesign. This is to remove the constraint before we hit it.
In summary, in order to grow the change forever (i.e. continuous improvement), the main leverages are as following:
- create the common goal to be higher than status quo, in order to avoid the change resistance
- elevate the goal to grow the change, in order to avoid the change being stalled after it is "done"
- remove the constraints earlier, in order to avoid the change being stalled when hitting the limits
Zoom out and see the big picture of Scrum roles
Zooming out and seeing the big picture is a form of systems thinking, and we see how it helps to understand Scrum roles.
Distributed project management
"Distributed project management" is a very powerful exercise regarding Scrum roles. We start to write down all project management tasks in post-it notes, then, group them based on which Scrum role does it. The below is the typical outcome.
It shows that project management is distributed among Scrum roles, without the role of project manager. The key points for each role in relation to project management are as following.
- Product Owner: manage the release, in terms of items, sprints, and teams
- Team: manage the sprint, in terms of items/tasks, days and team members
- ScrumMaster: develop the team so that members would work together to deliver the product
- Others (undefined in Scrum): form the project team, which is done very differently after shifting from project mode to product mode with Scrum
Often, people would draw another couple of conclusions:
- ScrumMaster does not have much work to do
- Product Owner is the project manager
This is a common manifestation of fast thinking. We started from project management tasks in this exercise. If you reasoned well with slow thinking, you would notice that this only touched the project management work.
The more solid conclusion would respectively be:
- ScrumMaster does not have much project management work
- Product Owner does some project management work
And we still need to see the bigger picture, beyond the project management work.
One important aspect of systems thinking is seeing the big picture. The wonderful children book "Zoom" illustrates the approach of zooming out and seeing the ever bigger pictures, with one sample shown in the below.
Similarly, we zoom out and see the bigger picture of Scrum roles.
Now, we go beyond the project management work, and the bigger picture shows the below.
- Product Owner: the main job for PO is product discovery, i.e. find the valuable work, see 80% product discovery and 20% project management
- Team: the main job for team is product delivery, with self-management, i.e. manage its progress and process
- ScrumMaster: focus on coaching for self-organization and continuous improvement, rather than short-term delivery.
Click "Zoom out":)
My view of LeSS
As part of the LeSS trainer application, I was asked to give a graphical representation of LeSS. Here's the result showing my view of LeSS.
A series of choices
LeSS is a series of choices for the large-scale product development. We could make any choice if we were not clear about the optimizing goal. The choices made by LeSS are optimized for the agility and adaptiveness.
Among others, two choices stand out.
- One Product Owner and one Product Backlog, rather than many Product Owners and many Product Backlogs (team PO as anti-pattern; 1 vs. n product owners; 1 vs. n product backlogs)
- Feature team, rather than component team and feature group (component team vs. feature team; feature team vs. feature group)
To get the informed consent about adopting LeSS, i.e. making a series of choices, we should explore and see the system dynamics behind those choices. This is why systems thinking is critical in understanding LeSS.
Systems thinking sounds great, thus, it could be claimed to be relevant anywhere. LeSS applies it concretely to evaluate the choices you make. What is the system optimizing goal? What are your choices? What are causes behind it? What are consequences from it? Is it consistent to your system optimizing goal?
I am often asked to compare LeSS with SAFe and others. I have no answer, but would like to offer doing an exercise of system modeling on the different choices they make. We evaluate those by applying systems thinking.
When team gets big, we split it into two. How? most typically by dividing into components or sub-components. Why do we split this way? What are the consequences? What are the alternatives? Often, we did not think them through. That is the typical manifestation of fast thinking. However, those choices are so important that they deserve slow thinking. System modeling helps us do slow thinking, and critical thinking.
If you practice systems thinking on your choices, you are free to do experiments that may not be consistent with LeSS. Eventually, you "own" what you do, rather than "rent" ideas from others. Less copying, more learning.
Systems thinking is the cornerstone (i.e. the fifth discipline) for a learning organization. LeSS opens up the stairway to a learning organization in the field of product development. By experimenting and practicing the five disciplines, we move toward the learning organization, while LeSS is a starting point in the journey.
This is my view of LeSS.
P.S. I had to ask my daughter for help in doing this graphical representation. I learned a small detail afterwards. There are two paths to the house representing the learning organization. One is through the back door, which is the shorter route; the other is through the front door, which is the longer route. They happen to be a good representation of fast thinking and slow thinking.
Team Leader vs. Product Owner and ScrumMaster for component team
[Team Leader = TL; Product Owner = PO; ScrumMaster = SM]
The real Scrum requires significant organizational redesign. I have seen two common settings to pilot Scrum: 1) project group and 2) component team, as those are existing structures thus convenient to just use them. However, without organizational redesign, you could not adopt the real Scrum.
In this article, we focus on the setting of component team, and discuss two alternatives before we are ready for organizational redesign to adopt the real Scrum.
Here is the starting point.
Let me clarify a few terms I use here:
- Features are requirements on the product, and they are customer centric and associated with business value
- Component requirements are requirements on the component, and they are actually tasks from the perspective of the product.
- Component tasks are internal tasks in the component.
Traditionally, TL is responsible for the component team, and held accountable for the delivery of the component work.
The fake Scrum with team PO
This is what usually happens while adopting Scrum for component team.
Of course, we introduce the role of SM and PO, right? As there used to be one TL, I have seen a couple of common arrangements.
- TL becomes the PO, who is a team PO as well as a fake PO, as he is clearly not responsible maximizing value for the product; and find another person to be the SM
- TL becomes the SM; find another person to be the team PO.
Usually, regardless of TL becoming PO or SM, the accountability is still kept in the TL.
With Scrum roles in place, 1) team PO creates a fake product backlog for the component, which becomes the single source of the work for the component team; 2) SM coaches team to self-organize in completing the component work.
Those are good progress. However, it misses the most important point behind the real Scrum - maximize the value through inspection and adaptation on the product and features. Therefore, this is the fake Scrum with team PO.
The real "Scrum" with TL
An alternative I would recommend is to keep the TL role but transform the role to 1) do the fake Scrum on the component, 2) shift the focus to the product and features, and 3) advocate for the organizational redesign.
Let me elaborate:
- do the fake Scrum on the component
- consolidate all component work and prioritize (i.e. what the fake PO does)
- coach team to self-organize in delivering the component (i.e. what the SM does)
- shift the focus to the product and features
- connect component work to the product and features
- connect component team to the real PO
- coach team to self-organize with other component teams in delivering the feature
- coach the real PO to inspect & adapt on the product
- advocate for the organizational redesign
- spread the knowledge and experience on organizational redesign to feature team
- prepare with cross-learning and technical excellence
This approach better follows big ideas behind Scrum, even though Scrum roles are missing. Therefore, this is the real "Scrum" with TL.
Only after the organizational redesign to feature team, the team would work directly with the real PO, and it would take end-to-end responsibility for feature delivery. Eventually, TL would be replaced by SM - a coaching role not responsible for the delivery. That would be the real Scrum.
In fact, TL working this way is well defined in the book "Leading Self-Directed Work Teams". It describes the TL role as a boundary manager. Please do not introduce team PO for component team, and TL will do.
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.
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 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.
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.
Revisit feature team - cont'd
Two years ago, I wrote a blog article called "Revisit feature team". I felt not quite complete, thus, the thought went on, until I discovered what was missing recently.
Let me recap the scenario here. There is one so-called feature team, in which small groups work on different features. The team is stable, while those small groups are dynamic, as shown in the below picture.
Within those small groups, they take collective ownership for delivering the feature. However, as the big team, they do not take collective ownership for all features. Therefore, it is not a real team. To make it a real team, it must take the whole-team approach, meaning that the whole team takes shared responsibility to deliver all features, as shown in the below picture.
What does the whole-team approach mean in practice? How is it different from the above scenario?
Resilience and Overhead
Let's understand more about the whole-team approach from Scrum.
Think about a team with 5 features to deliver in one sprint. A good team does not work on all features in parallel, but they may still work on a couple of features in parallel, as shown in the above picture. Are A1/A2/A3 and A4/A5/A6 also small dynamic groups in the team? Yes and no.
Yes in the sense that A1/A2/A3 working on feature 1 collaborate more closely and learn more details on that feature. They are more strongly connected on those days, during which they are working on the same feature.
No in the sense that the whole team learns about all features in the backlog refinement and planning, and every member inspects the progress in the daily scrum and is ready to jump in.
On one hand, we want to create resilience, so as to take advantage of the whole team's skill and capacity to deliver high-priority features. On the other hand, we want to have reasonable amount of overhead, as everybody in the team would spend effort in learning a bit more than what he/she absolutely and immediately needs.
B1-loop: Increase the team size for more resilience
The bigger team, the more people who could swarm, the more resilient we are as a team.
B2-loop: Decrease the team size for less overhead
The bigger team, the more people who prepare themselves to swarm, the more overhead there is, till the point where we could not afford any more.
It is the team size that balances these two factors. In my experience, the sweet spot for team size is usually 5-7 people. A team of 3 people does not create sufficient resilience, while a team of 10 people brings too much overhead.
What are alternatives than what is in the original scenario - one big feature team, in which there are small dynamic groups on various features?
1. Split the big feature team into 2 small feature teams, as shown in the below picture.
This alternative was suggested in my previous blog article. This is straightforward.
2. Keep one big feature team, in which there are small dynamic groups on various feature sets, as shown in the below picture.
This differs from what is in the original scenario, in that the dynamic group is on feature set, rather than on one feature. This creates more balance between resilience and overhead. The collective ownership happens in those medium-sized feature groups, while the stability is kept in the big feature team.
It is indeed more complicated than the first alternative, then does it bring in any advantage? It avoids to force splitting the related work into two teams. It is more cohesive for one group to take all related work. This is essentially the same argument as whether it is good for timebox to force splitting the related work into two sprints.