Agile Accelerate

Leave Nothing on the Table


Leave a comment

Deliver Features to Customers 5 Times Faster

Does it seem to take a long time for your company to get a feature out the door? Have you done a “Five Whys” on the problem? Does one of the root causes seem to be the number of dependencies between teams, or “steps” that it takes to get something out the door? Chances are that it has something to do with the way your teams are structured.

The debate between feature teams and component teams is as old as Scrum is (which is getting to be Keith Richards territory). It usually boils down to:

  • Component teams are more efficient because a small number of SMEs who know the code inside out are the most effective to work on that part of the code. Anyone else interfering in the code will make a mess and create technical debt.

And the discussion about possible restructuring ends there.

It ends because there is also often a hidden reason why leaders don’t want to move to feature teams. If pressed, the following concerns may emerge (if not pressed, they will stay under the radar):

  • “As a leader, I am defined by the component I own, and the team(s) that work on it. I am also a SME in that component, which gives me job security. Moving to a feature team model would be threatening – Would I have a team? Would my people be scattered across multiple teams? How would i have time to attend all of those teams’ meetings? Would i still own a component?” And so on.

We will address these concerns later. But first, let’s look at a real case study…

I was a transformation coach at a large software company that was struggling with exactly this issue. Minor customer requests or enhancements seemed to take forever to deliver. So I worked with a colleague to do a deep dive into the problem. We selected a simple feature enhancement that took twelve weeks to deliver once the work began and inspected every Jira ticket that related to it. The following graphic shows the dependencies between all of the teams that were involved in the solution. It is blurred intentionally of course.

Each swim lane represented a different team – front end, back end, UX, globalization, various components, etc. What was fascinating about this investigation was that the aggregate amount of time expended by all of the teams was six times what a single team could do. Not because any of the teams were inefficient – on the contrary, they worked on their tickets efficiently. But, if it only took a day or two to do their part, it basically sat in the queue waiting for the next team to pick it up. And that was where the end-to-end inefficiency was.

I used the Flow Efficiency metric to get a sense for the level of our problem. Flow Efficiency is defined as Value-added Time/Total Elapsed Time expressed as a percentage. In this case, elapsed time was 6 sprints or 12 weeks (60 working days). The aggregate value-added effort was about 60 staff-days. But this metric is usually calculated on a per team basis, which is a straightforward calculation for a single team. However, when multiple teams are contributing to the Value-added Time, Flow Efficiency would be overstated. One can divide by the number of teams, which in this case would have given us a Flow Efficiency of just 8% or so. But I think that is misleading. So we used a modified metric, which was, effectively, “How long COULD it have taken with a single cross-functional team” versus “How long did it actually take?” With that metric, the Flow Efficiency was 16%.

This data was presented to senior leadership and was considered to be very eye opening. The obvious solution would be to create cross-functional feature teams. Of course, there were concerns:

  • New teams accessing code bases they would be unfamiliar with (of course, this points to deeper issues, like lack of automation and existing technical debt)
  • Loss of ownership of components and people (as mentioned above)
  • Some features might not lend themselves to the approach
  • A general concern about disrupting the organization

To make a long story short, we took an approach that addressed all of the concerns, which consisted of these elements:

  • Start small with a pilot program – we created 6 new teams, which represented only 10% of the org
  • Have a change management process to onboard middle managers and team managers
  • Designate SMEs on the component teams to reserve some bandwidth to help people who are new to the code base with software design decisions
  • Implement a fast-feedback continuous improvement program to quickly address concerns and resolve issues
  • Establish measurable metrics to represent the goals we wants to achieve, along with checks and balances

The metrics chosen were:

  • Flow Efficiency, defined as described above (this is like a lagging KR in OKR parlance to measure the key objective). Because we expected some initial challenges, we also measured how fast the teams ramped up to a steady state level of flow efficiency.
  • Subject Matter Expertise, to measure how quickly new developers got up to speed on unfamiliar components (leading KR)
  • Team satisfaction (balancing KR)

Of course, there were bumps along the way, but by all indicators, the program was very successful and Flow Efficiency was improved by a factor of 5. Across six different initiatives, average flow efficiency for the duration of the pilot was 80%. Even better, the teams ramped up to an average flow efficiency of 89% and this was done fairly quickly – an average of 1.3 sprints, or 2-3 weeks. 

Average team satisfaction increased by 30% over a period of six months, mostly because developers got out of their rut and learned new things. Subject matter expertise improved by 38% on an annualized basis.

Details of the methodology, practices, measurements, and learnings were presented in a white paper called “Winning the Concept to Cash Game with Feature Teams” at the 2021 XP Conference by Martina Ziegenfuss and myself.

Not unlike a stock investment disclaimer, actual results may vary and the variations may be substantial. But if you would like to deliver features to your customers five times faster, there is definitely value in considering an approach such as this.


Leave a comment

A Cure for Parkinson’s

Parkinson’s Law – “Work expands so as to fill the time available for its completion

– Cyril Northcote Parkinson

Your agile team can be following 99% of the principles and practices behind Scrum, XP, and/or Kanban and yet still working at half efficiency, or worse, due to Parkinson’s Law.

There is very little in the prescribed principles and practices that directly address the efficiency of executing tasks, save the concept of eliminating waste, but even that usually centers on eliminating workflow waste, not task or work item waste.

The good news is that while your agile team may have tremendous untapped potential, realizing that potential may be as simple as setting up the right environment for them.

It is a natural human behavior to allow work to fill the time allotted.  We have all done it. The reasons are many and various: Overanalysis, not balancing task elements across the work item, struggling with a blocker without asking for help, procrastination, lack of a desire to work faster, lack of motivation, distractions, not managing interrupts well, multitasking, and so on.

Note that every one of those behaviors can be identified and remedied.  But where to start?

Empowering Agile Teams

The first place to begin to solve the Parkinson’s Law problem is with empowerment.  An unempowered agile team is a team that doesn’t care.  And that is a prescription for a bad case of Parkinson’s.

Here is one recipe for curing Parkinson’s within an agile team.  The order is logical: Start where the answer to the leading question is “yes” and work downward:

  1. Have non-team members (by “non-team members” here, I mean anyone other than the team; it could be any level of management, the client, the business, the PMO, etc.) set an unrealistic goal for the project?  This situation will make people feel that they have no control and that if the project fails, it is someone else to blame.  A solution may be to improve transparency around the release burnup.  Is there a release burnup?  If not, start there.
  • Create a clear burnup from empirical velocity and an agreed-upon backlog and distribute it to all stakeholders.
  • Make sure that the release backlog is reasonably well sized.
  • Make sure that the velocity is based on empirical data, not wishful thinking.
  • Ensure that the burnup accurately reflects the backlog and velocity.
  • Make sure that everyone sees it – client, PMO, business stakeholders, various management levels, other potentially impacted teams.  Obfuscation occurs when different groups use different artifacts to present information, so ensure that they are all using the same artifact.
  1. Are non team-members selecting the stories to be run each sprint?  This can serve to prevent the team from feeling ownership.

Tip: Put the Team in Charge of Their Commitment

  • Stop the practice of external story selection and have the team select only enough stories to get to the point that they feel that they can commit to complete those stories and not one more.
  • Have a discussion around the meaning of “commitment.”  Make sure that this is one of those things that require unanimous team agreement, like a jury.  There are some decisions that can be made by a democratic majority, others that are okay to be made by an oligarchy.  But, commitment to a Sprint plan should be unanimous across the entire team.  Without that unequivocal commitment, unspoken naysay remains unchallenged, that could spoil morale right when you need it.
  • Then, during the planning session, ask for that one-by-one commitment to the sprint.
  1. Is a “chicken” (e.g. project manager who is not part of the team) selecting work for people, assigning tasks, assigning story owners, assigning roles?  How can they possibly know better than each team member how what tasks are needed for each story and how long each will take?
  • Eliminate that practice.  Only when the team selects their own work do they feel ownership of that work.  And it is only when a team feels ownership that they will begin to have the motivation to work at their full potential.
  1. Are story sizes small enough that each person can work on at least two stories per sprint?  Large stories that take most of the sprint to complete can create a Parkinson’s effect.  People get used to the idea that they work on only one story per sprint, and so, consciously or subconsciously, allow each story to expand to fill the sprint.  Sometimes you can have a breakthrough in velocity just by breaking that pattern.
  • Size stories such that at least two or three can be worked on by each person in one sprint.  This gets people used to the feeling of finishing and then pulling something off the backlog mid-sprint.
  • It might be necessary for the ScrumMaster to keep close watch on stories to ensure that they don’t languish uncompleted for days.  Once the pattern is broken, this is usually no longer a gating concern.

OK, great.  The team is fairly empowered at this point and work should be flowing smoothly.  Still, they may not feel full ownership and commitment.  One of the problems is that they team may still be looking to their PO and ScrumMaster as their “leaders,” and consciously or subconsciously feeling that the ultimate accountability for the story or the work item or the task is more with these “leaders” than themselves.

So spread out the “leadership”.

Tip: Spread the Spotlight

  1. Do the ceremonies revolve around the same people?  Is it always the SM or PO that facilitates the planning sessions, retrospectives, and sprint reviews?  Do people talk to the SM during the standup?  Start by broadening the leadership.
  • One method is to have story owners.  Ultimately, it is probably ideal for the entire team to feel fully accountable for all stories, but it can be difficult to get there in one step.  So, an interim step may be to have designated story owners, whose job it is to drive the story to completion.  They should ensure that there aren’t gaps in time between sequential tasks of the story and help resolve impediments pertaining to that story.  This can have the negative consequence of individual team members still not feeling accountable to that story being complete, but at least the feeling of ownership has been somewhat spread out.  Individuals who have been story owners can then spread that feeling of commitment to others on the next stories.
  • Ensure that BSAs, QA, and developers all get the chance to be story owners.
  • Once everyone begins to demonstrate accountability to all stories, the story ownership may be dropped.

And yet still it may seem like some stories and tasks are dragging on longer than they should.

Tip: Use the Buddy System

  1. Do people tend to hand off work to each other via documents?  Do they communicate via email instead of in person?  Lack of collaboration can lead to low transparency silos, which are a breeding ground for Parkinson’s.  It is very easy to hide when no one else interacts with you.
  • Encourage collaboration sessions around story acceptance test writing or reviews, perhaps even kickoff sessions for each story.
  • Make a habit of including everyone involved with a story in ad hoc discussions.
  • Encourage pairing; not necessarily for just development, but any functional area, especially where Parkinson’s might be lurking.  Pairing generally speeds up tasks, and many in the XP world even observe that pairing can even reduce overall net effort on a task.  But even if it doesn’t, the payoff in terms of reducing the Parkinson’s effect will probably offset any net effort increase due to the pairing.

A healthy pattern will be established which should stick.  It is hard to watch your velocity drop and hard to let Parkinson’s set back in to a team, once good collaborative patterns have been established.

Tip: Focus on Focus

  1. Do people tend to complain about interrupts, or that they have too many responsibilities outside of story work?  Perhaps it is time to retrospect on those problems.
  • Solutions may exist in process changes.  For example, rather than have everyone on the team be interrupted by a production support broadcast, have level 3 support designates that periodically rotate through the team.
  • Practice good interrupt management. Does everyone on the team understand the evils of multitasking, both from the standpoint of flow as well as context shifting?  Perhaps some education is needed.  Spend a sprint recording what you are doing once per hour (set an alarm) and aggregate the results.  See anything surprising?
  • As a Scrum Master, check to see if people are burning down tasks on multiple stories at the same time, rather than working a task to completion before moving on to the next one.
  • Question the interrupt requests.
  • Give feedback to habitual interrupters,
  • Recognize that you are not indispensible and don’t need to always be the hero.
  • Turn off distractions if you can, like email popups.
  • Resist the urge to check email.
  • Manage time in blocks.

There are many more time management ideas that you can find via a few specific web searches.

By now, we should be seeing a healthy buzz of collective ownership and collaborative practices, and Parkinson’s Law should be all but eliminated.

Parkinson’s is all about lack of motivation.  Therefore, it can be cured by taking steps to establish a team environment where motivation comes naturally.  Any steps that serve to improve empowerment, teamwork, collaboration, and the feeling of collective ownership will have the greatest effect.


Leave a comment

Broadening the Grounds for Self Improvement

We all have our least favorite phrases or questions that come up in day to day coaching.  One of mine goes along these lines: “No one has complained about this, so why change?

 ————–

How many of us complained about not having a PC on our desk before HP created one and Apple popularized it?

How many of us complained about not having a mouse and a point-and-click interface before Xerox PARC invented it and Apple popularized it?

————–

Making changes that address complaints or known problems certainly makes sense.  But doesn’t it also make sense to make changes that simply improve the ability to deliver, even if there isn’t an obvious problem to solve?

For just one example, I have worked with teams who used a big visible task board to track progress on their stories, but the board was so confusing that it didn’t add much value.  Simplifying it and making it more readable generally helped to improve the clarity of each story status and the progress of the sprint, and I would notice people starting to have discussions around the board.  Conversations improved, collaboration increased, and the team performance often went up as a result.  Yet, no one had ever complained about the board.

When a team retrospects, they often focus on the things that didn’t go well over the past sprint.  For instance, they might devote a few collective hours of time to solving a very specific problem that was raised; e.g. “I didn’t have the login credentials necessary to access this particular database that I needed to consult to find out some information for my story.”  But, instead they could have spent time figuring out how to collaborate better on identifying business requirements – an activity not driven by any complaints or problems, but one which could generate significant benefits in terms of velocity or delivering value.

————–

How many of us complained about not having a web interface on top of the Internet before Mosaic?

How many of us complained about not having a smart phone before IBM created one and Apple popularized it?

 ————–

Marcus Buckingham, leader of the strengths movement , notes that a person’s “greatest room for growth” is not one of their weaknesses but their strengths.  Might not this also apply to agile teams?

What if, instead of always focusing our retrospectives on fixing the things that are broken, we sometimes take a critical look at things we already do well, but could get so much incremental value out of doing even better?

Investing in cross training, for example, has to potential to be one of those practices that can generate huge improvements in team productivity, even for a team with already broad skill sets.  A team could become so efficient at being cross functional that they never would find tasks blocked due to the lack of an available person with the right skills or knowledge.  Tasks and stories will flow even better and overall team productivity can only go up.  The same might be said for building foundational principles like commitment and empowerment.

Continuous improvement isn’t about fixing problems.  It is about inspecting everything that you do, good and bad, making decisions about where change can make the most impact, and validating your decisions.