HOW TO SELECT A SOFTWARE DEVELOPMENT SERVICE PROVIDER: PROCESS TIPS
What’s your approach?
Outsourcing entrepreneurs and firms vary greatly in the way they manage the sourcing process. Some progress through it speedily and are fairly spontaneous in their approach. Others take their time and use a systematic process to specify their needs, identify potential service providers, filter through the candidates and eventually select the vendor to deliver on their projects. Some are more likely to rely on their gut feelings and intuition, while others seem to stay emotionally detached and use their brain rather than their heart in the process. Those with a more mature sourcing process are more likely to identify and select the right service provider. Many outsourcing failures have their roots in a badly managed sourcing process. If you agree with the opinion, what are some of the practices and process steps you might apply to increase the likelihood of finding the right service provider? What follows is a brief account of what the more demanding outsourcers do while prospecting for vendors. Hopefully, the text will offer some food for thought for those who are about to outsource and are in the process of looking for provider(s). Note that you do not need advanced software tools to implement the process below. A simple excel spreadsheet will often do. If you prefer a tool, you might google for one and find some such aids as the Website Vendor Selection Tool or SupplierSelect, to name just two examples.
1) Compile a list of criteria your vendor should meet
Before you start looking for a vendor, think through your project and establish what is to be done. Divide the scope so that it is clear what is to be delivered by the vendor vs. what is to be delivered in-house. Having defined the scope of work for the service provider, you can now compile a list of criteria your vendor should meet. The selection criteria one uses should directly relate to the characteristics of your project as well as to the tasks, duties and responsibilities to be undertaken by the vendor. Some such criteria will be very specific; however, do not waste time reinventing the wheel. Instead, search for and utilize the lists compiled by others. Just modify them to fit the specifics of your project. You may as well use some of the criteria from the list presented in the Post Scriptum to this blog post. It is a very good idea to specify WHO is to meet the specific criteria you choose – is it the vendor’s company as a whole, the team which would deliver the service or a specific individualat the firm, e.g. the vendor’s Project Manager / Team Lead? Financial stability, for instance, is naturally connected with the company. As regards accumulated experience, however, you would be able to make a better decision knowing what the specific team / individuals have delivered so far. An overall company portfolio may not paint a complete picture of what the specific team offered to you have contributed to the vendor’s track record. As a rule of thumb – by default – assume you recruit a specific team / specific individuals and rate them rather than the firm. Only when a criterion clearly relates to the organization should you assess the vendor rather than the team. Accordingly, while gathering information in later stages, be specific and ask for information on the team and the individuals to be involved when appropriate. For the sake of convenience, the criteria are sometimes grouped into broader categories, e.g. technology, business, communication, etc. The more criteria you are going to use, the bigger the benefit you gain from the practice.
Output: a set of (categorized) vendor assessment criteria
2) Weight the criteria selected
Projects differ in character. Some are, for example, small and may easily be delivered by a freelancer rather than a team. On top of that, those who outsource differ in their specific requirements, e.g. a bootstrapping entrepreneur views price differently than an existing SME with a consistent revenue stream and a budget set aside for the project. Accordingly, some criteria matter more than others. It is time to capture that fact in your selection tool; weight the criteria you selected in the previous stage. If you divide the criteria into categories, you may weight the whole groups before you move on to modify the weights for specific criteria within each category. In other words, you may choose to weight both the groups and the individual criteria within each group. Some of the criteria, i.e., the critical ones, should be marked as such. For example, “Expertise / experience in your technology stack (programming languages, frameworks, etc.).” A candidate vendor who fails to meet a critical criterion should be automatically eliminated, however high they score on the other criteria.
Output: a set of weighted vendor selection criteria
3) Compile a vendor list
Now that you, hopefully, know quite well what/who you are looking for, create a list of outsourcing vendors who are likely to meet the set of criteria you have chosen. Cast your net widely, but sift through the findings and ignore the vendors who clearly fail to meet the key selection criteria. Where to find the vendors?
your network may know companies to recommend,
organic google search seems to be the preferred tactic,
you may wish to use some technology-specific catalogues and listings. For example, looking for a Ruby on Rails software development house, you may find vendors at:
you may also arrive at the vendor indirectly by identifying (clusters of) expert individuals first; some examples of the sites which may help in this respect are:
Having completed the search, you should have a solid list of candidates for further scrutiny.
Output: a list of potential service providers
4) Gather and verify the information about the vendors listed
With the criteria and potential vendors listed, it is now time to gather and verify information on the vendors. So, do some digging and learn more about the candidates selected so far. You can start off by asking the service providers to deliver the information needed as well as to rate themselves, i.e., their company / team against the criteria you find important. Convert the (key) criteria into a list of specific questions and e-mail them to all the candidates for answers. (A list of criteria-based questions can be found at the end of this article.) On the whole, the longer the list of questions you send, the lower the response rate, so make sure you do not cross the point beyond which you receive too few responses.
Additionally, you may augment your initial search by using the information available online, e.g. you can check what the vendor say about themselves in their marketing collateral, what the social media contents connected with the vendor are like, etc. In further steps you will attempt to verify such information; you will actually expect the vendors themselves to substantiate the claims they make – and rightly so! The burden of proof lies upon them. You will also want to verify if others, namely the vendor’s clients, have the same story to tell – use references. Again, some of the key questions – by no means all of them – may be selected for reference sources to provide feedback on.
Output: a list of potential service providers with information from the initial search
5) Use the weighted criteria matrix to assess the vendors and shorten the vendor list
It is time now to review the information gathered and use your initial findings to assess the service providers’ suitability to deliver the service on you project. Assess individual vendors, as well as the teams they are ready to dedicate – against the pre-selected criteria, compare their weighted scores and decide which vendors to progress with. Ultimately, you should end up with a shorter list of the most promising candidates meant for more detailed scrutiny.
Output: a shortened list of potential service providers
6) Gather more information and re-evaluate the remaining candidates to arrive at a shortlist
Your initial search and assessment have hopefully shortened the list. With a more easily manageable list of candidates, move on to interviews to gather more information and/or verify what you have found out so far. For instance, suppose the service provider claim their language skills are excellent – they now have an opportunity to prove it live. You are not just buying an abstract service from a company or, at least, you will be much better off if you go beyond such a perspective. You are recruiting a specific individual or a team of specific individuals to serve on your project – your crew. Thus interview THE individual(s) as well as THE reference sources related to the specific team and their track record. The vendor’s company en masse may have impressive experience in your area, a rich portfolio of projects implemented and clients ready to recommend. The question is what has been your team’s contribution to it. It is also a good time to ask such a team for code samples and application/system walk-throughs. With the new information at hand, re-assess the remaining vendors and further shorten the list or select the best candidate to deliver the service (if you do not intend to use the steps below).
Output: a list of 2-3 shortlisted vendors / the vendor selected
7) Visit the shortlisted service providers
When the project is mission-critical, it is highly advisable to consider an on-site visit to gather and verify even more information on the shortlisted candidates / the vendor selected. It is obviously much easier when you intend to collaborate with an onshore or nearshore service provider, and it is much more convenient when the shortlisted candidates are located in the same geographical region / country. With the additional information gathered during the visit you can re-evaluate the remaining candidates and select the most promising vendor. You may still want to keep in touch with the other shortlisted providers though. If – for whatever reason – you fail to complete negotiations with the top candidate, you will have the others to go back to.
Output: the vendor selected
8) Use a pilot project
Selleo’s prospects / clients vary greatly with reference to the practice. Those from Germany, for example, have applied the practice invariably. Clients from other geographic locations have been less consistent. Whenever possible, I strongly recommend the practice as it provides you with an invaluable opportunity to test the vendor’s ability to deliver on their promises. The development team can now prove many of the claims they made in the previous stages of the sales process. A pilot project also helps to “smooth things out” / “get things up and running” (e.g. communication, collaboration practices, etc.) before the actual work on the project starts rather than during the process. Should the team fail to meet the expectations created earlier, you have a list of other shortlisted candidates to return to.
Output: the vendor selected
If at any stage you are dissatisfied with the results, i.e., you feel none of the identified candidates seems able to deliver successfully on your project, do not hesitate to go back and broaden your search at point 3. If you become satisfied with mediocre findings you may have to accept mediocre service delivery.
As you can see there is quite a lot of things to be done. You can manage the process yourself or use a sourcing agent / broker to support you in the process. Whichever way you choose, the process requires resources: time and/or money – it comes at a very tangible cost. What are the benefits then? You significantly reduce the risks involved in outsourcing your software development project. You increase the likelihood of selecting and building a relationship with the vendor who is actually able to deliver good service on your project. All in all, the cost may well be considered an investment which pays off later on when you build your application. Many outsourcing entrepreneurs / firms would be better off if they had decided to account for the upfront investment.
Post Scriptum 1 I would like to express my gratitude to Daniel Young from Dragon Sourcing for all the insights and useful tips he offered.
Post Scriptum 2 I wrote the article and compiled the lists of criteria / questions below with the outsourcing entrepreneur / firm in mind. Still, I guess, the contents are equally important for service providers, development teams or even freelancers. What are your answers to the questions? I mean, the answers you provide in the daily practice of service delivery.
Criteria to consider:
Expertise / experience in your technology stack (programming languages, frameworks, etc.) Expertise / experience in your domain / industry Experience in your project size Experience in your project / application type Track record of serving similar clients Project-related thought leadership exhibited in conference presentations, articles, white papers, blog posts, etc. Certifications (ISO, CMMI, etc.) Academic backgrounds
Engagement model (body leasing, staff augmentation, dedicated teams) Software development methodology Level of process maturity Ability to convert high-level requirements into tech specs Technical specification practices and tools Source code management practices Coding standards Project documentation practices Software development, project management and collaboration tools Software development and project metrics tracked QA and testing methodology, policies, processes and tools used
Size of the vendor Size of the team Team current velocity / capacity Team potential velocity / capacity Team full-velocity ramp-up time Team composition (Team Lead, Developers, Graphic Designers, etc.) Team members’ experience levels (senior / junior staff ratio) Client allowed to approve staff to be assigned Team management practices Team / Project Lead’s experience Team continuity – common track record and stability HR strategy and management Personnel turnover / attrition rate Staff scaling ability HRM – recruitment practices HRM – training and knowledge transfer practices HRM – staff motivation and incentives Location Working hours / workshift overlap Weekend / national holiday service delivery Language / communication skills Cultural fit / affinity Easy access for on-site visits (e.g. airport) On-site service delivery Length of stay for on-site service delivery Vendor’s access to skilled labor pool (universities, other businesses)
Relative level of price Payment terms – fixed-price vs. time-and-material Payment terms – average rate vs. differentiated rates for resources Pricing transparency – time accounting practices Pricing stability Local market salary levels and trends Vendor’s financial stability
Satisfactory acceptance and warranty terms and conditions Satisfactory Intellectual Property terms and conditions Technical infrastructure Security
Questions to consider:
What is the team’s experience in the following technology stack … ? What other similar projects/applications have the team worked on before? What size projects have the team worked on so far? What type of clients have the team served? / Can I use the clients as reference sources? Do the team members exhibit project-related thought leadership in conference presentations, articles, white papers, blog posts, etc.? Do the team possess ISO / CMMI / … certificates? What is the team members’ academic backgrounds?
What is the vendor’s engagement model? (e.g., body leasing, staff augmentation, dedicated teams) What software development methodology does the team work with? What is the level of process maturity offered? Is the team able to convert high-level requirements into lower-level tech specs? What are the technical specification practices and tools the team apply? What are the source code management practices used? What are the coding standards applied? What are the project documentation practices used? What are the software development, project management and collaboration tools used? What software development and project metrics do the team track on their projects? What are the QA and testing methodology, policies, processes and tools used?
What is the size of the vendor’s company? What is the size of the team assigned? What is the team’s current availability / velocity / capacity? What is the team’s maximum potential availability / velocity / capacity? What is the team’s full-velocity ramp-up time? What other projects is the team currently involved with? What other projects is the team going to be involved with while working on the project? What is the team’s composition? (e.g.Team Lead, Developers, Graphic Designers, etc.) Who are the team members? What are their profiles? What are the team members’ experience levels? What is the senior / junior staff ratio on the team? Is the client allowed to approve of the staff to be assigned on the project? What are the team management practices? What is the Team / Project Lead’s experience? What is the team’s common track record? How long have they been working together? What is the personnel turnover / attrition rate – both for the vendor and the team assigned? What is the vendor’s staff scaling ability? What are the vendor’s recruitment practices? How do they find and hire new staff? What are the vendor’s training and knowledge transfer practices? How does the vendor motivate / incentivise their staff? Location What are the working hours offered for synchronous collaboration? What is the workshift overlap, if I work … ? Do the team ensure service delivery at weekends / during (their) national holidays? How are the (key) team members’ language and communication skills? Is there a cultural fit / affinity? Where is the vendor located? Are the staff members physically collocated? / Are the staff members geographically dispersed? Does the location ensure easy access for on-site visits (e.g. airport)? Does the team deliver their service on-site? How often / how long are they ready to deliver their service on-site? What skilled labor pool (universities, other businesses) does the vendor have access to?
What is the relative level of price offered by the vendor? What are the payment terms offered? (e.g. fixed-price vs. time-and-material-basis engagements) Does the vendor use an average rate / differentiated rates for specific types of resources? What level of pricing transparency does the vendor offer? What are the time accounting practices used? How stable are the prices offered? How often / on what conditions does the vendor change their price? What are the local market salary levels and trends? How stable is the vendor financially?
What are the acceptance and warranty terms and conditions offered? What are the Intellectual Property terms and conditions offered? What are the standard contracts / agreements / SOWs the vendor offers to sign? What technical infrastructure does the vendor provide for the projects implemented? What security policies and measures does the vendor apply?