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.
2. 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
3. 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
4. Cases - 3 projects in 3 years
● 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
5. Real contract example
● Our contract with The Energy Corporation
● A few pages of specification
● Agile development process
● Low price pr hour
● Completion price
6. 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
7. Agile development process
● Development process described by the vendor
● weekly iterations with
● requirements
● estimation
● prioritization
● development
● delivery
● testing
● feedback
8. Low price pr hour
● 50% below normal time-and-material-rate
9. 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
10. 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
11. Negotiation experience
● Hard to negotiate with contract manager
● Different views on responsibility, guarantees
● Project owner resolved in favour of the agile contract model
12. Combine the traditional contract models
paid by the hour
Time & Fixed
Material paid at completion
Price
13. 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
14. If we finish 25% early
● Price for client 174.000
● Hourly price for vendor 234
payment
effort
15. If we finish on time
● Price for client 200.000
● Hourly price for vendor 200
payment
effort
16. If we finish 25% late
● Price for client 226.000
● Hourly price for vendor 180
payment
effort
17. 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
18. The maturity of the client must be high
● 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
19. 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
20. Configure the contract
paid by the hour
Time & Fixed
Material paid at completion
Price
● Increase hourly price ● Increase completion price
● When scope is most important ● When deadline is most important
payment payment
effort effort
21. Use time & material for some phases
● Early prototyping and experimentation
● Initial estimation
● Maintenance