The post I created yesterday reminded me of this story:
A team I was working on was asked to sit together in a rather cramped area. Five of us (two developers, one application architect, one tester, one business analyst) were asked to share a very small area about the size of a typical office. The business analyst had desk space equivalent to the size of a typical end table; there were monitors perched precariously above us on small shelves; we shared one phone; and the limited wall space we had was covered with our visible boards and stickies. Fun!
As we reflected on our space at the end of the project, this comment was made from one of the developers: "On the bright side, I don't think I looked at the requirements document once. I just turned to the business analyst beside me and asked her what needed to be done!" Co-location for the win.
"The most efficient and effective method of conveying information to and within a development team is face-to-face conversation" - Agile Manifesto
Thursday, September 29, 2011
Wednesday, September 28, 2011
Strategizing to solve a communication problem
My wife spent part of this past weekend on a leadership retreat. Her team was asked to participate in the following game to help them develop their team strategy and communication skills:
Setup:
- One person acts as a builder.
- One person acts as the architect.
- Two people are observers.
- The builder and architect sit back to back in chairs. The two of them are not allowed to look at each other, but they are allowed to talk.
- The two observers stand on either side and watch and are not allowed to talk or interfere in any way.
- The builder is handed a blank piece of paper and some shapes that have been cut out.
- The architect is handed a drawing where the shapes are already put in place - the blueprint.
- Round 1
- The architect's job is to have the builder re-create the drawing by putting the shapes in the correct placements on the blank piece of paper. The architect is not allowed to turn around, but is allowed to talk.
- The observers are instructed to watch - no talking or gesturing.
- The builder is also not allowed to turn around but is allowed to talk.
- Time how long it takes for the team to correctly finish replicating the drawing.
- Rounds 2-n
- A rule change: For this and any subsequent rounds the observers are allowed to 'tap in' during the round. That is, when they tap the architect's shoulder they can trade places with the architect who then becomes an observer. You can 'tap in' as many times as you want during the round.
- Before starting the round the team is asked to strategize together on ways that they could improve their communication and their results.
- Once again the team times how long it takes for them to correctly finish replicating the drawing.
This was a great exercise to promote team building, continuous improvement, strategizing, and to encourage the team to actively work on their communication skills. It reminds of some of the ways I have seen and used to help teams improve communication between roles. Does the developer have a hard time understanding the requirements document? Let's work on our documentation skills to make our writing clearer. Does the team struggle to meet it's project deadlines? Let's increase the project management rigour and status reporting. Are bugs found during user acceptance testing? Let's write a better test plan.
Or... have the architect (customer/business analyst/tester/project manager) turn around and talk to the builder (developer) directly. Break the rules (and your cubicle walls). Shorten the distance.
Tuesday, August 9, 2011
The role of a business analyst in agile
I ran into Kevin Brennan tonight at #agile2011. I was glad for the chance to talk to him because I've received quite a few questions from BAs in Winnipeg about how their role will change when they work on agile projects and Kevin has been doing a lot of work with the agile extension to IIBA's BABOK.
Here are is a summary of our conversation:
Here are is a summary of our conversation:
- How many BAs can articulate the goals and objectives of their company, team, or project? Start here if you cannot.
- Even if you are able to articulate the goals and objectives - can your team? Without understanding the project goals and objectives the team doesn't have enough information to help them make decisions about scope and priorities and often makes decisions based on 'Is this helping somebody?' which can increase the scope of the project.
- BAs can help facilitate the alignment of priorities and goals - enabling the business to speak to the development team with one voice.
- Facilitate requirements and a common understanding of the proposed system through inclusive modeling techniques (eg. user story maps, silent brainstorming, product box - see more here)
- Facilitate the acceptance of change (rather than the restriction of it).
- BAs don't do any less analysis, but they will end up doing less documentation. This reminds me of this tweet:
“Documents we write communicate our good thinking. You can write one without thinking. You can communicate good ideas without a document.” – Jeff Patton (Jan. 19, 2011 - twitter)
- As a BA, if you need to create a document, it will more likely be after the story is complete rather than before creating the story. Some additional guidelines for documentation on agile projects can be found here.
- Collaborate with testers who share many of the same concerns about priorities, goals, scope, and requirements.
- One thing that doesn't change is the need to work with the business as any software produced by the team may change the business processes. Even with iterative delivery, there will be adjustments to be made.
Friday, August 5, 2011
Agile Adoption - 6 Influence Strategies
The vital behaviours for successful software projects (agile
or not) are simply these: a) improve
communication by co-locating, b) get access to the customer and c) have short
delivery cycles. (Read part 1 of this post here). This is so simple, and
yet agile adoption continues to be a big question mark for many people and a
track is dedicated to the question at Agile2011. So how can we influence these
three behaviours?
The second half of the book “Influencer:
The Power to Change Anything” (Patterson, Grenny, Maxfield, McMillan,
Switzler) is devoted to the six types of influence strategies you can use to
make sure the vital behaviours occur. But first, let’s look at some quotes from
the book that describe strategies that we often find ourselves using, but that
have been proven to be ineffective:
“When it comes to resistant problems, verbal persuasion
rarely works” (No kidding eh?)
“People bet on
single-source influence strategies all the time (and fail)”
Understanding that I am a beginner influencer, here is a
brief summary of the six influence strategies found in the book with concrete
examples of how you can execute these strategies in order to bring about the
vital behaviours that will improve the results of your software projects.
1) Make the Undesirable Desirable (Personal Motivation)
If people find the behaviour undesirable then they are not
likely to exhibit that behaviour unless you can convince them it is fun. One
way to make the behaviour intrinsically satisfying is to turn it into a game. Keeping
track of things like velocity and the number of passing tests in a visible area
can be a fun way to keep score. As the team has early successes, find fun ways
to recognize them for their accomplishments such as completed stories,
iterations with decreasing defects and happier customers. One of our teams
rings a cow bell when a story is completed and employees cheer when they hear
the bell. The team also gives a syphilis stuffed toy to anyone that breaks the
build (they can redeem themselves by buying donuts). These are simple ways to
make new behaviours fun and desirable.
2) Surpass Your Limits (Personal Ability)
People need to be convinced that they have the ability to make the required changes. Send your team to a hands-on agile training so that they can experience what it is like to work on a project that exhibits these vital behaviours. Make sure that the training is hands-on rather than lecture based. Once the project has started, help your team to gain confidence by starting with short delivery cycles where they are producing working, high quality code (even if only in very small batches). Once the team sees early results they will gain confidence that they can change their approach.
3) Harness Peer Pressures (Social Motivation)
Use peer pressure to your advantage by creating a co-located
area. According to one of the studies in the book, “one variable more than any
other affected how people behaved: the presences of one more person”. Putting
people in a common space with expectations set for the 3 vital behaviours will
improve your team’s chances of changing their behaviours. Also, find the
opinion leader on your team (the one that has the most respect and influence)
and spend a lot of time with that person addressing their concerns. If there
are included in the process they will begin to share your ideas with the team
and the vital behaviours will occur.
4) Find Strength in Numbers (Social Ability)
We are more likely to be successful when we have a little
help from our friends. Create a dedicated team that is responsible for the
results and hold the team accountable rather than an individual. Teams that
work together are more likely to come up with a plan that will succeed.
5) Design Rewards and Demand Accountability (Structural
Motivation)
Any system of rewards can be dangerous. The book is very
careful to describe that if the other influence strategies are properly used,
rewards need only to be small in order to influence change. A simple strategy would
be to create a visual project management board where individuals can move
post-its from one column to another as they progress through the steps required
to complete each story. Moving a post-it is can symbolize a very small reward
that happens during your daily stand-up meetings. Rewards such as the cow bell
used above for completed stories can also be simple and effective.
6) Change the Environment (Structural Ability)
Make use of the physical environment to influence the
desired change. Create your co-located space so that it encourages people to
work together by removing the cubicle walls, office doors, etc. Increase the
“propinquity” of your teams and your customers by having them work in the same
space. “The best predictor of whether two people will work together is the
distance between them.” Additionally, make sure your visual project management
board is in a central place and displays some of the common metrics such as
velocity, wip limits, and burn down charts. This helps make the invisible
visible.
To recap, the Influencer book has some great ideas and
strategies on how to influence change. If you are considering how to influence
your team to improve their software project results, promote the three key
behaviours identified above by using all six influence strategies to make the
change inevitable. If your teams are struggling to exhibit the behaviours,
consider changing your influence strategies rather than giving up or targeting
other behaviours.
Agile Adoption - 3 Vital Behaviours
One of the books on my reading list this year was “Influencer:
The Power to Change Anything” (Patterson, Grenny, Maxfield, McMillan,
Switzler). As I read it, I was struck by how the ideas in the book can be
helpful for guiding an agile adoption.
The book is split into two parts. The first section outlines
how any change can be made inevitable by looking for the vital behaviours that
will bring about the change. The second section outlines six different types of
influence strategies that you must use in order to make those vital behaviours
happen. In this post, I’ll just be talking about the first section on vital
behaviours.
According to the authors, any change can be made inevitable
if you can find the correct set of vital behaviours. For many common problems,
these vital behaviours have already been discovered by various research teams.
For example, the vital behaviours for losing weight and keeping it off were
identified by a U.S. government research project: a) weigh yourself every day,
b) eat breakfast every day, and c) exercise with home equipment. A strong marriage
can be determined by looking for the following vital behaviours during
arguments: a) statements that
communicate shared respect and purpose, and b) taking timeouts when required to
halt emotional escalation. The best teachers a) reward positive actions often
and b) alternate frequently between teaching and testing.
So what are the vital behaviours for agile adoption? First,
let me suggest that agile adoption isn’t the goal at all – rather the goal that
we are looking for is to have successful projects. Agile adoption may or may
not be required to meet that goal. If then our goal is to have successful
projects, has anyone done the research to find the vital behaviours that are
part of all successful software projects? Indeed – Alistair Cockburn did significant
research into this topic and found three common behaviours amongst all
successful teams. He described his findings in a 2006
Agile Toolkit podcast where he said: (starting at about 3:25) “Those that
were collocating face to face, short
delivery cycles, access to customers were delivering. Those that were
following some process very carefully were not delivering.” In an article where
he describes his research methods and results he writes that a) they improved their communication by
co-locating, b) had access to their customer and c) had short delivery cycles.
He also commented in his article that “I ran the seemingly odd hypothesis that
if you simply put four people in a room
with whiteboards and computers, give
them access to the users, and have them deliver running software every month or two, they would have a high
likelihood of success in delivering useful, working software. Surprisingly,
this hypothesis has not yet been broken." Reflecting on my own project
history, I find that I agree with his hypothesis. You can read more about his
research here. Notice by the way, that all 3 of these
behaviours are about shortening the feedback loops.
If you look at Alistair’s work and writing on Crystal Clear,
you’ll notice something interesting. These three behaviours are all in included
in the 7 properties of Crystal Clear. However, of the 7, only 3 are listed as
mandatory and one of the above was not included in the mandatory list. “Easy
Access to Expert Users” was excluded (still on the list, but not mandatory) and
replaced by “Reflective Improvement” despite his findings and hypothesis. I’ve
asked Alistair about this and look forward to his answer – I’ll keep you
posted.
Another interesting observation about “Easy Access to Expert
Users” is that for external products with external customers, it would be
difficult or impossible to have access to those users. It makes sense then that
the Lean Startup movement is heavily focused on tools and techniques to find
and measure feedback from your external users.
While these 3 vital behaviours may be the ‘key’ behaviours that
will help your team be successful, they will also spawn other behaviours to
improve your results. For example, in order to have short delivery cycles, you
will need to deliver small increments of value which could lead your team
towards the practice of user stories. In order to have short delivery cycles
and not spend an inordinate amount of time doing manual regression testing for
each delivery, your team will likely move towards automated testing. In order
to have short delivery cycles and not spend an inordinate amount of time creating
deployment packages, your team will likely move towards a continuous deployment
practice.
In conclusion, if you are a manager, executive or coach wondering
how you can make your teams more successful but have struggled with or without
agile techniques, try encouraging and supporting these three vital behaviours as
a starting point and then examine the results. Then, use something like
reflection workshops to examine the results and start adding, deleting, or
modifying practices over time to improve your results. Based on what we know
about organizational change management, this iterative approach to process
improvement has an increased chance of being successful. If the Influencer book
is correct, (and there are lots of examples in the book to indicate it is) then
these three behaviours should make a significant impact on your projects.
Read part II of this post to find six possible influence
strategies to make these behaviours inevitable.
Subscribe to:
Posts (Atom)