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