A company presumably wants to present a problem, have a solution recommended, created and delivered to them and they want to know before they get started what it will cost and when it will be delivered.
To address this, using the 'Big Design Up Front' model, at the beginning of the project we do analysis and design, a lot of estimating/guesswork as to how long it will take to deliver, padding of that estimate, the determination of the critical path of development, and we probably establish a heavyweight change management/request process.
There is a lot of CYA that goes on between two companies any time they work together, but I suspect that much of the focus on contracts and deliverables at the onset of a project arises from two things: Companies want to have what they need provided for them with a minimum amount of effort on their part; Companies (on both sides of the contract) fear that their collaborators will take advantage of them if they do not explicitly define all the details of the arrangement (e.g. lack of trust).
Traditional contractors/solution providers operate in simpatico with this approach, and in most cases it probably benefits the provider to do so. if the client company decides something needs to be altered in the requirements due to a market change or new understanding, the change management process is invoked to adjust the timeline and to add additional billing for the change. At the end of the whole process the client is delivered something shiny and new and hopefully fitting the bill of their needs.
A Lean-Agile contractor/solution provider approaches the relationship a little differently.
When working with a company or on a project my thoughts and actions are guided by the principles behind the agile manifesto, the principles of lean software development and of the Kanban Method.
What does this mean for clients?
- Holistic View
- Eliminating Waste
- Early Delivery/Early Exit
- Pursuit of Perfection