Posts Tagged ‘agile adoption’

Real World Agile and the Need to Support Hybrid Processes

June 2nd, 2010 by Bob DeMaria

When we think of hybrids, we generally think about cars and going green.  There are also a handful of other hybrids that come to mind, hybrid bicycles, hybrid golf clubs, and even hybrid dogs (this was a new one to me…).  In general, hybrids are the union of two similar functions that have a different focus combined to do one thing really well, meant to give you flexibility and adaptability without sacrificing quality.  Let’s take a hybrid golf club for example; it’s a combination between a fairway wood and a long iron. It gives you the ability to hit a golf ball long distances with pinpoint accuracy, and often from a tough lie.  The best of both worlds.

So how does this apply to adopting Agile across the enterprise?

Real World Agile as a Hybrid Process

Well, let’s say that we’ve already gone through and had a successful Pilot Team, and now we’ve started to scale Agile across the enterprise.  As this process begins to take shape any large organization will likely have a mixture of teams; some that already adopted Agile, some that may be in the process of migrating to Agile, and others still running a more traditional (waterfall) approach to software development. You may also find organizations that will always have a need to use the traditional approach. Many of the Agile purists out there may not agree, but there will likely always be projects or products that people feel are not a good fit for this methodology. Having these two processes coexist seamlessly in your development organization would fit the definition of a “Hybrid.”

With that in mind, the ability to support a Hybrid Process, or a term we’ve used lately – Real World Agile, is extremely important to being successful at your Agile implementation. We see this impacting three areas of your Agile adoption:

  • Support ongoing waterfall development alongside Agile development
  • Support transitioning to Agile as adoption spreads across your enterprise
  • Support changes to your Agile methodology as you inspect and adapt

So let’s talk about each one of these in a bit more detail.

Supporting two different development methodologies requires the ability to enforce a structured, traditional, waterfall approach while also being able to adapt to a more dynamic Agile approach.  In order to deliver a single product, this requires parallel support for the methodologies of both teams. Facilitating the integration of stories from the Agile team and integrating that with the code from the traditional team are necessary for this delivery. You must also be able support the tools that support both of those methodologies; for example a newly implemented Agile project management tool and an in-house issue tracking system, coexisting in this heterogeneous environment.

To aid in the transition to Agile, we also need flexibility to migrate a traditional development team and their traditional process to an Agile development methodology cleanly, quickly and easily. Taking them off a very restrictive branch and label-based tool, which might put constraints on how they are implementing your process is going to impact and impede that adoption from an Agile methodology perspective.

Lastly, we’ll need an ability to support a variety of processes with multiple development staging areas to accommodate work-in-process, code reviews, testing, and accepted work of the Agile team. Each one of these staging areas will need continuous integration functionality, one of the practices adopted very early in the migration to Agile. And as we know from one of the key Agile principles, inspect & adapt, we need to be able to change this process as we decide what works and what doesn’t work during our retrospectives.

Support for all three of these process variations will not only determine how easy or how difficult your migration to Agile goes, it may very well determine the success of your Agile adoption across the enterprise. And as the use of Agile methodologies continue to expand throughout the industry, the need to support a hybrid process inside organizations will become more prevalent. Without the proper principles, practices, and tools, the methodologies of Agile and waterfall will not coexist as seamlessly as the functionality of my #4 Hybrid club. Fore!

Rational ClearCase Problems: Going Agile

May 25th, 2010 by AccuRev

Is this rational?

Inspecting and Adapting to Agile Processes

May 7th, 2010 by JMartin

Way back in my first job out of university, I was working in Washington, DC, as a Navy contractor, helping manage changes to an electronic countermeasures system.  Ah, those were halcyon days, when I was young and innocent green and scared of my own shadow.  There was this one person I had trouble getting along with, not so much because he was a mean person, but mostly because he would make wild statements and push the team in directions that didn’t seem logical to me.  Sometimes, he would advocate for decisions that seemed to me obviously to be bound for failure.  He was overbearing and he was old.

(Actually, he was about the same age I am now; a disturbing thought as I look back.)

Because he was old and I was uncertain, I couldn’t bring myself to disagree with him out loud.   I eventually was able to describe the situation to my boss, who responded with a statement that has never left me.  He said, “There are people who have 20 years of experience, and there are people who have one year of experience repeated 20 times.”

Culture of the Agile Process

The big difference between the two kinds of people is that the latter have lived their lives, reflected upon the things they’ve gone through, and learned from it all.  We often talk about Agile processes as being “empirical.”  What I mean when I say that is a team makes its commitments, and structures its delivery model around reality.  We don’t commit to delivering five times more in the next week than we’ve ever delivered in a week before.  We don’t abandon a practice just because we’re bored with it.  But the only way this reality-based planning and execution can work is if we go back and look at the reality we’ve experienced, review what worked and what didn’t and work to enhance the former and minimize the latter.

An excelling Agile team is continuously improving, and to do this it must be continuously inspecting.  We expect scrum teams to perform retrospectives at the end of every release and at the end of every sprint.  I encourage teams to also get into the swing of considering that every morning’s answer to the questions “what did I do yesterday?” and “what am I going to do today?” includes the implicit assumption that reflection on what you did yesterday informs what you are going to do today.  I am advocating for daily retrospection.

In rolling out Agile, foster a culture of continuous examination of what you are doing weighed against what you are trying to accomplish.  In addition to encouraging review of sprints and releases, continuously review your roll-out itself.  As you roll out new processes, regularly hold retrospections with the teams that are implementing and being affected by the roll-out, so that you can learn from their successes and help other teams avoid their mistakes.

Inspect and Adapt

The buzz phrase for this kind of behavior is “Inspect and Adapt.”  I see a lot of teams go through the motions of inspecting, but many of them don’t follow through with the second part.  Don’t bother to inspect something if you aren’t prepared to act upon the results.  An extended gripe session is nice to let off steam, but a team isn’t going to be enthusiastic about returning to the same old gripes sprint after sprint after sprint.  This is what happened to “lessons learned” meetings in the olden days: somebody diligently wrote up a report about the things we supposedly learned and then tossed the result in a filing cabinet and we would return at the end of the next project with exactly the same complaints.  When you are leading a team through retrospection, be prepared to act on the results (and make sure the team is empowered and resolved to act, as well).

However, if we come out of the retrospection with a prioritized backlog of improvement, we can plan that improvement into our practices and pull items off the backlog as we implement solutions.  We can all make commitments to the non-development activities that might be necessary to make our environment a better place.   If the backlog seems like it is filled with impossibly large problems, well, what do we do when stories are too big for our sprints?  We break them down.  Encourage the team to think of the smallest possible change they could make to improve their process.  Then encourage them to break that down smaller.  Then implement that first.

In this way, we can start being a team that has experienced 20 sprints instead of team that has experienced one sprint 20 times.