You are on page 1of 6

Agile 2008 Conference

Colossal, Scattered, and Chaotic


(Planning with a Large Distributed Team)

Wes Williams Mike Stout


Sabre Airline Solutions Sabre Airline Solutions
wesley.williams@sabre.com michael.stout@sabre.com

technology and support was becoming prohibitive


Abstract while impacting the ability to enhance the tool. The
product was supported predominantly by manual tests,
If planning for a large co-located 30-plus which made the task of continuous refactoring a
development team is not enough to make you want to challenge. Looking at all options, the decision was
pull your hair out then try a 30-plus development team made to do a product refresh from technology
located across several time zones, in places with perspective. Although Airline Solutions had many
different cultures and languages. Now, you’ve reached successful small to medium-size projects that used
a level in the Agile planning game that would send Agile values and principles from the beginning, this
most product owners running home to their mommies. would be Airline Solutions’ first opportunity to
implement a large-scale project following an Agile
Planning in Agile Projects requires enabling the Methodology starting day one.
team to have a continuous conversation with the
customer. How can you have meaningful, continuous The Agile Methodology the team followed was
conversation and feedback when your team is scattered most similar to eXtreme Programming (XP). When
across several time zones, cultures and languages? the team was small and co-located it worked in two-
This paper describes our experience of how one of our week iterations. When the team grew in size and
became globally distributed the team decided one-
largest teams in Sabre Airline Solutions® was able to
week iterations would be necessary to enforce a higher
make changes that allowed the continuous
level of collaboration and integration across the team.
conversations to take place. The paper is written from
The team was committed to using Test Driven-
the perspective of both development locations the main
Development (TDD), both at the unit and functional
office in Dallas, Texas and the “remote” office in
level, to verify the completeness of new functionality.
Krakow, Poland.
The team performed pair programming but didn’t do it
to the extent XP purists would recommend. The
The team successfully overcame many obstacles
application was built with a continuous integration
while rapidly growing a small co-located development
build process using Ant and CruiseControl. The team
team into a large globally distributed team that was
used user stories, release planning, iteration planning,
able to efficiently deliver customer valued, quality code
and daily standups to keep everyone informed and
and customer satisfaction with each one-week
make decisions as quickly as possible.
iteration. It attributed this success to three main Agile
areas: evolving the Agile Customer Role, making our
The project began with a small hand picked team of
meetings valuable and efficient for everyone involved,
co-located developers. The team was put together by
and good coordination across the sub teams.
Airline Solutions’ chief architect. His criteria for
choosing team members were excellent technical skills,
1. Introduction many years of business experience, and not only
working experience on Agile projects but advocates of
Sabre Airline Solutions has a real-time data Agile values and principles.
management application to manage critical processes
for an airline which the cost of maintaining the

978-0-7695-3321-6/08 $25.00 © 2008 IEEE 356


DOI 10.1109/Agile.2008.25
Although the team was committed to operating the Growth and globalization of the development team
project based on Agile values and principles as best it magnified those inefficiencies. Growth meant only a
could, its best of intentions were slapped in the face by small portion of the team had the right domain
reality. The rigid schedule and scope set by a waterfall knowledge to make good “educated guesses” based on
contract drove a release schedule that could not be met the limited story descriptions and acceptance criteria.
by the small team. The team had to grow and it had to Being globally distributed across several time zones
grow faster and larger than was originally expected. now meant half of the team was in a location with
This caused budget restrictions and also meant that the limited access to the customer team.
team needed to grow globally. The team ended up
growing to 30 developers (14 in Dallas, Texas and 16 Management agreed to pull two experienced subject
in Krakow Poland), three testers (one in Dallas and two matter experts from other parts of the organization and
in Krakow) and one full time Agile customer (i.e. added them to the team to help fulfill the Agile
proxy customer/product owner) in Dallas and one part Customer Role. The two new Agile Customers would
time proxy customer traveling most of the time. work closely with the traveling Agile Customer to
ensure they were communicating to the team with a
There were many growing pains. The Agile single voice. Planning started getting back on track
customer and technical architect were traveling and with better user stories and acceptance criteria.
rarely available to the team sending the planning, Development and testing now had a single voice that
standup, and retrospective meetings into a tail spin. could make the business decisions around priorities
The team spent a lot of time going in circles having and functionality that were needed.
lots of entertaining and lively discussions that, at the
end of the day, got them nowhere without the decision Although having two newly dedicated Agile
makers. customers helped the team tremendously it wasn’t
enough. They quickly became overwhelmed with
Something had to change or the project was going creating stories, acceptance criteria, verifying stories
to fail. and acceptance test, and answering questions from 30-
plus people. And there was still the issue of not having
2. Evolving the Agile Customer Role to an Agile customer at the ‘remote’ location.
Work Across Time Zones and Teams
The team then invented the role of “feature owner”.
The team understood the number one principle It was introduced to assist the Agile Customers in
behind Agile is to satisfy the customer through early creating stories and acceptance criteria, a kind of proxy
and continuous delivery of valuable software. The to the Agile Customer. This role was intended to be
need for a single voice representing our real customers performed by senior developers with at least some
had to be addressed. The development team needed domain knowledge. These developers would become
someone who could communicate the business needs proxy customers for a specific feature of the system.
and make decisions based on multiple airline customer They would break the feature into user stories with
needs. acceptance criteria and be available to answer
developer questions about the feature. The Agile
The person originally identified to perform as the Customer would verify these stories and acceptance
Agile customer was chosen because he had many years criteria and answer any questions the feature owners
of business domain knowledge and worked closely had about the stories. This role increased the Agile
selling and marketing the product to airline customers. Customer’s availability to the developers and testers on
Unfortunately, for the development team, people with a day to day basis.
these skill sets are in high demand. The sales and
marketing team needed him in front of the customer as Obviously, this meant some senior-level developers
often as possible, selling and negotiating. This meant were writing less code because they were creating
he was on the road a lot and unavailable to the stories and acceptance criteria and spending a
development team. significant amount of time answering questions. It
might seem that the team would develop less code but
When the team was small, co-located and contained adding this role actually increased the productivity of
developers that also had several years of domain the development team. Many times projects add more
knowledge, the lack of access to the customer only developers and are surprised that it does not make the
caused slight delays and small amounts of re-work. team faster. Development capacity was not the
constraint for the team in this case. The team had to

357
look at the whole development process as a system and 3. Overcoming Meeting Inefficiencies
not focus on improving one piece of the system. In
this case the Agile Customer had a huge queue of How do you make a meeting with 35 people
business information that needed to be turned into user effective, efficient, and beneficial for everyone
stories and acceptance criteria. Meanwhile the involved? You don’t! Most meetings do not need
developers were idle waiting for work or worse writing everyone and rarely is there a topic that is relevant to
code that was not what the customer wanted. By everyone on the team.
having the developers perform a part of the customer
role they were no longer idle and the customer’s work It was very frustrating for the team to have a
queue was reduced, increasing productivity. planning meeting that lasted a whole day and at the end
of the meeting team members still didn’t really
This allowed the team to create feature owner understand what needed to be done. During
representatives in both of the global locations. The retrospectives it was difficult to get some people to be
team was able to temporarily relocate a senior open and honest in a large group environment. Even if
developer with business domain knowledge to the everyone felt comfortable speaking in a large group it
remote office since those skill sets were limited there. would take forever to discuss everyone’s issues and
Having feature owner’s in both locations did increase come to a consensus on what needed to be done.
the remote office’s productivity. Retrospectives were reduced to showing a happy face
or sad face on a sticky note as to how you felt and no
The ideal solution would have been to have a real changes to the team processes were made after the
permanent full-time Agile customer located in the meetings. Standup meetings were also affected by the
remote office as well as the senior technical person. large single team, lasting an hour or more. After
This would have allowed the domain knowledge of the operating like this for about a month it was finally
team to grow much faster and increase productivity. obvious to everyone that a restructuring of the team
The idea was considered but the team was unable to needed to take place. The team needed to be broken
find someone, with the necessary business domain into sub teams.
knowledge, to relocate or find someone that could be
hired before the project was completed. However, the It was decided to initially break the team along
team was able to send the Agile Customers from time technical boundaries, the GUI, core business logic, and
to time to the remote location for a couple of weeks. a team that dealt with back-end integration with
customer systems. For those screaming, “NO” right
As Krakow team lead Adam Szczeblewski said now, it is understandable. This was a terrible way to
“Feature owner is not the best idea, but the best we divide the team and caused more issues than it solved.
could come up with within constrained resource
situation. In the future I'd like to see more Agile The team knew there was a risk in dividing the team
Customers (decision empowered business people) in a this way. However, they also knew they had a
project of such a scale”. Many people on the team significant issue with the chosen GUI framework. The
voiced this concern and believe they functioned best framework met the basic design ideas that were
when all roles were performed in all locations. desired, but the framework for it was not completely
implemented. Several key features were missing and
The biggest mistake the team made with the the team was working with the owner of the framework
“feature owner” role was asking a developer with to implement these and stay with the frameworks
limited domain knowledge to take on the role. This design as best as possible. Therefore, the team went
caused the team to have incomplete stories and ahead and split the sub teams along the technical
acceptance criteria because the feature owner did not boundaries with the understanding it would be fixed as
ask the right questions to the Agile Customer. This led soon as there was enough of a technical framework to
to some of the same issues the team had prior to do so.
introducing the role.
In the beginning things were much better than they
It would be nice to say that fixing the Agile were on the large monolithic team. Meetings were
customer role was the silver bullet that fixed all the more meaningful and valuable and the team started
team problems but it didn’t. making good progress again. Iteration planning
meetings became very productive and took only one to
two hours depending on the sub team and difficulty of

358
the stories in the iteration. Standup meetings were familiarity and being able to read body language as
taking 15 minutes or less and were beneficial for well as hear what the person is saying. The problem is
everyone. Retrospectives also became useful and real technical issues slow things down significantly. If you
issues were not just talked about but changes were have a 30-minute issue, which is not uncommon, and
made to resolve them. the meeting was scheduled for one hour you have
wasted a lot of time. Day-to-day and weekly meetings
Although things on the individual sub teams were such as standups and iteration retrospectives and
better it wasn’t long before we started to see problems planning were not efficient with the video conference.
across sub teams. Stories weren’t complete from a The video conference was best for long four-plus hour
user perspective. Teams were working on different meetings such as release planning and release
features at different times with different acceptance retrospectives.
criteria. There was a lot of re-work coming back into
the system. Teams were blaming each other for A conference call from a conference room phone
incomplete functionality, failing builds, test, etc. It was the next attempt at making the daily and weekly
was obvious that the team ended up making the classic meetings more efficient. Each office site would get
mistake of sticking to the technical division too long. together in a conference room and call each other.
In hindsight, the technical split should have been This seemed like the next best thing to everyone in the
avoided when dividing the teams and should have been same room. But oddly enough technology got in the
structured along functional or feature lines. Dividing way again. Using the best conference phone available
along functional lines allowed user-valuable pieces of to the team provided terrible coverage of the room.
functionality to be completed and delivered at the end This caused conversations to be difficult for everyone
of each iteration. Eventually, the teams evolved to to follow. The main problems with conference phones
work on customer functionality and features that cut were sound quality and following etiquette of only one
across all the technology layers in the system but this person talking at a time. Poor sound quality lead to a
took too long. lot of repeating and misunderstandings. Fixing the
sound quality is possible by providing more external
Once the structural issues with dividing the teams microphones. However, the etiquette issue is more
were dealt with the communication across the sub difficult to solve.
teams was much more productive. This gave each of
the sub teams a common overall team goal every If one person from each location tried saying
iteration. The teams collaborated more and paired with something at the same time you would only hear the
each other more often, fixing many of the build issues, person in the room with you. If several people in the
broken test problems, and eliminated the finger same conference room are talking at the same time,
pointing. that conversation can be followed by the people in that
room but the remote location can not. Even the
Dividing the teams wasn’t a silver bullet either. slightest overlap caused others on the phone to loose
The Agile customers and testers needed to be available what was said. Most conference phones are designed
and work with all teams including attending all team to eliminate background noise and if two people are
meetings. In order for the limited number of Agile talking at the same time usually the only person heard
customers and testers to attend all meetings, the is the one closest to the phone’s microphone.
meetings for each of the sub teams needed to be
staggered instead of concurrent. The feature owners The solution that worked best, but still had issues
helped with this issue because the feature owners were was using headsets for all team members and doing a
part of the team and attended the entire meeting. conference call from each member’s desk, a kind of
virtual conference room. The benefit of the virtual
Another issue that comes up is how do you have an conference room, with everyone on the phone, was
effective and efficient meeting when the team is in everyone had to follow the same etiquette of only one
different locations? The team tried three different person at a time talking. With everyone on the phone,
methods for meetings: the first was video conferences, with a headset, each person had the same experience
the second was each location in a conference room, and quickly learned to allow another person to finish a
and the third was conference calls with headsets from statement before speaking themselves.
individual desks.
The team implemented the virtual conference room
Video conferences seemed like a great idea because using a teleconference facility with U.S. and
the team could see each other which allows for international dial-in numbers to keep the costs down.

359
Each meeting had an assigned dial-in number and lacking great planning. However, for a large globally
code. Team members all called in from their desks to distributed team you have to have a great pre-planning
the conference number. The phones used by the team meeting every iteration.
had headsets that connect directly to the phone.
Having the meetings on the phone was less of a Prior to the pre-iteration meeting, the Agile
disturbance to nearby teams than a physical standup customer would pull the highest priority items from the
meeting would have been. backlog that would meet the capacity of each of the
three sub teams. The Agile Customer would then build
The biggest issue team members faced with the high-level user stories for each of the sub teams.
conference calls from their desks was that it takes more He would then identify each of the “cross cutting”
discipline, like most Agile practices. There was a stories for the three sub teams. During the pre-iteration
temptation to read e-mail, instant messages, or browse meeting, the Scrum Masters would discuss the details
the Internet. The team had this problem at times, and of those cross-cutting stories to ensure they understood
we simply let the team police itself. Today, the virtual exactly how the teams needed to interact on that story
conference room idea has been adopted by many teams during the iteration. Then each of the Scrum Masters
across Airline Solutions and has been very successful. would assign “feature owners” to each of their stories.
Feature Owners would then take their user stories and
4. Scrum of Scrums to Get Sub-Teams begin to break them down into tasks and tests by
Working as One Team working with the Agile Customer, testers and
developers on their sub team. All of this had to be
It was known that dividing the team into sub teams complete before the sub teams iteration planning
would require good coordination. There was a desire meetings on Monday morning.
to avoid silo teams working in a vacuum. This is
where a page was taken from the Scrum methodology Every Monday morning, each of the three sub teams
playbook. One of the primary ways to scale a large would go off concurrently to conduct their own
Agile team in Scrum is to create small 6-10 people iteration planning meeting. Teams would verify
Scrum teams. Each of those teams contributes one completeness of stories from the last week’s iteration,
person who attends “Scrum of Scrum” meetings to they would calculate the team velocity based on the
coordinate the work of each of the Scrum teams. past iteration, and then conduct a team retrospective.
After the retrospective, the team would usually take a
As described above, the large team was divided into short 15 minute break and then come back to review
three sub teams with 8-12 developers per team. Each and discuss the new iterations stories, the tasks break
team had developers and testers who were globally down of those stories, and agree on how much work
distributed between Krakow and Dallas. Each team could be completed in the new iteration. If this process
identified a team lead (Scrum Master) who would was successful there was a good chance the iteration
represent their team during Scrum of Scrum meetings. would also be a very efficient and successful iteration.

Each sub teams conducted a short standup meeting 6. Conclusions


every morning at 8:30 a.m. in Dallas (3:30 p.m.
Krakow). Immediately after the individual team A large distributed team is not something to aspire
standups, the Scrum Masters would have a Scrum of too. Many problems would have been completely
Scrums standup meeting to discuss cross-functional avoided with a small co-located team. However, if you
issues. This same process was also followed for are in a situation where you can not avoid this,
retrospective and pre-iteration planning meetings. planning for a large globally distributed team is
challenging but not impossible. We dealt with the
Pre-iteration planning meetings were used to pre- biggest issues that the team had to overcome while
plan each of the sub team’s next iterations. Only the planning. The team needed a customer who was
Agile customers, Agile coach, sub team technical leads involved and available to the developers and testers
and Scrum Masters attended the pre-planning meeting. when they needed them. The first thing done to
The effectiveness of the whole iteration depended how address this was adding an Agile Customer who
well this meeting went. You’re probably thinking, “Of understood the business and communicated clearly to
course well-planned things should run much smoother the testing and development teams. This Agile
than those that aren’t”. That’s true, but for a small co- Customer needs to be available to the whole team in
located team you can get away with and recover from both time zones, and the ”feature owner” concept was

360
added to assist the customer in this area. An Agile
customer located in both locations would obviously be
the ideal way to handle this.

There’s nothing more defeating to a team than


attending lots of unproductive meetings. The team
found meetings with more than 7-10 people were not
efficient. Smaller teams, focused on delivering
business value with every iteration, were critical
elements of the team’s success.

Breaking the team into smaller teams means you


have to have a way to keep good communication
flowing between those sub teams. The Scrum of
Scrums idea of having a point person from each sub
team coordinating efforts across teams worked very
well.

If everyone is not co-located the team found that


meeting in a virtual conference room, which makes
everyone follow the same meeting etiquette, was the
most productive meeting format. Over engineered
communication techniques usually did not work well
for reoccurring daily or weekly meetings.

Agile teams sometimes forget how important


planning is. Hopefully, they continue to have
meaningful retrospectives that help get them back on
track. Good planning provides teams the capacity to
always be proactive instead of chasing their tails
reacting.

Planning is very important, but it is only one part of


an Agile methodology. The Agile customer role,
making meetings efficient, and scrum of scrums all
helped team members address the planning issues that
were stopping them from delivering value to their
customer. The team followed many other agile
practices that were also critical to its success.

7. Acknowledgements
We would like to acknowledge Ben Hogan, Angela
Martin, Scott Hunt, and Evie Williams for reviewing
and correcting our mistakes that no word processor
could find.

We would also like to acknowledge Adam


Szczeblewski, Divyesh Sheth, John Sigler, Madhav
Ayyagari, and Kamal Singhee for comments they made
for this paper. Your thoughts and opinions are greatly
appreciated and valued.

361

You might also like