On a flight into Houston several years ago, my plane was diverted to Austin due to weather. Before we could land at Austin, we were re-diverted back to Houston. I've no idea why the gears aligned this way, but this meant we were out-of-sequence with the baggage handling system and our connecting flight. Our luggage didn't arrive at the claim carousel for an hour and a half after landing. Leading up to the luggage arrival was an unfortunate display from an increasingly agitated young couple. They were loudly communicating their frustration to an airport employee with unknown authority. Their frustration was understandable in light of the fact that flights were undoubtedly going to be missed.
At one point, the woman exclaimed, "This isn't how this is supposed to work!"
I matched this with a similar comment from one of the developers on one of my project teams. Stressed with the workload he had committed to, he declared there are too many meetings and therefore "the agile process is not working!" When explored, it turned out some version of this sentiment was common among the software development staff.
At the airport and on my development teams the process was working. It just wasn't working as desired or expected based on past experience. In both cases, present events were immune to expectations. The fact that our luggage almost always shows up on time and that agile frequently goes smoothly belies how susceptible the two processes actually are to unknown variables that can disrupt the usual flow of events.
There is a difference with agile, however. When practiced well, it adapts to the vagaries of human experience. We expect the unexpected, even if we don't know what form that may take.
There is an assumption being made by the developers in that "working agile" makes work easy and stress free all the time. That was never the promise. Agile stresses teams differently than waterfall. I've experienced high stress developing code under both agile and waterfall. With agile, however, teams have a better shot at deciding for themselves the stress they want to take on. But there will be stress. Unstressed coders deliver code of questionable value and quality, if they deliver at all.
The more accurate assessment to make here is that the developers aren't practicing Agile as well as they could. That's fundamentally different from "agile isn't working." In particular, the developers didn't understand what they had committed to. Every single sprint planning session I've run (and the way I coach them to be run) begins with challenging the team members to think about things that may impact the work they will commit to in the next sprint - vacations, family obligations, doctor visits, other projects, stubbed toes, alien abductions - anything that may limit the effort they can commit to. What occurred with the developers was a failure to take responsibility for their actions and decisions, a measure of dishonesty (albeit unintended) to themselves and their team mates by saying "yes" to work and later wishing "no."
Underlying this insight into developer workload may be something much more unsettling. If anyone on your team has committed to more than they can complete and has done so for a number of sprints, your project may be at risk. The safe assumption would be that the project has a hidden fragility that will surprise you when it breaks. Project time lines, deliverables, and quality will suffer not solely because there are too many meetings, but because the team does not have a good understanding of what they need to complete and what they can commit to. What is the potential impact on other projects (internal and client) knowing that one or more of the team members is over committing? What delays, quality issues, or major pivots are looming out there ready to cause significant disruptions?
The resolution to this issue requires time and the following actions:
Coaching for creating and refining story cards
Coaching for understanding how to estimate work efforts
Develop skills in the development staff for recognizing card dependencies
Develop skills for time management
Find ways to modify the work environment such that it is easier for developers to focus on work for extended periods of time
Evaluate the meeting load to determine if there are extraneous meetings
Based on metrics, specifically limit each developer's work commitment for several sprints such that it falls within their ability to complete
Photo by Jason Hafso on Unsplash
Can you expand on this theme either here or in a subsequent post: "Unstressed coders deliver code of questionable value and quality, if they deliver at all"?