What Smart Software Customers Know

The success of an acquisition project concerning an outsourced development of software depends on the customer and contractor collaborating in an effective and symbiotic manner. In order to play the customer role properly, the following points should be followed for most software acquisition projects:

  1. Define and communicate a goal and vision for the project.
  2. Appoint an acquisition manager that has the ultimate responsibility for the success of the project. The role of the project sponsor is to set the outer limits for the project, provide stable and adequate funding and to support the project enthusiastically or cancel it.
  3. Adapt and customize the acquisition approach and strategy according to the characteristics of the project.
  4. Avoid having too much administration, but as a minimum: have written requirements and agreements, document important decisions and why they were taken, also measure progress, software quality and requirements changes quantitatively.
  5. Know what you want. Have as stable, complete, feasible and validated requirements as possible. It is important to have a defined scope so that you and the contractor knows when you are done and when the contract needs to be changed.
  6. Define how the fulfillment of each requirement will be evaluated.
  7. Ensure end user involvement in the definition of the product requirements and in the evaluation of the product.
  8. Tell the contractor 'what' you want and 'not how' to do it. Jointly review the requirements before the development starts to sort out misunderstandings and ambiguities.
  9. Choose contractor carefully. The contractor with the lowest bid or most optimistic schedule and budget estimates isn't always the best choice. No management practices can make up for having a bad contractor.
  10. Create an effective, functional, supporting and collaborative culture in the relationship with the contractor based on trust and mutual benefit. Both parties should realize that they have a mutual responsibility for the success of the project. The involved parties should work as a team, jointly solve problems and refrain from blaming each other.
  11. Establish effective communication channels and break down barriers between people and departments in the organizations involved in the project. Ensure that you understand each other.
  12. Don't take advantage of the contractor. Create a win-win situation. Have a mutually beneficial contract that you would be comfortable signing as either party.
  13. Expect the best, but be proactive and prepare for all eventualities. Jointly discuss possible risks and how they should be mitigated with the contractor.
  14. Employ the best and most competent people that is possible, train them, plan and organize their work. Provide necessary assistance and resources.
  15. Plan for maintenance and identify the maintenance and support organization before issuing request for proposals.
  16. Evaluate the evolving software product early and often prior to final acceptance evaluation to reduce the risk of getting a software product that won't meet the needs of the end user.
  17. Perform reality checks periodically. Take necessary actions if the answers to the following questions aren't satisfactory; Are we acquiring the right software? Are we acquiring the software right? Is the contractor building the right software? Is the contractor building the software right?
  18. Be realistic and reassess your expectations as you learn more about the problem domain and the technical feasibility of the program as the project progresses. The initial estimates and specifications of delivery time, development costs, product scope and product quality are likely to change to some degree during the course of the project, you may therefore need to make tradeoffs to achieve the most important goal of the project.

--DanielSvennberg


See :SoftwareManagementManifesto


CategoryCustomer


EditText of this page (last edited February 1, 2005) or FindPage with title or text search