How to find a reliable vendor for software development outsourcing?

About the problem

The problem of finding the right offshore company to outsource IT or software development work to it is unfortunately very common. There are thousands of offshore software development companies all over the world: in India, Russia, Ukraine, China, Latin America, etc, but which one to choose for your project? And a more complex question, how to choose not to fail? Most probably you heard from your business partners, friends and saw in the web many failure stories about outsourcing. Money saving is attractive (you may save 50% of project cost or even more), but what if money will be wasted and you will get software with very bad quality or even will not get any software. There are stories over web like someone has spent $300000 during 6 months and did not get any result from his outsourcing vendor.

Many executives, CIOs or VP, Engineering use the following method: they just open Google and enter keywords of required technologies or industries, and go through the list of vendors, analyzing each company in some way and then they find some company which seems to be most appropriate. For instance it offers the lowest prices for required skills and expertise among the list. And unfortunately this method ends up with significant number of failed projects.

There are many reasons for projects to fail, you can see most frequent ones here:

Typical mistakes

  • You thought that company you’d chosen would be dedicated to your project, but you find out that they are working on several projects for various clients and they do not devote enough time to your project, so deadlines are missed.
  • They just allocate developers for your project, but do not provide project management services, so you need to manage the project by yourself. Great if it is OK for you, but what if you do not have enough skills or if timezone difference between you and the development team is such that you need to spend nights working?
  • You did not provide project specifications and the team started work without them – and they’ve produced software which significantly differs from what you expected.
  • Your requirements change frequently, but the team does not have any requirements/tasks tracking tool to manage them so this again end up with unusable software.
  • The company you have chosen has high employee attrition rates, so developers in your team change frequently, significantly affecting your deadlines.
  • You have signed NDA with the vendor, but they steal or redistribute your IP and trade secrets.
  • You have chosen a great team, but its contact person does not speak English well, so you spend too much time on communication and this can affect correspondence of the product to your requirements.

Statistics

  • Product-quality problems rose from 24% in 2003 to 37% in 2006
  • Communication issues rose from 44% to 53%
  • Difficulty in hiring the right outsource team increased from 48% to 56%
  • Concern about intellectual property theft increased from 24% to 31%, and
  • Cultural misunderstandings increased from 16% to 21%

(information from Steve Mezak, Accelerance)

Way to find a reliable partner

So to avoid the above listed problems or at least to minimize the number of them you need to have some algorithm to find a reliable partner. A good approach is to begin with creating an image of the partner you’re looking for.

Which questions should a company seeking for a vendor ask itself before starting the search
First of all you need to decide about the type of services you need. There are two approaches:

  • Out-tasking. Consider a situation when you hire a couple of freelancers or a company assigning just a group of programmers (without management) to your project. You have to manage the team during nights, but finally they develop a software for you and the contract with them ends. What if you need to add new functionality or change something in the software? Or what if you have plans to have long-term development work? Developers who worked on the first version are now unavailable and you have to find new programmers who often say: “It is easier to completely rewrite your application than to make changes in it”. This is because those who developed the previous version and had everything about the structure of the source code in mind left. However this approach is good if you just need a small software developed and do not have long-term plans for it.
  • Outsourcing. This is usually a more tied relation with an outsourcing service provider. The consultant does not act as a body-shop, it manages the project alone and guarantees that if some of programmers leave the company, all his knowledge about the project will be passed to someone else. It guarantees that you will not end-up with a requirement to end-up the product. And it guarantees that your project can last as long as possible without additional significant efforts (like in out-tasking above).

Second, you need to think about your expectations about the vendor:

  • In which technologies and industries should outsourcing service provider be specializing to be able to work on your project? You need to also take into account technologies and industry knowledge which will be necessary for your software in the future. This is to select the vendor which is scalable enough for your future needs.
  • Is that OK for you if your vendor does subcontracting?
  • How do you feel if your service provider works for your competitors on your market as well?
  • What size of the service provider company do you expect? You need to keep in mind that company should be big enough to be able to work on your project and be small enough to treat you as a significant client and provide appropriate attention to you.
  • What size of the development team would you prefer to work on your project?

How to search for a vendor

The first thing you need to remember when you search for an outsourcing vendor is that you should always have alternatives. You should have a list of vendors to choose from. If you end your search with the first company you think might match your requirements it is a mistake. This is a competition principle in business: compare and choose.

So first of all you need to prepare a list of possible vendors for you. At the first stage you can create a long list and then reduce it to a couple of most attractive possible vendors.

There are several ways how to find a software development/IT outsourcing vendor:

  • Referrals from your friends and business partners. This sounds like the most reliable way, however do not relax, if some vendor successfully worked for your business partner it does not mean that it has enough expertise in the project you need, and does not match other criteria above and below. So be careful. Advice for you would be just to add them to your long list among others with equal importance.
  • Google and other search engines. Basing on expertise in technologies and industries which will be necessary for your project you create a list of keywords and pass it to a search engine. Then you go through resulting pages and basing on short review add or do not add companies to your long list.
  • Online job and project boards. Especially if you’ve chosen out-tasking, oDesk, Elance and other similar websites are good places to search. There are many freelancers and body-shop-like companies. However some small companies supporting full outsourcing services, not just out-tasking sometimes register there.
  • Trade associations are good places to get information about possible vendors, such as The National Association of Software and Services Companies (NASSCOM) and RUSSOFT, Russian association of software development and outsourcing companies. They can advice and teach you about best practices of outsourcing and vendor selection process. Associations also often arrange meetings and public forums, where you can look at potential contractors.

OK, now you have a list of potential vendors and you need to shorten the list by removing those who definitely do not match your criteria of search

Process of eliminating unsuitable vendors from the long list

  • Besides technical expertise of a potential outsourcing service provider you should consider the following factors when you shorten your long list:
  • Software development methodology (Agile, RUP, etc)
  • Typical development team size – average based on previous projects of the vendor
  • Timezone
  • Price

Business-level factors to consider:

  • How does the company differ from its competitors.
  • Duration of support after project is completed.

You should require that your vendor:

  • Has financial security. Your vendor should be able to execute the contract without risk of bankruptcy.
  • Has low employee attrition rate. Company with high attrition rates can spend too much time on passing knowledge if some developers leave the development team so deadlines can be missed.
  • Vendor should be scalable enough to handle your future needs.

You should check honesty of possible vendor:

  • Does it answer: “we have expertise in all technologies or all development methodologies”?
  • Does it answer “yes” to all your questions?
  • Does information from conversation differ from that posted on a website?

And finally, very important, you need to request samples of work similar to what you need. Of course, the vendor can be under NDA so may decline your request for samples, but if the vendor shows something which is similar to what you need and it works fine, then you can for sure add this vendor to your short list.

You need to consider all these things until you have 2-5 vendors in your short list. You may finish with 2 or 5 depending on the amount of time which you can devote to the third phase of vendor selection process.

If your project is simple or you are searching for out-tasking service provider, then you can even finish with a single vendor in your list on this phase.

Selecting the right vendor from the short list

Now begins the phase where you acquire most details from your potential vendors. Standard process is preparing a request for proposal and then analyzing proposals and selecting basing on them.

Request for Proposal (RFP)

First of all, RFP should contain high-level description of your project and your main expectations. This is necessary to allow candidates to provide most appropriate information about their expertise and other information which may play significant role in selection of the final vendor.

You should formulate questions and requests for everything that can affect your project during development. These items can include:

  • Information, biographies of vendor’s top management.
  • CVs of people who will be responsible for each part of the project and each activity: requirements analysis, project management, development, QA.
  • Names of clients and references, phone numbers of clients to call and ask about their experience of work with the service provider you consider. Good advice: do not ask general questions like “did you like working with this vendor?” during discussion with references of the vendor. Ask more precise questions, answers to which will help you to make a decision. Like “will you use this vendor again for this type of project?” or “did the vendor meet the deadlines?”.
  • Certifications that can assure expertise and good business processes of the vendor.
  • Cultural aspects, the cultural standards of the vendor’s country and the standards that are in convention of the company.
  • Business model.
  • Details of software development process.
  • And the most important and least formalizable thing is a list of questions related to your project specifications. Please do not hesitate to spend more time on formulating more detailed questions about your project.

Here‘s one of good links about how to create a good RFP document.

Requirements for software development process of a vendor

For small projects or out-tasking you can go to the next item, but for medium and large project, strong software development process based on methodologies is a requirement of the project success.

Your vendor should perform:

  • Requirements tracking. Vendor should use requirements tracking software to allow you to add or change requirements in the middle of the project without significant affect on the project integrity and deadlines. Without requirements tracking development team finally becomes confused with what it should do and does not produce what is expected.
  • Frequent releases. You should have the possibility to control the process of development, to have feedback from the development team to be able to make corrections and to be sure that the team is on the right way. So to do this you need to see functioning software as frequent as possible. Modern methodologies allow to do that each 1-4 weeks depending on complexity of the project and other specifications, so you need to require your team to do that. It is also known as iterative approach.
  • Milestones. Project should be divided into a set of milestones with preliminarily defined deadlines. This helps you to check progress and schedule by checking results of each milestone and making sure that deadlines are met.
  • Automated unit-testing and optionally, test-driven development. This practice considerably improves the quality of the software being developed, and significantly reduces time spent on testing, as after each change there is no need to perform manual testing, just run set of previously developed unit tests against new version of software.
  • Continuous communication and progress tracking. The vendor should allow you to perform continuous communication with the development team and you should really perform it. Absence of communication implies bad transparency and misunderstandings which can result in unusable software. Daily progress tracking by requiring daily reports from the team allows detecting problems in the progress on the earliest stage and make corrections in requirements or management to avoid much larger problems on the later stages of the project.

What to check for a vendor

  • You may search for Internet forums and other Internet sources for information about vendor’s work.
  • If the vendor supports various types of communication such as email, IM, VoIP (Skype, Yahoo Messenger, etc), LiveMeeting and telephone. Communication is a very significant point in outsourcing, so before starting relationship you need to be sure you will be able to communicate effectively.
  • Contract. While checking the contract please pay attention to conflict resolution terms. You may be interested if the contract specifies that courts for conflict resolution should be located in US to allow you to use US legislation. Contract should include Non-Disclosure Agreement terms.

How to start a relationship. Test project

When you have finally made up your choice and have one vendor in your list, and if you are still not sure if you can trust your chosen vendor, you can start relationship with a simple test project. You can specify simple basic requirements which are on the same line with your long-term idea and give simple task to the vendor and then see how it works.

The vendor should be on-time and if he meets the deadline and scope of the test task, you can begin a serious relation with this vendor.

Source: Equelli
 
 

    Popular posts

    Related posts