Professional Documents
Culture Documents
Sponsored By:
SearchSoftwareQuality.com E-Guide
Agile Development Process
E-Guide
Sponsored By:
Page 2 of 16
SearchSoftwareQuality.com E-Guide
Agile Development Process
Sponsored By:
Page 3 of 16
SearchSoftwareQuality.com E-Guide
Agile Development Process
Reduction of waste is another strong agile practice that needs to be understood clearly and
scaled in a large organization. Duplication of code in two different software projects is pretty
common and well-known. Teams waiting for requirements documents to be complete and
approved, waiting for design documents for coding to start, waiting for completed code for
testing to start are all well-known wastes due to delays. Many processes like the stage-gate
and other product management practices introduce their own delays. Software development
teams waste time twiddling their thumbs while they are waiting.
For success, misconceptions about scaling with agile in large organizations need to be
addressed. Agile does not mean there should be no documentation. Agile does not mean
you are not disciplined. Agile does not mean no planning. The Agile Manifesto lays out a
continuum of emphasis individuals and interactions over processes and documentation. It
just means that individuals and interactions are more important than any one process or
extensive documentation, but not unimportant. Removing misconceptions is very important
for agile to scale because such misconceptions have the potential to derail adoption.
Scaling agile work to a large organization
Organizing agile work to a large organization consists of two major areas that need to be
addressed. Tackling one without the other is ineffective and counterproductive. These are
organizing the work to be done and organizing people.
Organizing work traditionally has been done along some internal divisions like product
divisions (personal tax preparation products, corporate tax preparation software products,
for example) or functional divisions (user interface group, database management group,
middleware group, etc.) or based on platforms (Windows, Windows Mobile, Unix, etc).
All of these ways of organizing work waste enormous amounts of time in unused talents and
waste of time in waiting. In practice, there are almost always delays in handoffs and people
are waiting for someone to give them something so that they can continue their own work.
The UI group may be waiting for the middleware group to finish their designs. There could
be enormous duplication of code the two product divisions could be writing the same code
to do the same thing without realizing it. There could be very good programmers that are
Sponsored By:
Page 4 of 16
SearchSoftwareQuality.com E-Guide
Agile Development Process
good in UI design, coding and database design and implementation. The silo method of
organizing work leaves a lot of talent untapped and unused.
It is better to organize work around requirements or features. Requirement areas will have
their own requirement area owners that report to the product owner. Requirement areas
could be IP protocols or performance or device support in the case of a telecommunication
software product, for example.
Or, they could be organized around features such as downloading device data or batch
download of data in the case of an embedded hardware/software product. In both cases,
you will see that teams address entire set of coding functions - coding, UI design and
development, and database design and development also.
Organizing people for scaling agile requires a lot of organizational change. It needs to be
reflected in the policies and procedures of the company and needs to be adopted and used
on a daily basis diligently for agile to be effective. Just adopting the superficial ways or
organizing work without addressing these will be ineffective. Organizing people needs to
follow the principles of empowerment of people, self-organization and self-management.
Reporting hierarchies need to be flattened first and the reporting spans should be larger. If
people are empowered and self-managed, you need fewer managers to oversee their work.
Managers need to be coaches or subject matter experts. Multi-skilling and job rotation
needs to be built into the system. Software engineers may need to be experts at coding,
architecture, design, database design and development and testing. Job titles prevent
people from utilizing their full potential and contribute their best to the organization. Since
now teamwork needs to be emphasized, reward structures need to be modified and job
titles get in the way of team work. Job titles need to become generic and pay is tied to
seniority and experience and automatic. These are pretty radical changes but without them
re-organizing work alone may not help agile scale. These changes enable employees to be
more proactive in taking on responsibilities and self-management and contribution.
Sponsored By:
Page 5 of 16
SearchSoftwareQuality.com E-Guide
Agile Development Process
Sponsored By:
Page 6 of 16
SearchSoftwareQuality.com E-Guide
Agile Development Process
Sponsored By:
Page 7 of 16
SearchSoftwareQuality.com E-Guide
Agile Development Process
Sponsored By:
Page 8 of 16
SearchSoftwareQuality.com E-Guide
Agile Development Process
be considered legacy, or at least less interesting. This means that the staff capable of
doing the work tends to leave or move on to other roles within the organization. Over time,
the core engine becomes the bottleneck.
Suddenly performance falters and a large-scale Scrum conversion looks appealing.
Start with a tiger team
Before we jump to a big conversion, lets consider a series of small refinement, starting with
the core development team.
Its likely this team is actually a half-dozen to a dozen people, scattered throughout the
organization. Instead of re-organizing six departments, we temporarily borrow the people
we need and create one tiger team. To fund the tiger team, all we need is a single war
room, a little consulting time, and a little management attention. Perhaps we send the team
to Scrum training; if we do, this costs us twenty person-days instead of two hundred. We
allow the team to self-organize and self-direct while insulating the team from politics and
providing it some sort of interface to work with other, more traditional organizations.
Another way to do this is to respond to an emergency, crisis, or big piece of software that is
needed in a hurry, taking volunteers.
In either case, we have now created a single multi-disciplinary product team. At the same
time, we have found the bottleneck holding up development and massively decreased its
communications delays. So this new big project, be it an upgrade, a migration, or some
change to comply with some law, is going get done faster than usual.
By the end of the project we now have a high-functioning, multi-skilled team. Instead of
breaking the team up, we formalize it, creating a sort of special-missions team that
operates differently than the old functional teams.
If you can get this far, pat yourselves on the back. Youve won. You can now sit back,
resting on your laurels, certain that you have improved the organization in a real and
specific way.
Sponsored By:
Page 9 of 16
SearchSoftwareQuality.com E-Guide
Agile Development Process
Expand
Sure, you could stop at one Scrum team. You might consider the Scrum team some sort of
elite unit, and the other teams mere humans or doing it the old way.
If the new Scrum team appears happy, if they appear successful, if they get the promotions
and recognition, well... its likely the other teams will start to feel ignored, or maybe a bit
jealous.
So take volunteers to form Scrum team number two. Once this second team completes its
first project, we give it a formal manager and transfer the team members, thus creating
another independent unit. Lather, rinse and repeat.
Now its unlikely that every single team member will want to move over to a Scrum team,
and thats okay. In addition to new development, the team will have maintenance requests,
ongoing operations and support, or what some call MOOSE work. The people that stay back
are likely the ones who take pride in straightforward, repeatable work, and there will likely
be plenty of that kind of work to keep the lights on. Meanwhile, over time, the Scrum
teams eventually become the primary drivers of new feature development.
How do I staff and manage this transition?
The newly-formed Scrum teams will need Scrum-masters, coaches, some sort of product
manager, and possibly a director or two to report to. So there will be plenty of opportunity
for traditional managers to transition over time to the Scrum side of the house.
At the same time, the groups those people manage will be shrinking. That means that as
leaders transfer over to the Agile side of the house, few managers are needed to control
the MOOSE work. As the MOOSE work becomes more administrative and easy to measure,
it will make sense to merge teams and have fewer managers of those teams.
Eventually youll end up with two organizations: The development staff and the systems
support staff. Or perhaps not; you can always stop somewhere in the middle with a few
Sponsored By:
Page 10 of 16
SearchSoftwareQuality.com E-Guide
Agile Development Process
active Scrum teams, and other organizations largely untouched. In a heavily outsourced or
distributed organization, that might be the best win possible, at least for the time being.
Conclusions
This friction between those who want a new way to do things, and folks who prefer the old
way, is the cause of a fair amount of conflict, strife, and failure in Scrum adoption.
Some people want to have explicit goals and defined process, and wont be excited about an
edict to Start Scrum on Monday; figure out what needs to be done and do it. On top of
that, groups organized by function will have a number of functional managers whose role
may be disrupted by a Scrum transition. My advice for Agile transition is not big bang but
instead incremental, done in a way that respects people and gives them options.
This kind of focusing on people isnt limited to Scrum adoption. It turns out that every time
you change the process, you get to decide if you want to focus on people sitting in the same
room and talking or churning out documentation. You get to decide if you want to manage
to plan or to outcome -- and if youd like to plan every action of the team up front, or
enable them to make good decisions in the moment.
Choose wisely.
About the author:
Matt Heusser is a member of the technical staff at Socialtext, focusing on testing Web and
mobile applications. The initial lead organizer of the Great Lakes Software Excellence
Conference (now in it's 5th year), and lead editor of the "How to Reduce the Cost of
Software Testing" project, Matt has been a working developer, tester, QA lead, and project
manager since 1998. In addition to his day job, Matt did a two-year stint as a part-time
instructor in Information Systems at Calvin College, and teaches and speaks at software
development events. You can learn more about Matt on his blog, Creative Chaos, or follow
his tweets at mheusser.
Sponsored By:
Page 11 of 16
SearchSoftwareQuality.com E-Guide
Agile Development Process
Sponsored By:
Page 12 of 16
SearchSoftwareQuality.com E-Guide
Agile Development Process
Given good writing skills, a distributed team needs many communication channels. And
these channels need to be as public as possible, so that everyone is aware of what the other
team members are doing at every moment. Here are some examples of the most important
communication channels for remote teams, arranged in their preferred order of use from
most public to least public:
IRC
A dedicated multi-channel real-time chat application that provides information on presence
is critical. Internet Relay Chat (IRC) is a mature and inexpensive way to achieve this. Any
number of IRC servers are available for free, as are applications (generally called "bots" or
"chatbots") to improve the experience of IRC users. IRC is where remote team members
"sign in" for work. It is where we work out our day-to-day issues, report ongoing status, ask
questions. Everyone can see the channels they want to see. For instance, there might be
channels named "#dev", "#qa", and "#ops." Where I work today, we have a channel called
"#party" that is just for socializing. I join and leave #party depending on how much
concentration my current work requires.
Wiki
The wiki is where the team keeps all of its institutional and historical knowledge. It is the
single point of reference for documentation on the system itself and on the team's process.
An intraweb with documents is not an acceptable substitute for a full-featured wiki, nor is a
document-management system like Sharepoint.
VOIP
A voice over IP system is important for daily standups and for conversations that are too
complex for IRC. For small teams, Skype may be adequate. My team is using GoToMeeting
right now, which also provides the ability for "presenters" to share their desktop. This is
where we review our burndown charts, for instance.
Sponsored By:
Page 13 of 16
SearchSoftwareQuality.com E-Guide
Agile Development Process
IM
Instant messaging is important for one-to-one chats. The actual client is immaterial. I tend
to use GTalk because it is convenient, but IRC also provides this ability.
Email
Email is not the place for documentation, nor is it the place to hold a conversation. Email is
for broadband announcements, overall status updates on systems, questions for the whole
company, and other bits of general information. Conversations on the work itself should
take place in other channels.
Remote workflow
On a co-located agile team, stories, tasks, obstacles, bugs, problems, etc. are generally
tracked as physical index cards on a board. Obviously, this is not possible for a remote
team. Remote teams need tools to do this, and those tools must be very flexible.
One of the hallmarks of a successful agile team is that the team is constantly adjusting their
own software development process. Any workflow tool a remote agile team uses must be
able to accommodate those constant adjustments. I have used two such tools with good
success.
On one team we used a commercial wiki to track stories and tasks. This wiki was very well
designed and provided an enormous number of API calls that allowed us to tweak the
behavior of the system at a moment's notice. Each large story and task was described on a
wiki page containing links to smaller stories on other wiki pages. We managed the status of
each story and task by tagging each wiki page in particular ways. Using the tags, we could
extract overall status information for burndown charts and other such reporting.
On that team we had a separate defect tracking system, but that system also had a highly
hackable API, and our wiki and our defect tracking system talked to each other in a way
that made managing defects a seamless experience.
Sponsored By:
Page 14 of 16
SearchSoftwareQuality.com E-Guide
Agile Development Process
Sponsored By:
Page 15 of 16
SearchSoftwareQuality.com E-Guide
Agile Development Process
About IBM
At IBM, we strive to lead in the creation, development and manufacture of the industry's
most advanced information technologies, including computer systems, software, networking
systems, storage devices and microelectronics. We translate these advanced technologies
into value for our customers through our professional solutions and services businesses.
worldwide.
Sponsored By:
Page 16 of 16