Very often you will find that you are unable to fully staff a project with internal resources. This may be due either to a shortage of people with the requisite skills (often called a skills shortage) or simply to a shortage of people. Either way, you need to contract all or a portion of your project to an external vendor. There are four basic steps to the contracting process:
Identify one or more contractors who can meet your requirements. Your organization may have a formal search process that involves sending out requests for proposals to a list of approved contractors, or it may have no process whatsoever, requiring you to do all the legwork yourself. Regardless, you should be looking for several things in contractors:
- They should have relevant experience and expertise in what you're trying to accomplish.
- They should have a software process in place that they understand and follow. A process is more than a collection of binders that sit on a shelf gathering dust. If they do not have a process, then they're hacking -- so why pay a premium price for low-quality work?
- They should be able to provide references for successful and not-so-successful accounts that are similar to your own. Yes, it is nice to hear good things about the contractor. But nobody's perfect, so I also want to find out where they've made mistakes in the past and how they rectified them. If a contractor can't be honest with you up front, then you shouldn't be doing business with them.
The work that your contractor does is effectively a miniature project, so they should provide a project plan that defines the scope, estimate, and schedule for their work. You also need to come to a mutual agreement on what each side will deliver to the other. In order to produce what you need, they need your requirements for what they are building and a definition of your technical environment and processes. You will increase your project's chance of success by defining the commitments for both your organization and the contractor.
Do not get caught waiting for some mythical deliverable several months in the future. Instead, actively manage the contractor through status reports and inspections of work done. To manage the contractor, you need to maintain contact with them. Demand regular, at least weekly, status reports that describe their accomplishments to date, what is still in progress, and what has not been started. These should be measured in work days or work weeks, something that you can convert into money. Do not accept percentages as units of measurement -- a project can be 90 percent done for months or even years.
Your quality assurance (QA) group should be in regular contact with the contractor's QA group so that you are fully aware of the actual progress of the contractor's work. Yes, this is overhead, but it is an overhead that dramatically reduces the risk of contracting. Therefore it is money well spent.
Throughout the process of managing the contractor, keep track of actual results versus the original plan. You will need this information in the future to determine whether or not you want to continue doing business with a given contractor. It will also prove to be useful if you take any legal action.
In my next two tips I'll describe common strategies that contractors may try in order to pull the wool over your eyes.
Note: This material was modified from Chapter 6 of Scott's book Process Patterns.
- Senior object developers, project managers, and IT executives can all benefit from Scott's two books on process patterns: Process Patterns: Building Large-Scale Systems Using Object Technology (New York: Cambridge University Press, 1998) and More Process Patterns: Delivering Large-Scale Systems Using Object Technology (Cambridge University Press, 1999).
- Learn about the Capability Maturity Model for software process management from this book in a series from Software Engineering
Institute: The Capability Maturity Model: Guidelines for Improving the Software Process (Addison-Wesley, 1995).
for Project Managers, a five-day course from IBM Learning Services, gives professionals who manage projects an overview of the contracting process, as buyer and seller.
Individual Negotiating Skills, a two-day course from IBM Learning Services, aims to improve negotiating skills by teaching a proven framework for negotiations.
Scott W. Ambler is a Practice Leader for Agile Development within the IBM Methods group. He develops process materials, speaks at conferences, and works with IBM clients worldwide to help improve their software processes. Scott is author of several books, listed on his Web site at www.ambysoft.com. Scott is also a recognized Ratonal Thought Leader, whose homepage may be viewed here.