Archive for the ‘Agile / Scrum’ Category

Most agile practitioners have heard about the importance of having your scrum teams in a shared, co-located space. The team collaboration and high-level of communication that co-location provides is a large success factor for agile projects. But what if you live in the real world and your team is geographically distributed. Although it certainly poses unique challenges, you can still provide your team with a collaborative experience by implementing some simple practices.

The Tele-Window

If you have the bandwidth for it, I highly recommend setting up a high quality webcam conferencing solution to provide a window into each location’s department. This should provide ample face-time with your team members and provide a great venue for impromptu meetings. You can glance over at the “window” and see if team members are chatting. You can chime in or they can call out to you when they see you back at your desk. This window also comes in handy for the next tip, the roll-away scrum board.

Roll-away Scrum Boards

Depending on how many scrum teams you have, you can roll scrum boards within the viewport of your tele-window just before the daily standup for that project. At the end of the daily standup, you can take a screenshot of the scrum board and post it on a team wiki or other web-based tool.

Virtual Pair-Programming

As a big advocate of XP practices, I cannot overstate how important it is to have at least some pair-programming sessions with other team members.  Although difficult, it is possible to have a decent pair-programming session with geographically distributed team members.  If you’re on a Mac, you can use iChat to share the screen with your partner.  Make sure you’ve got some voice communication so you can decide who is driving and when.  Two people moving the mouse in all different directions simultaneouly is rather annoying.  On Windows, you can use the Windows Remote Assistance, Microsoft SharedView or download a third-party tool.

The most important factor to ensure success of your agile development projects in communication with your team members. When your team is geographically distributed you’ll find challenges in your execution. Make sure to be innovative and use the technology available to you in order to foster high levels of collaboration.

One of the most popular formats for writing agile user stories follows this template:

As a [role], I want to [feature] so that [goal]

Many organizations translate this into a spreadsheet where each column represents a different field the story writer can fill in:

I have used this template on almost every agile project I have participated in.  For the most part, it works very well. It typically provides a great launch point for additional discussions before it makes it into a sprint.

One of the most common mistakes I see when introducing the template (and agile stories in general) to a new team is a tendency to define every role as just a generic “user”. For example, I’ve seen user stories as generic as:

“As a user, I want to upload photos to a library so that I can use them on a post”

Although its syntactically correct, it is vital that we define a role and not a “seat” on the system. A more valuable user story would look like this:

“As a user designer content author, I want to upload photos to a library so that I can use them on a post”

Notice how this story now has a better context of who will be using the feature and how. This could provide valuable insight into the intended audience and how best to implement the feature — a designer may imply more advanced features while a content author would use the image as is.

Always avoid the generic “user” role in your user stories.

Hope this helps.