Most often, the decision to outsource software development is based the potential cost savings and whether in-house staff members have the skills — and time — needed for the project. However, a bogged-down project can quickly reduce any financial benefits, whether from cost overruns or delayed deployment of the finished product. In many cases, the client is a contributing factor to (or directly responsible for) the delays. Instead of contributing to the problem, you can be a part of the solution and help keep your outsourced project progressing on schedule. If you are planning to outsource a software development project, there are certain things you should — and should not — do.
Clearly Define Technical Specifications and Requirements
The better your specs are, the faster the development team can implement them. Make your tech specs as detailed as possible, and state requirements in unambiguous terms. Define what the software is, what it should do and how it should perform. Does it need to interface with an existing database, or is it a standalone application? Is it an app that needs to be optimized for mobile devices as well as desktops? Are there file-size limitations that must be considered? Giving the development team as much detail as is possible — as soon as possible — enables them to spend their time creating the product rather than waiting for clarification.
Keep Spec Development off the Critical Path
Preparing executable, detailed specs can take time. You should always be thinking ahead to the next iteration or milestone and developing the specs for it while work is underway on the current phase. Progress will be improved if the work can flow smoothly from one milestone to the next. Otherwise, the team may need to fill the downtime with work for another client — and they may need to complete this work before returning to your project.
Respond Quickly to Requests from the Development Team
One major challenge faced by development teams is obtaining the feedback they need. Whether it is a request for clarification or the approval of a deliverable, the team is often left in limbo while awaiting a response from the client. Sometimes, they have no choice other than to make their “best guess” and move forward. If they make incorrect assumptions, the time spent may be wasted. Even if the project is on a fixed-price basis, the lost time can cost you in other ways. Perhaps the team’s rate for additional work will increase, or the delay in deployment could impact you in terms of lost sales or overtime payments to your in-house employees. Therefore, you need to plan how you will respond to the development team on a timely basis. If you do not have the time to devote to communicating with the development team, consider delegating project management to a trusted in-house employee.
Avoid Micromanaging the Project
Too little communication can derail your project, but too much communication can slow it significantly. You chose the vendor or team because you had confidence that your project would be handled professionally. If you have provided detailed specs and responded promptly to requests, apply the “If it ain’t broke, don’t fix it” principle. In other words, if the project is progressing smoothly, don’t interfere. Let the team do what needs to be done without disrupting work unnecessarily. Spend your time on other tasks, such as working on the front-end processes or interacting with your customers. Ideally, your development team will provide you with periodic updates, and you should communicate with the team if you do not receive progress reports or if you notice potential issues. Otherwise, resist the temptation to micromanage the project or interrupt the team’s work unnecessarily.
Limit Spec Changes
Sometimes, changes to the project’s specs are unavoidable, particularly if the product is highly complex or innovative. Keep in mind, however, that mid-course corrections will almost always slow progress and delay deployment as well as potentially increase your cost. If the modification can be made to a module that is not yet underway, add the task to that phase rather than to the one that is more than halfway completed. You might also consider having the time start with items that are unlikely to change, allowing the team to be constructive while you fine-tune your specs. Shorter milestone cycles can help reduce the need to make multiple or major changes to specs during the development phase, and this approach can be especially beneficial if your project cannot be clearly defined at the beginning.
Avoid Using a Middleman
Whenever possible, contract for the work directly with the vendor, not a broker or service provider who finds clients and then outsources the actual work. In some instances, there can be two or three middlemen between the client and the development team. The more links there are in the chain, the greater the possibility for a broken link. Every aspect of the project — from communication to approval — becomes more complicated. When every detail must be relayed through multiple entities, progress can grind to a halt, and the entire project can be derailed if any of the players fail to perform their tasks properly. If speed is critical to the success of your project, you might even consider collocating with a local resource, either by sending your key staff to the provider’s location or by bringing the provider’s team to your location. This allows face-to-face, daily interaction between you and the vendor. Once the provider’s team is sufficiently clear on your needs and the project is progressing smoothly, you can dislocate treat the project as a typical outsourced job.
The payment schedule should be defined in your contract, and you should abide by it. Naturally, you should not pay for an unsatisfactory product until it has been made to work. However, if the development team has furnished you with a deliverable that meets your requirements, you should approve it and process payment. Your prompt payment can affect future work in two ways. First, the team may be less enthusiastic about completing work on your next milestone or project as quickly as possible. Second, the vendor may be relying on your payment to pay his employees, and if he cannot pay them in full and on time, some of them may choose to switch employers, thus depriving you of talent familiar with your project. Keep team members willing to “go the extra mile” for you by (at minimum) paying within terms. Your reputation can go a long way in ensuring the success of your project, so keep it untarnished. In the event that the product was unacceptable, make sure that you communicate with the vendor, stating why the deliverable is unacceptable and what needs to be done for approval.
Outsourced software development projects can deliver quality products at significant savings. As a client, there are a number of things you can do to help keep the project progressing.
- Provide the development team with detailed specs; Keep spec development off the critical path.
- Respond quickly to all communications from the development team.
- Do not micromanage the project.
- Limit changes to the specifications.
- Avoid the use of middlemen.
- Pay promptly upon acceptance.
By keeping these tips in mind, you can avoid becoming a stumbling block for your development team. Your project will be more likely to progress as scheduled — and you might even find the team has delivered superior work well ahead of your deadline.