Monday, September 15, 2008

New Frontier of Agile Contracting

I blogged about how I always shy away from fixed-price contract. As a result, I pass up opportunities where clients are not comfortable working on a T&M basis. So, I have been looking for ways to accommodate clients concerned (apprehension about not knowing the total costs) about T&M and find a happy median. I was happy to learn at the Agile 2008 conference about a few approaches that some companies are trying. I thought others might be interested to learn about these novel approaches to contracting.

Money for Nothing and Change for Free. This is the most intriguing of all the variations I heard about. Jeff Sutherland, co-creator of Scrum, shared this interesting case study of a company that was contracted by a client to do a large project. The RFP was awarded based on waterfall approach. The company estimated the project to take 18 months and would cost $1.8MM. Essentially, the project was awarded as a fixed-bid contract. However, they negotiated with the client that they will do the project using Scrum. And they added an innovative clause to the contract that said if they delivered 80% of the intended value from the project, the client would have the option to end the contract and would pay the company (the vendor) 20% of the remaining contract value. Guess what happened? The company was able to deliver 80% of the value in 3 months into the project and the client was happy to pay 20% of the rest of the contract value. Both parties were delighted. Pretty neat, hah! So, to generalize this approach, we could bid for projects in the traditional way (i.e., fixed-bid), but add the following clauses,
  • Client can change requirements for free ("change for free"). Traditionally any change to requirements results into repricing that usually causes the project costs to go up.

  • Early delivery results into a bonus for the vendor which is equal to 20% of the remaining contract value. This is what is called "money for fee."

Hybrid Contract- T&M Definition Phase, Fixed-price Delivery Phase. Essentially vendor will work with the client to on a time and material basis to build the product backlog (requirements) and produce a high level estimates and validate assumptions. Once both parties are comfortable with the definition of the project, the project enters into a fixed-price delivery phase. This will work when the product backlog can be defined reasonably well in a reasonable time-frame as well as the the development team is experienced in the domain and technology and that the development team knows its velocity.

Hybrid Contract- T&M Delivery of Phase 1, Fixed-price Delivery of Subsequent Phases. With this approach, the project is broken into multiple phases. The first phase is done on T&M basis with CAP maybe. In this phase, both the client and the vendor collaborate to identify and address domain as well as technical unknowns. By the end of the T&M phase, the project is expected to have set on a predictable course so that the vendor can price out the rest of the project with reasonable confidence.

Fixed-rate per Unit of Work Contract. This approach requires the vendor to have a stable team that has a well established velocity and also familiar with the technology and domain. The contract is awarded based on an expected rate of work produced per iteration at a fixed cost. The unit of work can be in story points or function points. This would be the nirvana of agile contracting. This could transform software development service into a "Service on Demand."

There are variations within each of these contract framework. I would be interested to hear from others on this topic. Drop me a few lines.

Tuesday, September 09, 2008

Agile 2008 Conference

I attended the Agile 2008 conference in August. This year it was in Toronto. I like the city. The weather was nice and the conference was lively. This was my first time at this conference. Apparently it is growing every year, which is indicative of increasing popularity of Agile philosophy of software development.

There were many interesting sessions at the conference. The most notable of all was the keynote speech by Robert Martin, a.k.a. "Uncle Bob." I was already a fan of his writing. However, I did not have the opportunity to see him in person until this conference. If you haven't heard him speak, you should if you get a chance. It is not only the content of his speech that is interesting and insightful, but also his charismatic delivery is a thing of entertainment. This time he talked about the importance of "clean code," a topic of his new book. I am planning on getting it soon. In his speach, he pointed out how XP has become all about just 12 engineering practices (e.g., "thou shall pair program, thou shall have common code ownership, ...") and Scrum about certifications. The gist of his speech was neither approach is self-sufficient. He urged everybody to focus on writing clean code and not to take short-cuts. In his words, "Craftsmanship over Crap." Here is a picture of him speaking at the conference.

Equally interesting (but not as much entertaining) was another keynote speaker James Surowiecki, the author of The Wisdom of Crowds. He talked about how "wisdom of crowds" may apply to software development teams and more specifically to self-organizing teams. The gist of the talk was that a team carefully put together can collectively make better decisions than any individual experts. He elaborated this with a few interesting examples form real-life experiments. It jives with my thoughts on how a team can collectively act as an Architect.

However, the closing keynote speaker, Alan Cooper, got less than enthusiastic reception for his speech. He shared his unique view of software lifecycle, which is a hybrid of agile and waterfall. He also highlighted the importance of a less understood role "interaction designer" in the context of this software lifecycle. Even though I liked his thoughts on the role of an "interaction designer," but I, like most of the audience, was skeptical about his idea about the software lifecycle. You can find his presentation here. I'll let you be the judge for it.

I am already looking forward for the next year's conference already scheduled to be held in August in Chicago. I hope to see you there.