Sunday, April 14, 2013

The trouble with Tribbles…

One thing I have noticed working with developers over the years is that they are very helpful people. So helpful, in fact, that sometimes they help themselves right into a corner. And in a modern organization, they have infinite possibilities to get in just such a bind and find themselves with no one to help them out of it!! This is only one of many ways people have found to work with Agile to be able to change the scope of the story/project/program they are working on. In this case, it is the face of friendship that can cause issues – in other cases; it is not quite as benign.

When an organization starts using almost any Agile process, the thought is to use User Stories as the new requirement type. Before we get this, discussion should be had about the previous process that was used, and attention should be paid in particular about schedule padding, estimation padding and requirements overreach. What am I talking about? Well, let’s see – it is human nature of all of us to want to get as much as possible for as little as possible in almost all economic transactions. When we work in an environment where we develop software, we tend to try to get as much development for as little time/money and effort as we possibly can. On the technical side, this is manifested with code re-use and other less than ideal ways. On the business side, we tend to try to compress features, add developers, and shorten timelines. Indeed, one of the most common patterns is to “ask for more than what I need, because I know I’ll only get X%”. Couple that with the “these guys are padding the schedule anyways” and now we have a very destructive way of trying to structure how we work together! Usually, when these two concepts are tightly coupled, we get the “we need ALL the features as you promised” paradigm, with a one BIG release philosophy from the organization as a whole.

I guess that is an extremely long way to say – Check how TRUST and TRANSPARENCY is doing before you start an Agile transition!! Because no requirement type can mitigate your need to trust each other and work together! But, moving right along, I have seen a few creative and interesting ways that organizations within the agile umbrella, and within the story paradigm have found to stretch the scope of the sprint. I characterize these as “creative” because they come, not surprisingly from both sides of the isle. And they usually begin innocuously enough – with what I call “the favor”

The favor starts with a minor event. Usually the development team, who failed to task things out perfectly or had a critical technical task in the story will ask for a small “favor” from the PO to add the work to the sprint. Normally, if they have a decent ScrumMaster, this will happen when the team has a reasonable expectation of success. The favor is granted, and all is well in the world. Sometimes, the team will get a kudos for the favor, maybe some credit in points etc. It will be good all around. Then, in a couple of sprints, well the PO will need a small favor too. Nothing big or crazy, maybe some text edits came in a bit later than they should have, or functionality that was needed was modified by a Veep somewhere. Something the team could easily do, whether we can expect success or not. The team remembers their favor, and does it “just this one time”. Again, if the SM was worth his salt, he would have reminded the team AND the PO that this is a slippery slope at best and should be avoided – but with successful sprints, all is well and the SM is just a ninny cry baby. This continues, but suddenly, the technical and small BV favors come in bunches, and changes to the AC are reviewed and accepted as a normal course of sprint process. And then – the favor causes the sprint to fail. Usually at a critical time. And really, it’s no one person’s fault. Because we were communicating, and collaborating and…

The thing with this pattern is that it uses some concepts within the Agile toolset while ignoring others. It seems ok because we are communicating, but usually for this to be pulled off the communication works around the SM. With success, there really is not much to speak about in the retro – unless the team is paying attention. I have had at least a couple of team members hold me accountable for “allowing” this during an active sprint. Even though I did NOT know it was going on. That was great for me! Because I became aware of the pattern early, and the team felt empowered to now observe and police themselves in order not to fail. And they understood why it was a unnecessary risk to do things this way.

The less benign ways of modifying scope are usually carryovers of the company culture, and need to be addressed quickly. I have seen PO’s that “build in” flexibility to their stories by NOT putting solid acceptance criteria within the requirement, when they could not do this previously in use cases. Since the new teams don’t want to be on another meeting, and “requirements are not what I do, I only develop” when the story gets to them it is hard to spot what the PO wants. But after a few sprints with moving goal posts, they become angry and frustrated. The PO is equally frustrated, but unwilling to firm up the AC so he can” really get what he needs”. These are cultural issues that keep a team from maturity.

Lack of respect for the timebox is a very common approach; with additions being forced into sprints wither with the team’s approval “we just need to do it, man. There is no more time for this” or without “this is business critical. If I can’t get this in, the sprint is useless and a failure”.  This is just silly, because again BOTH sides get hurt and in the end no one gets the delivery they need. The bigger players in this tend to be management, in the very human quest of “faster, better, cheaper” that was mentioned above. With pressure brought to bear against them, the “command and control” booklet says you put pressure on those “below” them. Just because you are trying to be agile does not mean you, the manager, are not still in charge after all!! And these are your people, and you know better what the protect/infrastructure and department need… Scope creep is never as destructive or harmful as when it comes from within the organization, be it the team or the manager.

The simplest way to prevent scope creep in your projects is open and honest communication with ALL parties. Understanding why the request is being made, what we as a team are trying to achieve, what the environment we are working with is and finally what we can and cannot do all play a role in determining when a change can be made successfully and how to address the reality of constant, competing priorities. Usually, when one or tow parties in a team try to address these issues alone they end up getting everyone on the team in a bind. This not only causes pain, but potentially compromises the whole goal. It can also, if handled correctly give the team an new direction and opportunity for some challenges to be overcome. Trust and transparency, with open and honest involvement is extremely difficult to achieve in a large organization. But although it is hard, it CAN be done for a small cross-functional team. And with just those few people on board, a multitude of troubles can be avoided.

No comments:

Post a Comment