agile contracts
DESCRIPTION
How do you sell an agile project? Most clients expect to buy software by time-and-material or by fixed-price-fixed scope contracts based on detailed requirements. These models cannot create a fertile environment for collaboration between client and vendor.In this presentation, we report on our experiments with commercial contracts that supports an agile development process, based on concrete examples of win-win contract types. We will outline the different aspects of these contracts, as well as experiences creating and delivering software solutions under these contracts.TRANSCRIPT
Agile ContractsLars ThorupZeaLake Software Consulting
October 18, 2011
payment
effort
Who is Lars Thorup?● Managing software
development● 10 years of agile practices● 15 years of automated testing
● Introducing agile and automated testing with clients
● Assessing software projects and companies
● Founder of 2 agile consulting companies● 12+ senior consultants● 10+ years
Background● A Danish agile consulting company, BestBrains
● Founded 10 years ago● Agile and Lean coaching for software businesses● Some body shopping (interim management and software
development) on hourly rate
● New business area 3 years ago● Develop and deliver custom software solutions● ...using agile methods
● Condition● Come up with a proper form of contract for these types of projects
● The event bureau● small, lively company● software for participant interactivity at top management conferences● 1-3 programmers since August 2008
● The energy corporation● large, traditional corporation● software for power plant registration● 3 programmers, from January to September 2009
● The government department● Case management on top of document management system● 3 programmers, from April 2010 to May 2011
Cases - 3 projects in 3 years
Real contract example
● Our contract with The Energy Corporation● A few pages of specification● Agile development process● Low price pr hour● Completion price
A few pages of specification● Scope
● described on a few pages with illustrations● divided into 6 areas of functionality● estimated roughly by vendor to 2400 hours
Agile development process
● Development process described by the vendor ● weekly iterations with● requirements● estimation● prioritization● development● delivery● testing● feedback
Low price pr hour● 50% below normal time-and-material-rate
Completion price● Separate delivery of the 6 areas
● Each area associated with separate completion price
● Total completion price equal to half the total project price if estimate holds
● Completion price is paid when software is put in production
Collaboration climate● Client and vendor help each other with specifications,
testing, IT environment● to complete project earlier and cheaper
● Vendor delivers software early, fix bugs fast● to increase chance of early completion
● Vendor allows clients to change requirements● to ease the clients' put-in-production decision
Negotiation experience● Hard to negotiate with contract manager
● Different views on responsibility, guarantees
● Project owner resolved in favour of the agile contract model
Combine the traditional contract models
paid by the hour
paid at completionTime &Material
Fixed Price
An example project● The application must enable us to do X and Y
● That will take 3 persons for 6 months● Specification and implementation in weekly increments● Pay $100/hour and 2 * $50.000 when deployed to production
payment
effort
● Price for client 174.000
● Hourly price for vendor 234
payment
effort
If we finish 25% early
● Price for client 200.000
● Hourly price for vendor 200
payment
effort
If we finish on time
● Price for client 226.000
● Hourly price for vendor 180
payment
effort
If we finish 25% late
Advantages● Common incentive to finish below schedule and budget
● Cheaper for client● Faster return on investment for client● Higher profit for vendor
● Supports incremental requirement specification
● Supports incremental software delivery
● Encourage collaboration between client and vendor during project
● Client and vendor shares● risks● gains
● Have a clearly formulated product vision
● Can specify requirements incrementally
● Can prioritize features incrementally
● Can test and approve delivered software incrementally
● Can put software into production incrementally
● Will prioritize bugfixing over feature development
The maturity of the client must be high
The maturity of the vendor must be high● Can estimate from high level product vision
● Can deliver frequently
● Can grow an architecture incrementally
● Can do automated regression testing
● Can break down features and tasks in weeks and days
● Will follow the priorities set by the client
Configure the contract
● Increase hourly price● When scope is most important
● Increase completion price● When deadline is most important
paid by the hour
paid at completionTime &Material
Fixed Price
payment
effort
payment
effort
Use time & material for some phases● Early prototyping and experimentation
● Initial estimation
● Maintenance
Discussion