10.05.2016 Views

Agile Anti-Patterns

agile-antipatterns

agile-antipatterns

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!