Archive for the ‘Enterprise Agile’ category

Agile Methods: Defining Velocity, Planning Poker and Burnup Charts

September 29th, 2010 by damonpoole

Having already discussed unit testing, continuous integration, and user stories (among other terms,) here are my final  Agile methods, defined: Velocity, Estimation using Planning Poker and Burnup Charts.

Agile Method: Velocity

The velocity of a team is simply the number of story points associated with stories that are finished over a given period of time, often 1 to 4 weeks. For instance, if the team completed 8 stories that were each 5 points during a four week period, then their velocity is 40 story points every four weeks. In a stable team, a team that is comprised of the same individuals working full time as part of that team, the velocity is a good measure of the overall throughput of the team.

Knowing your velocity helps with planning. For example, if you know that the velocity of your team is 40 points every four weeks, and you have 200 points worth of stories for a release, then you know it will take that team approximately 20 weeks to complete that release.

Agile Method: Estimation Using Planning Poker

Planning Poker is an estimation technique first described by James Grenning in 2002 in a paper by the same name. When I first heard about Planning Poker, I couldn’t help but chuckle. It seemed a bit silly to mix software development and poker. It wasn’t until I actually used it that I experienced its value. You may have a similar reaction. I would encourage you to invest the couple of hours it will take to do a trial run.  You will be surprised.

One of the biggest benefits of Planning Poker is the sense of team that it creates. The whole team is participating in the estimation. This creates a greater sense of team ownership and team responsibility for each story. Another major benefit of Planning Poker is that you leverage the collective wisdom of the whole team.

Planning Poker reminds everybody that the estimate includes all of the work that needs to be accomplished in order for the story to be considered done. It includes development, testing, documentation, and anything else required for completion. It also acts as a reminder that you are part of a cross functional team, and that nobody on the team gets credit for a job well done until the whole story crosses the finish line.

Agile Method: Burnup Chart

A burnup chart graphs the progress of getting stories done over time. The X axis is time and the Y axis is accumulated story points completed during that time. For instance, if the team finishes a story with 3 points on Tuesday and a story with 5 points on Thursday, the chart for the week, showing Monday through Friday, would display 0 for Monday, 3 for Tuesday and Wednesday and then 5 for Thursday and Friday. By using a longer time frame and drawing a line representing expected velocity, you can see how a team is progressing over time. If the number of story points accumulated is not matching the velocity, you know there is a problem and you can start asking questions such as “why aren’t any stories getting completed?”

Next Steps

You can read more about all of these practices on my blog and you can also browse our resources section. Many of these practices can benefit from modern tooling. Tools which support both Agile and traditional software development environments are the tools which are most likely to provide direct support for these practices, especially in a hybrid development environment. Look for tools that support both traditional concepts as well as Agile SCM, Agile Project Management, and Continuous Integration. There are also many classes available to learn more about Agile, Scrum, etc. If you are interested in taking a deeper look at the benefits of Agile or hybrid tooling or training, browse our web site to learn more, or contact us to start a conversation.

You’re So Agile! Implementing Agile… in a Sales Team?

September 27th, 2010 by clucca

My job here at AccuRev involves working as an “Agile Evangelist,” and along with the other Evangelists on my team, we have appropriately named ourselves “Team AgileCycle.”  Prior to our AgileCycle product launch, AccuRev took a company initiative to bring Agile into every part of the business.  The idea was to bring an educational awareness of Agile process to all of our teams by implementing basic Agile practices.  ”Team AgileCycle” was responsible for bringing Agile to the sales team, so our salespeople could have a taste of what Agile development was really all about.

(I should point out that we do realize sales organizations and development organizations are vastly different, and certain Agile practices can’t be applied to a sales cycle. But we did see great opportunities to pick up Scrum methodologies and usefully apply them to help within our sales organization.  Some of the changes we made do not qualify as not “pure” Agile, or even best practices, but the point of this exercise was to expose our team to some of the things software developers are doing in the real world.)

Implementing Agile Step 1: Sales Scrum Training

At AccuRev, we subjected our sales organization to Certified Scrum Training. In this training we walked our team through the different phases of Scrum: planning sessions, standups, and retrospectives.  We even exposed the sales team to planning poker when walking them through typical development cycle.

Implementing Agile Step 2: Implement Sales Standups

The next step was to take what we learned, and actually implement it.  At AccuRev, we now have multiple standups with our sales team, in order to obtain feedback quickly and learn what our customers are saying in the field about AgileCycle.

Implementing Agile Step 3: Mark Out Sprint and Retrospectives.

In the sales team, this is simple. Our iteration is once a quarter.  I would never suggest a development team implement this long of a sprint, but for sales it works. At the end of the sprint we got together and performed a retrospective, which discussed results for each territory, reviews of our processes, and brainstorming for the next quarter.

Implementing Agile Step 4: The Task Board

In the “Team AgileCycle headquarters,” we maintain a task board. Here we take all of our goals and tasks for the quarter, and mark them out asImplementing Agile: The Task Board “backlog,” “in progress,” and “complete.”  (We’re still working on how to measure our story points, but the basic process is that we plan our backlog with our quarterly goals. When something else comes up, we fill the backlog with those tasks.)

And even though this task board seams simple, it actually wields a lot of power and has become a great tool in organizing our work.

What has surprised me the most during the whole implementation process is just how well the sales cycle seems to match specific Agile methodologies already. Think about this:

We already built in an iteration time: 1 quarter

We had planned velocity already: Sales to make this quarter

We inspected and adapted: If the numbers were not met we wanted to understand why. If we weren’t on velocity we changed course.

We had Scrum meetings before it was called “Scrum”: Weekly status and impediment meetings.

Burnup chart: Heck, the sales meter in Salesforce could even be compared to a burn up.

So after all of this, my question is:  Are sales teams “naturally” Agile because of their business? How similar is a highly functioning sales organization to a highly functioning Agile Development Organization? What do you think?

Yes, You Can! Doing Agile with Remote Teams

July 15th, 2010 by clucca

This past year I’ve attended several Agile conferences, presented at many of our own conferences, and traveled to Agile tradeshows sponsored by some influential industry-leading names. What surprises me most is the variance I see on the answer to this question: How do I do Agile with remote teams?

Some of the pure “Agileistas” will may answer this question in a manner that isn’t very possible for some of us in the real world, with “Don’t do it” or, “Reorg your company.”

I don’t’ know what those people expect here- is it possible that you can convince your management organization to tear down its office walls, move entire teams from across the country into one office space, just because you heard it at a conference that it was going to be really hard to do Agile remotely?

I certainly don’t believe that doing Agile with remote teams is a bad practice, nor do I believe that it’s impossible. Challenging? Yes it is. Easy to mess up? You bet. But there are some simple things you can do to avoid some of the pitfalls of remote organizations.

Agile with Remote Teams

Use face to face communication methods:

I just got the iPhone 4. It has face to face video chat. I also use Google Talk, and this also has video chat built in. It works great! With all the communication technologies we have now a days, there is no reason to avoid personal contact with remote teams.

If the remote team is a faceless organization, it will become a perceived impediment for the local team if there are problems. They wont’ be treated like part of the team, but more like an outside entity that drops code in and risks messing up the release.  We can bring these teams closer together to encourage communication, and allow them to adapt and respond to each other as issues arrive. Creating a persona and human link turns those faceless “code drops” into real people, people who you can reach out to. This gives the team the power to self manage your priorities, impediments and conflicts.

Create Agile ambassadors

We can even take face-to-face chat on the internet up a level. Sending ambassadors back and forth from the remote teams to home base and vice versa creates a human link that is deeper than any piece of technology canAgile for Remote Teams provide.  The ambassador’s job is to strengthen this link, because if the link is strong, each side will be more inclined to help each other.

Sometimes having a planning session with the remote team doesn’t give them the overall sense of how important the stories you’re working on might be. They may not feel as if it’s important, and that’s because they don’t know all the juicy details that led up to the creation of that story. Having an ambassador at that site gives that team visibility into all of the bits of information that make one user story important. In other words, the ambassador gives the entire back-story to an iteration (IE the gossip) so they can get a sense of how important something is, it’s not just a priority number in the ITS.

Use Tools That Work Globally

With all of the face-time, ambassadors, and communication, it’s essential that teams have a global view of what’s happening during the development cycle. It wouldn’t make much sense to reach out and then not provide a way to extend that communication on the development level.

Agile for Remote Teams

Imagine a team where having access to a user story or a piece of code wasn’t easy and available to them? This handcuffs the team tremendously.

Any remote team will need to be able to:

  • See each others user stories and tasks
  • Enter updates to user stories and tasks
  • Diff baselines and branches
  • Check out code from remote teams
  • Contribute to team discussions and wikis
  • Run continuous integration globally

Use Multi Stage Continuous Integration

Using multistage continuous integration lets people take a look at what’s been built, and if it functions correctly, give it to the other team. Having multi-stage set up gives you a way to integrate early and often, but only deliver changes that are “done”.

One of the main problems with remote development is integration, and it’s a double edge sword for most SCM tools. If you isolate the remote team too much, they won’t integrate often. And when they do integrate to mainline, they may break functionality. The problem with this is that they will not be able to respond to that change for 6-12 hours if your team is in another country. This basically means downtime for everyone.

But with multistage CI and AccuRev you can keep that team isolated and integrated at the same time.

Is it possible to do offshore Agile?

I’m not sure if it’s a question if it’s possible, I don’t think we have a choice. Offshore development is a reality that isn’t going away, and the simple answer of bringing teams together to practice Agile isn’t always variable.  Doing Agile with remote teams isn’t’ a choice, it’s a reality.