Confessions of an Agile Activist

So, You’re the Customer

February 21st, 2007

The Customer, part two

by Paul Klipp

Welcome. We’re delighted to work with you. If you’ve read my previous article on choosing the right customer and you’re feeling stressed, read on. Here is what you’ll need to do in order to ensure the success of your project. It’s not so difficult.

The customer is responsible for writing user stories.

That doesn’t mean you have to sit down and write all of them, but you can. It does mean that you have to ensure that all of the user stories written by you, by the developers or project manager, and by other stakeholders do an adequate job of describing the desired results. You will have to read all of them, edit them, and confirm their fitness during the Planning Game. The software vendor can’t start development until you do.

What is a user story?

Traditional software development processes use variations on the functional specification to describe functionality. That method works very well if you write well, have a lot of money for up-front design, know exactly what you want, are certain that the business case the drives the project won’t change at all, and you are certain that all stakeholders also know exactly what they want. Then you can write one document describing every aspect of the application in detail and we will estimate it and code to spec. However, if there is a chance that the specification will change (they almost always do) because during the project anyone at your company has a new idea, your competitor has a better idea, or your customers have a new request, then an agile process will reduce your costs and greatly expand your flexibility. Agile process use user stories to describe functionality. A user story is a short, one to three sentence, description of the desired behavior. Here is an example:

New User Registration
When a user lands on the registration page, they are prompted to provide their full name, email address, job title, a username, and a password of at least six characters. Submitting this information creates a new user account and generates a confirmation email to the user including login instructions.

That’s a simple user story, it’s only two sentences long, but describes clearly what you want the programmers to do. An entire software project is defined by dozens of such user stories. The beauty of user stories as opposed to a functional specification is that they can be far more easily changed, added to, and organized into different priorities than can a single functional specification. Also, it is much easier for more stakeholders to participate in the creation of user stories than in the creation of a functional specification. You might have some specific ideas about how this should work, and there is no rule against adding supporting documentation to a user story. If you are proficient with graphic design tools you are always very welcome to attach mock-ups, wireframes, or even just rough sketches of your ideas.

Be warned, though. User stories are deceptively simple. Your job is to make sure that they contain the necessary information to ensure that the developers can properly interpret your desires. Consider this user story:

New User Registration
New users who do not have an account can register for an account via a registration page.

This story would result in a working function. Users could register for access to the application. However, it ignores the business case behind the story. It’s your job to know that the reason users register at all is so that your marketing department can collect working email addresses and job titles so that they can more accurately target their message to people who perform specific functions (specifically, CEOs and Human Resource Professionals).

Now that we know the business case behind the story, we might do an even better job.

New User Registration
When a user lands on the registration page, they are prompted to provide their full name, email address, a username, and a password of at least six characters. They must also select thier job function from a list including: president/ceo, marketing, human resources, IT, administration. Submitting this information creates a new user account and generates a confirmation email to the user including login instructions.

This story is more aligned with the business case than the first story because it more clearly identifies heads of companies and human resource workers without having to search through user-supplied text which could be misleading. For example, under the first story a human resource worker with the job title “compensation analyst” might not be included in a marketing distribution to HR users because there are no clear HR-related keywords in the job title. Under the second story, they would clearly be identified as a human resource professional.

Now, are you seeing why your role is so critical and why it demands clarity of thought and focus? A less competent “customer” might have been satisfied with the first user story, but a few months down the line, when marketing expressed their dissatisfaction, even after the programmers made the necessary adjustments, a developer would have to write a script to assign users to job categories based on thier job titles and some salary-gobbling human would have to invest time in sorting through the already-registered users who slipped through the cracks and assign them to the new categories by hand.

While I’ve never required it of a customer, I recommend that the person in that role write a vision statement that defines the business case. Such an act has two major benefits. One, by sharing the vision with the people funding the development the customer can refine her understanding of the business case. Two, by sharing it with the development team the programmers learn why they are being asked to do what they are doing and can therefore better anticipate the client’s needs and will make better decisions during the development phase of the project.

The customer also defines the acceptance tests. These test should be easy to compose from the user stories. For example, for the story above an acceptance test might be:

When a user creates an account using the name John Doe and email address jdoe@hotmail.com, chooses the HR job function, and a password of hi776 and clicks submit, his submission will be rejected on the basis of the length of the password. When he chooses instead the password hi776bke, then a new user record is created in which all fields are correctly populated. A confirmation email is sent to jdoe@hotmail.com containing the user’s correct login details.

This is a test that is clear, easy to run and check, and as you can see, flows naturally from the user story. This test serves two purposes, it allows the developers to better understand the customer’s expectation and it allows the customer to easily verify at the end of the iteration that the user story has been properly implemented. The acceptance tests do not have to be written before development begins, but can be written while development is taking place. The tester will use the acceptance tests to verify the success of the iteration.

So, what does your life look like?

Your experience as customer varies during three phases:

The Planning Game

(about 1-2 hours per day)

At the beginning of the planning cycle you will write the project vision based on the business case and present it to the stakeholders for approval. Then you will share it with the development team.

During the planning cycle you will work with the team to compose user stories and verify that each is as good as it can be.

You will then prioritize the user stories as high, medium, and low (or with greater degrees of granularity if the project merits it).

At the end of the planning cycle, the manager will create an iteration plan based on the developers’ time estimates and your priorities and will submit it for your approval. This is your last chance to ensure that your stories and priorities are accurate reflections of the stakeholder’s desires (for this iteration, you can change all you want between iterations). With your approval, the development phase begins.

Development Phase

(about 15-45 minutes per day)

During development (or before) you will write acceptance tests for each story slated for the current iteration. Other stories may change as a result of your experiences with this iteration, so they are best set aside until the next planning cycle. The tracker or manager will keep you appraised of the team’s progress by tracking velocity, or the rate at which stories are closed. When each story is closed, the team will frequently update the integration server where you can test the implementation for yourself if you choose. The developer will also send a closed story email including screen shots of the implementation as each user story is implemented. There is no better time to adjust misunderstandings then when the code is fresh in the developers’ minds, so your prompt feedback, while slowing velocity, will overall improve efficiency. During development you can expect to spend roughly 15-45 minutes a day reviewing progress and offering feedback.

Testing Phase

(about 15 minutes per day)

After development is complete, the testers will confirm that unit tests do not fail and will run your acceptance tests. You will be appraised of the metrics produced by these two processes. Your role during this phase is simply to answer any questions regarding desired functionality that the testers or developers may have.

Deployment

(variable time commitment, depending on the situation at your workplace)

(this is when your job really begins. The workload depends on the scale of the deployment and on how much support and buy-in you’ve managed to generate in your organization for this project). It is up to you as the customer to declare when the business value realized by an iteration is sufficient to merit deployment in your organization.

In conclusion, the strength of agile development is that rather than spending an enormous amount of time defining the project up front and then waiting patiently to see the results, you spend only a small amount of time daily driving the project and course-correcting as needed so that in the end, you arrive right where you want to be. The tasks are not difficult or time-consuming, but the responsibility is great. You must be prepared to devote a little time every day and during that time, to give the task at hand your full attention and concentration. If you’re ready to do that, then you can be my perfect customer.

copyright 2005 Paul Klipp

I apologize to those of my listeners who enjoy having a power point presentation for reference. I do not believe in using PowerPoint unless it is necessary to express something visually. I think it’s distracting and too many speakers use it as a crutch. Instead, I have every agilist’s favorite tool - index cards. Here is the text of the cards I was working from:

Presentation Outline

  • Who is the audience?
  • Why do you like agile?
  • How to sell agile to:
    • manager
    • sales teams
    • clients
  • Agile Contracts
  • Questions

Selling Agile to Project Managers Overview

  • more structure
  • the opportunity to do value-adding activities
  • faster reporting
  • better relationships with clients and programmers
  • less CYA (cover your ass)
  • share responsibility with the client and other team members

The 50,000 foot view

  • Primary role is discipline and communication/facilitation
  • less up front planning, more ongoing planning
  • less reports, lots more talking to customers
  • fewer long meetings, more short meetings
  • less CYA, more collaborative problem-solving

Self-directed teams

  • Choose the right people
  • help them to understand the business problem
  • give them space and time
  • You get: a motivated team that produces better quality faster

PM Phases

  Agile PMI/PMBOK
Define the Product Envision Initiating
Features/Release Plan Speculate Planning
Iterative Development Explore Execute
Adapt to Change Adapt Control
Reflect and learn Close Close

Planning

  • Release Planning
  • Iteration Planning
    • Story Cards
    • Estimates
    • Priorities

Agile Documentation

  • Is not non-existant, it’s just team-generated and captured in the most simple manner possible, then made visible to the whole team.
  • Big Visible Charts

Software is an inventive process

  • It’s never been done before, so no one knows with certainty how much work is involved.
  • Much software utilizes emerging technologies and adapts to new situations

Daily Tracking

  • Scrum meeting
  • Burn-down chart
  • Feature Releases
  • Monitor Risks

Estimating Completion Date

  • PMs could never promise a finish date before. Agile just gives tools for estimation that the customer understands.
  • Points and velocity

How to start

  • schedule a demo in two weeks
  • choose features
  • adjust scope to fit
  • start daily scrum meetings
  • give the demo on time
  • reflect and adapt

Selling to Sales Teams Overview

Intuitive process

  • easy to understand
  • happy clients, repeat business, referrals
  • differentiate on quality and experience, not on cost

Selling to Clients Overview

  • Quality, lower maintenance costs
  • Control
  • Flexibility
  • More options
  • lower cost
  • insight into process

Software Sucks (from Technology Review Magazine)

  • Good software is usable, reliable, defect-free, cost effective, and maintainable
  • Only the extreme usefulness of software lets us tolerate it’s huge deficiencies
  • When WindowsXP was released, on the same day, MS released 18 Megabytes of patches
  • The backup disks created by XP Home “do not work with Windows XP Home”

Death by Software

  • 1985-87 - Radiation therapy machine in US killed at least three
  • 2000-01 - a machine in Panama killed 8 more, due to poor input validation
  • 1999 - the Mars orbiter and polar lander destroyed by software
  • 1996 - French rocket destroyed by a buffer overflow, cost - $500,000,000

Software Sucks - cont.

  • On average, professional coders make 100-150 errors in every 1000 lines of code. (Carnegie Mellon study)

Write less code

  • Boehm wrote in 1988 that the best way to lower costs and improve software quality is to write less code.

2000 Choas Report - Standish Group

  • Feature use
    • Always 7%
    • Often 13%
    • Sometimes 16%
    • Rarely 19%
    • Never 45%
  • 64% of all requested features are a waste of money and introduce bugs

More testing of key features

  • Doing high risk and high priority items early means that those features are tested much more.

Harvard Business School Study

  • Conclusions:
    • “Get a low-functionality version of the product into customers’ hands at the earliest possible stage and adopt an iterative approach to adding functionality.”
    • “Projects in which most of the functionality was developed and tested prior to releasing a beta version performed universally poorly.”

Harvard 2003 Follow-up Study

  • “Releasing a partial system when 20% of the functionality is complete as opposed to waiting until 40% is associated with a decrease in the defect rate of 10 (defects per month per million lines of code).
  • Productivity - “A release at 20% correlates to a productivity increase of 8 lines of code per person-day over waiting until the project is 40% done before releasing a demo”

R. Solon 2002 article

  • Study of 43,700 projects
  • iterative vs waterfall
    • 570 480 function points per full time developer
  • Conclusion: iterative development gets more stuff done for less money in less time

Chaos report - top 10 success factors

  • user involvement
  • executive support
  • clear business objectives
  • experienced project managers
  • small milestones

What is fixed in an agile process?

  • If the “triple constraints” are time/cost, features/scope, and quality.
    • Fixed cost and fixed scope projects can only let quality slip
    • Since there is always risk, something always slips
  • So what is fixed in an agile project?
  • Quality and value for money

Benefits of timeboxed iterations

  • Release early if you choose
  • Stop when you like
  • Change vendors easily
  • Control scope

The Role of the ‘Customer’

  • The customer is the master of business value
  • The planning game
    • stories
    • estimates
    • acceptance tests
  • Development
    • answer questions
  • Demo
    • review, reflect, feedback

Agile Contracts Overview

  • Fixed Price
  • Time and Materials
  • Optional Scope
  • Target Cost
  • Satisfaction Guaranteed
  • DSDM
  • Pay Per use
  • Co-sourcing

Why a contract?

  • People assume that the purpose of a contract is to control the natural tendency toward favoring self-interest
  • incentives versus controls
    • less costly
    • builds trust

Give risk to the party best able to manage it

  • Scope - client
  • Technology - vendor

Fixed Price

  • low bids, high change orders
  • vendor takes all the risk
  • no incentive to control scope
  • requires high cost up-front design
  • creates incentives to let quality slip
    • requires lots of expensive controls
  • Customer has no incentive to accept work
  • Customer packs in features (see Chaos report)
  • favors the most desperate and optimistic supplier
  • high failure rates due to underbidding by vendors who don’t fully understand project complexity
  • Vendor pads bid for risk
    • If all goes well - client overpays
    • If it goes even worse than expected, quality suffers

Time and Materials

  • No incentive to be efficient
  • Buyer bears all the risk
  • no incentive for supplier to control scope

Optional Scope

  • Risk is limited to one iteration
  • customer pays at each iteration
  • work can stop at any time
  • customer receives value early
  • visibility builds trust
  • velocity is a reliable measure
  • scope flexibility
  • most important features first
  • client can change vendors

Target Cost

  • Fixed Cost
  • Shared responsibility for scope
  • share costs of exceeding target
  • strong incentive to collaborate toward shared goal

Satisfaction Guaranteed

  • low cost time and materials bid
  • bonus if customer is satisfies
  • best for small projects
  • good for building trust
  • risk that buyers won’t admit to being satisfied
    • bigger clients are more likely statistically to pay the satisfaction bonus

DSDM

  • MoSCoW - feature prioritization scale
    • Must have - contractually obligated
    • Should have - necessary to ensure a happy customer
    • Could have - if there’s time and budget
    • Won’t have - can be used to re-evaluate scope
  • Does require big up-front design, but is flexible later
  • Fixed price
  • client might not get the coulds and shoulds

Pay Per Use/Profit Sharing

  • Vendor is paid only when software yields value
  • High front end vendor cost
  • creates a long-term relationship
  • aligns priorities/objectives
  • requires a lot of trust

Co-sourcing

  • Client and vendor develop together
  • vendor passes skills to client
  • builds trust
  • vendor must have a good reputation

What I like

  • Upper and lower cost limits and an estimate
    • e.g. expected cost is $10,000, will be at least $5,000 and not more than $15,000
  • Time and materials to estimate
    • Up to $10,000 is billed at normal time and materials rates
    • Over $10,000 is billed at a reduced rate (10-25% less than normal)
    • Over $15,000 is not billed at all
  • share savings if total cost is below estimate
    • If it’s done for $6,000 client and vendor split the savings (vendor gets a $2000 performance bonus)
  • This method placates accountants who want to limit risk while creating incentives for the client to manage scope and the vendor to manage efficiency.

Obviously this is no substitute for attending the Polish Agile Users Group meetings. I encourage all software developers, clients, testers and managers to attend as there is a plethora of valuable ideas tossed about at these meetings. I may never get to making a podcast of this presentation. My growing company and my growing baby take up all of my time. However, if anyone would like me to visit their firm to assist with agile adoption, I am happy to oblige.copyright Paul Klipp
paul@paulklipp.com

Agile Advice

Would you like advice on a particular problem, or just a pep talk before that sales call? Perhaps you'd like feedback on a presentation or sales pitch. Give me a call. I can help.

Call now

$0.50 a minute

Copyright © Paul Klipp. All rights reserved.