Agile Anti-Patterns
agile-antipatterns
agile-antipatterns
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
© 2016 Stellman and Greene Consulting LLC http://www.stellman-greene.com/slides/agile-antipatterns.pdf<br />
<strong>Agile</strong> <strong>Anti</strong>-<strong>Patterns</strong><br />
Understanding “better-than-not-doing-it” results
About Andrew Stellman<br />
• Author and international speaker, with top-selling books<br />
in software development and project management<br />
• Referred to as one of “the industry’s best and brightest”<br />
by Dr. Dobb’s Journal (2006)<br />
• World-recognized expert in transforming and improving<br />
software organizations, teams, and code<br />
• <strong>Agile</strong> coach and team lead (Scrum, XP, Lean/Kanban)<br />
• PMP certified project manager and trainer, PMI-ACP and<br />
CSM certified Scrum Master and agile practitioner<br />
• Built, managed, and lead teams of (up to 80+)<br />
programmers, business analysts, project managers<br />
• Architected, designed, and programmed large-scale<br />
front-end and back-end systems
About Jennifer Greene<br />
• Author of top-selling books in software<br />
development and project management<br />
• <strong>Agile</strong> coach and team lead (Scrum, XP, Lean/<br />
Kanban)<br />
• PMP certified project manager and trainer,<br />
PMI-ACP certified agile practitioner<br />
• Currently building and managing<br />
geographically distributed teams building<br />
large-scale enterprise software using agile<br />
practices<br />
• Built and managed large development and<br />
test teams across many different industries
In this presentation, we’ll examine a<br />
few of the most common antipatterns<br />
that agile teams run into.<br />
We’ll use those antipatterns to explore<br />
how agile practices are driven by<br />
values, and learn how understanding<br />
that relationship can help us achieve<br />
better results for our own projects.
Let’s start with a few examples<br />
of antipatterns and a quick<br />
review of what agile is.
Brooks’ Law is a very common<br />
project management antipattern<br />
“Adding manpower to a late project makes it later.”<br />
– Fred Brooks, The Mythical Man-Month (1975)<br />
“Brooks’ Law” describes a bad<br />
situation that a lot of teams<br />
find themselves in. It’s one of<br />
the most common project<br />
management antipatterns.<br />
Even though it’s called a “law,”<br />
it doesn’t really apply to every<br />
project. But we recognize the<br />
basic truth in it from our own<br />
project experiences—that’s<br />
what makes it an antipattern.<br />
an • ti • pat • tern, noun<br />
An approach to a problem that is frequently used but usually ineffective
Other common project<br />
management antipatterns<br />
“Work expands so as to fill the time available for its completion.”<br />
– C. Northcote Parkinson (“Parkinson’s law”)<br />
“Failure is not an option (that we’re comfortable planning for).”<br />
Optimism bias: ignoring risks because of a project’s importance<br />
“The first 90% of the code accounts for the first 90% of the development time. The<br />
remaining 10% of the code accounts for the other 90% of the development time.”<br />
– “The ninety-ninety rule” (Tom Cargill, Bell Labs, 1985)<br />
“It’ll take about three weeks.”<br />
Said by every software developer at some point in his or her career
What is agile?<br />
(a quick review)<br />
<strong>Agile</strong> is a set of methods and methodologies<br />
• Scrum is an agile methodology focused on project management<br />
• XP is a methodology that’s centered around software development<br />
• Kanban is a method for process improvement<br />
<strong>Agile</strong> is also a mindset<br />
• The mindset of agile is driven by the values of the <strong>Agile</strong> Manifesto<br />
• <strong>Agile</strong> methodologies like Scrum and XP come with their own values<br />
• Kanban is rooted in the values of Lean thinking
<strong>Agile</strong> methods and methodologies<br />
use effective and simple practices<br />
Scrum practices are focused on project management<br />
sprint<br />
product backlog<br />
Daily Scrum<br />
retrospective<br />
sprint backlog<br />
sprint review<br />
XP practices are focused on software development<br />
Kanban practices are focused on process improvement
<strong>Agile</strong> values drive the team’s mindset<br />
<strong>Agile</strong> teams value processes and<br />
tools. But they value even more<br />
the people on the team and the<br />
way that they interact with<br />
each other to solve problems.<br />
A contract negotiation mindset<br />
is one where hard-and-fast<br />
agreements are defined between<br />
the customer and the team. True<br />
collaboration is more effective.<br />
The <strong>Agile</strong> Manifesto<br />
Individuals and interactions<br />
over processes and tools<br />
Working software over<br />
comprehensive documentation<br />
Customer collaboration over<br />
contract negotiation<br />
Responding to change over<br />
following a plan<br />
It’s easy for a hyper-focused team<br />
to lose track of what the users<br />
actually need. This value makes<br />
sure that the users’ perspectives<br />
and ideas are genuinely represented.<br />
...because working<br />
the wrong plan<br />
causes the team<br />
to build the wrong<br />
software.
When the team “gets” the values,<br />
they get more out of the practices<br />
Many of these slides<br />
use illustrations<br />
from our book<br />
“Learning <strong>Agile</strong>”<br />
Like the fable of the blind men and the elephant, the<br />
agile “elephant” is more than the sum of its practices.
<strong>Anti</strong>patterns can cause your team<br />
to work much less effectively. The<br />
daily standup is the most<br />
common* agile practice, and a<br />
very common antipattern that<br />
affects agile teams is directly<br />
related to it. A better mindset can<br />
fix that antipattern and make<br />
your team much more effective.<br />
* Source: 2016 VersionOne State of <strong>Agile</strong> Report – http://stateofagile.versionone.com
<strong>Anti</strong>pattern: a daily standup devolves<br />
into an ordinary status meeting<br />
Let’s hold a daily standup<br />
meeting so I can get status from you<br />
every day. That’s a great practice that<br />
we can all get behind.<br />
We already have too<br />
many meetings! If you don’t<br />
trust me to do my job, find<br />
someone else to do it.<br />
Project Manager<br />
Developer<br />
This is one of the most common agile antipatterns.<br />
It’s so common that most teams think it’s normal.
They miss the point... but the<br />
meeting still produces results<br />
The project manager uses the<br />
daily standup to get status<br />
updates on his plan and give<br />
team members their next<br />
assignments.<br />
I only find<br />
out about a<br />
problem when<br />
it’s too late<br />
for me to do<br />
something<br />
about it.<br />
The developer wants to get back<br />
to coding, so he gives his update<br />
and spends the rest of the<br />
meeting looking at his phone.<br />
Project Manager<br />
when you keep<br />
dragging me<br />
to meetings, I<br />
don’t have<br />
time to write<br />
any code.<br />
Developer<br />
The daily standup is less effective than it could be,<br />
but it’s still effective enough that it’s worth doing.<br />
We call this “better-than-not-doing-it” results.
Most team members focus on practices that<br />
directly help them do their jobs, but rarely<br />
think about the big picture<br />
If each team<br />
member only pays<br />
attention to the<br />
practices that he<br />
or she is using, the<br />
project will still<br />
get results, but the<br />
people on the team<br />
aren’t really<br />
working together.<br />
But the practices<br />
are still effective<br />
and worth adopting.
When everyone on the team understands<br />
the principles behind the daily standup<br />
practice, they get more effective results<br />
What if the developer and project<br />
manager had a different mindset?<br />
With shared values, the project<br />
manager doesn't think of it as<br />
his plan, he thinks of it as the<br />
plan everyone on the team<br />
worked together to create.<br />
So the<br />
daily standup<br />
means You’ll listen<br />
to me and actually<br />
change the way the<br />
project runs?<br />
And the developer does more<br />
than just give status. He has (and<br />
shares!) opinions on the whole<br />
project, and the daily standup<br />
becomes important to him.<br />
When everyone values communication and shared<br />
commitment, the daily standup is much more effective.
We’ll concentrate on antipatterns<br />
that Scrum teams encounter<br />
because it’s by far the most<br />
common agile methodology.*<br />
* Source: 2016 VersionOne State of <strong>Agile</strong> Report – http://stateofagile.versionone.com
What is Scrum?<br />
(a quick review)<br />
• There are three main roles on a Scrum project: product owner,<br />
Scrum Master, and team member<br />
• The Product Owner maintains a backlog of features and<br />
stories that need to be built, organized by value and difficulty<br />
• The software is built using timeboxed iterations called sprints<br />
• At the start of each sprint, the team plans together to<br />
determine which features from the backlog to build<br />
• Every day, the team holds a short face-to-face meeting called<br />
a Daily Scrum to update each other on the progress they’ve<br />
made, and the roadblocks ahead<br />
• The Scrum Master keeps the project rolling by helping the<br />
team identify and remove roadblocks<br />
• Working software is demonstrated at the sprint review, then<br />
the team holds a retrospective to figure out lessons they’ve<br />
learned so they can improve
What better-than-not-doing-it<br />
results feel like to a Scrum team<br />
• It was worth adopting Scrum, but you’re not seeing the<br />
“astonishing” results that books and trainers promised<br />
• The practices somehow feel “empty” — like everyone is going<br />
through the motions, but projects are only marginally improving<br />
• Things went well for the first few sprints, but they’re starting to<br />
slow down and you’re not sure why<br />
• You’re getting second-guessed by management about what<br />
features to include in the software, and it’s not clear exactly<br />
who’s supposed to make decisions about what features to build
<strong>Anti</strong>pattern:<br />
Command-and-control Scrum<br />
• Command-and-Control project<br />
managers feel like they create and<br />
“own” the schedule by themselves<br />
• They get estimates from the team<br />
and create the plan on their own<br />
• Team Leads assign work to the<br />
team members to do exactly what’s<br />
required by the plan<br />
• This can lead to “water-Scrum-fall”:<br />
the project is planned up front, and<br />
iterations are just project phases<br />
This is a better-than-not-doing-it result. It gets the<br />
job done, but the team could be much more effective.
<strong>Anti</strong>pattern: Product Owner<br />
without authority<br />
You want to<br />
include that feature in the sprint? Wow,<br />
that decision’s way above my pay grade. I’ll<br />
have to check with my boss, and maybe his<br />
boss, and…<br />
Product Owner<br />
If the Product Owner doesn’t have<br />
the authority to make product<br />
decisions, the team can’t plan<br />
effectively. The better-than-notdoing-it<br />
result is that the team<br />
still produces some work, but users<br />
and managers aren’t happy and team<br />
has to tear out and redo features.<br />
The Product Owner decides what items go into the product<br />
backlog, and which of those items the team will work on<br />
during each sprint. At the end of the sprint, the Product<br />
Owner accepts the completed items on behalf of the<br />
company. This depends on the Product Owner having the<br />
authority to make those decisions. That authority is<br />
compromised if:<br />
• The team elects a Product Owner from within their own<br />
ranks who does not have any special authority<br />
• Senior management chooses a Product Owner but<br />
doesn’t stand behind his or her decisions<br />
• The Product Owner role is replaced with a committee
<strong>Anti</strong>pattern:<br />
Sprints aren’t really iterations<br />
Iteration #1<br />
Iteration #2<br />
Iteration #3<br />
Scrum is an iterative methodology because it uses iterations<br />
called sprints. The team demonstrates working software to the<br />
users at the end of each iteration. Iterations are timeboxed,<br />
which means the deadline does not change. Work that isn’t<br />
completely “Done” done at the end of the sprint is put back in<br />
the product backlog and resumed in a later iteration.<br />
But a lot of Scrum teams use sprints that aren’t really iterations:<br />
• The deadline moves to accommodate unfinished work<br />
• The team will demo work that isn’t really “Done” done<br />
• Features move in and out of the sprint seemingly at random<br />
• People aren’t working together towards a shared sprint goal<br />
When sprints aren’t iterations, it feels like the<br />
team’s not really able to make or meet commitments.
<strong>Anti</strong>pattern:<br />
CYA culture<br />
It’s<br />
not my fault that<br />
the developers made<br />
mistakes and blew<br />
the deadline.<br />
<strong>Agile</strong> teams work best when they have a<br />
culture that gives them freedom to make<br />
mistakes. But that only happens when<br />
everyone feels a collective commitment to<br />
deliver the most valuable product they can.<br />
Project Manager<br />
How were we<br />
supposed to know the<br />
project manager made bad<br />
assumptions when he<br />
planned the project?<br />
Scrum is still worth doing, even with<br />
a team that has a CYA culture. It’s<br />
just not as effective as it could be.<br />
Developer
Scrum has more than practices<br />
and roles: it has values, too<br />
Commitment: Each person is committed to the project's goals<br />
Respect: Team members respect each other<br />
Focus: Each team member is focused on the work<br />
Openness: Everyone is aware of their teammates’ work<br />
Courage: Team members are willing to stand up for the project<br />
A lot of teams overlook the Scrum values, but they’re<br />
the key to getting past better-than-not-doing-it<br />
results and becoming a more effective team.
The values of Scrum and the <strong>Agile</strong><br />
Manifesto help you to counter these<br />
antipatterns<br />
Use openness and commitment to<br />
counter the “command-andcontrol<br />
Scrum” antipattern<br />
Responding to change over<br />
following a plan<br />
Use focus to counter the “sprints<br />
aren’t iterations” antipattern<br />
Working software over<br />
comprehensive documentation<br />
Use courage to counter the<br />
“Product Owner without authority”<br />
antipattern<br />
Customer collaboration over<br />
contract negotiation<br />
Use respect to counter the “CYA<br />
culture” antipattern<br />
Individuals and interactions<br />
over processes and tools<br />
Countering these antipatterns helps you and your<br />
team do better than better-than-not-doing-it results.
How do you do better than<br />
better-than-not-doing-it results?<br />
Choose a methodology with values that match your team and company<br />
culture, and practices that address real problems.<br />
There are many paths to becoming agile, but there is no single, canonical agile<br />
implementation that your team can simply follow without thinking or learning.<br />
Find a great agile coach! There might already be one in your organization.<br />
Start with the practices, because a great way to learn a new way of thinking is<br />
to start acting differently—but keep a focus on learning the values as you go.<br />
A practice that works really well for one team can utterly fail for another<br />
because they have a different attitude and mindset.