Finding a Reliable Software Development Company
Finding the right software development partner is often a challenge in the sea of local and offshore contractors. The sheer number of vendors often turns a seemingly simple task into a long and arduous process.
Before you start
What most consultants agree on is that the basic requirements for the project should be outlined before the vendor search process starts. A project holder should define the project whether it’s a simple development task or research heavy unique IT solution, and determine the scope of work and the level of involvement expected from a software development partner.
Having said that, companies often have little idea of what they want to deliver to their users. In such case, the vagueness of requirements points at the need to find a development partner who can conduct research and clarify the requirements. Either way, outlining the needs of the project often gives the project holder a clear indication of where the search process should start.
For the purpose of giving a full picture of the process, we’re describing every step in detail. The article follows a logical sequence of finding a vendor and includes specific recommendations pertaining to the search of an IT contractor. You might be willing to skip some of the steps depending on where you are in the process.
Creating a long list of contractors
The first stage of the process is to create a list of contractors. This list is called a long list and it includes every contractor you believe might have the potential to become your software partner. There are several ways to find contractors to include in the long list:
- Use google search
- Ask for recommendations
- Include contractors you previously worked with
The key to forming a quality long list through Google Search is to use highly specific search terms. Even with seemingly general projects, it’s advisable to specify the industry, type of software, or business area. The examples include “eLearning software development”, and “custom software development for marketing analytics”.
The business area is one area of specialization, qualitative characteristics that point at the nature of software are another. If you have a unique idea that you want to develop into a software product look for providers who have the experience developing software from the ground up, starting from gathering and clarifying of the problem statement. These can often be found under “Custom software development for startups” and “original software project development” search results.
Here are the criteria that can be useful in making a long list. These criteria can be easily assessed at the initial contact or by checking the contractor’s website:
Company’s foundation year
important criteria that point at how long the company has been on the market. The criteria serve as an indication of stability, willingness to work through the crisis, the depth of expertise, and ability to maintain and support the client base long after the project is finished. Mind that a domain registration date might give a more accurate and truthful picture compared to what’s written on the website.
is a factor that often defines how well the project will be handled. For companies with less than 10 team members executing large or complex projects might be a challenge. Considering that software developers rarely cater to one client, your project might start experiencing a significant lack of human resources once other projects become a priority for your software contractor.
Number of past and current clients
is another factor to keep in mind. Usually, less than 10 clients signal instability or lack of expertise. These contractors might be at risk of getting out of business due to the inability to find clients.
Experience working with your country.
Every country is different when it comes to business processes, communication, and approach to problem-solving. Whether you’re looking for a fresh perspective onto a problem statement, want to receive communication during the daylight, or simply require a go-to local representative, it’s best to clarify expectations and check how the contractor handled cultural differences in the past.
By the end of this stage, you’ll have a long list ready.
Working through the long list toward the shortlist
Once your long list is ready it’s time to apply some more criteria and shorten the list. Here are the criteria to apply:
Positioning defines how the company wants to be perceived by the market. Positioning is also a filter that a software developer applies to client requests. Software contractors who are ready to take any job tend to have a very surface experience in different fields of software development, which prevents them from creating quality products. Look for contractors whose positioning fits your project needs, and avoid those who have unclear or no positioning at all.
Details and facts
General descriptions unsupported by details or facts should raise concerns. Facts point to the validity of the presented information, whether it is the information on the software development partner’s expertise or the description of projects already executed.
The overall fit
This is criterion many people overlook, but you may want to exclude the development firms that you personally find untrustworthy, unable to take on the kind of project you have, or don’t fit your idea of your ideal software development partner.
are a good indication of the company’s success. References prove that previous clients were happy with their choice of a contractor. On the other hand, having no references might point at consistently failed projects and negative references are a sign to stay away from this contractor.
Once you assess each contractor in the long list by this criteria, you’ll have a short list ready.
You verify the contractors by contacting them directly. At this stage, your goal is to collect more information about the chosen contractors. Here you want to request the following information:
Standard work process description
This is the most important part of the process, as the work processes are often standard and applied to every single project including yours. See how comfortable you are with the standard work process and ask if alterations are possible.
The things to pay attention to are:
- How the product release process in organized
- How change requests are handled
- What will be done to ensure project quality
The standard work process means that it was tested and proven to be effective. Yet, it’s a common practice among established software developers to inquire about specific project’s needs and requirements before the optimal work process can be offered. Software firms that insist on signing a contract before the work process is thoroughly discussed are best to be avoided.
If the contractor built and released similar projects in the past that’s a huge plus. In the case of unique software solutions, you want to look for expertise in initial research and problem clarification, as well as the experience of creating specific functionality applicable to your solution.
The cost of an hour
The billing practices vary from country to country and from one contractor to another. There is no clear guidance here, but the cost per hour should fall within your expectations and match project requirements.
References are often posted on a contractor’s website. Taking the time to check and follow up on the references will provide additional insights. Verify the references and ask for details of the cooperation.
The speed and quality of communication
A lot can be inferred about the contractor’s communication habits at the very early stage. The general business practice is to allow for 2 days to receive an email response. Anything above that will likely lead to communication bottlenecks in the course of the project.
At this point, you will have 1-2 contractors left on the list.
Here your goal is to get to know the software company on a deeper level. This is the stage where you check if the company can meet your specific project requirements.
The key to the project success is the right people.
To find the best match of people talent to your project requirements, prepare a short description of the project’s business area, goals, limitations, and size and ask each potential contractor to provide resumes of the key people who would work on the project as if it starts immediately.
Reading the resumes can give a lot of information about the key members’ expertise, level of proficiency in programming languages and technology solutions, and skills used in the previous projects. Impressive set of skills should be supported by concrete project experience. As you scan through resumes, see how those skills and experience can be applied to your project.
Direct communication with the key team members can help you determine if the communication style fits your needs and whether the contractor can receive and act on feedback.
Project analysis is the phase that precedes everything else and the goal of this stage is to gather and analyze project requirements. It’s recommended to sign a short fixed-price agreement for the project analysis stage.
Having the contractor to arrange the process and guide you is a good way to test the developer. Give out the information freely, but leave the project management and requirements gathering part to the contractor.
Here are some things to look out for during the project analysis phase:
- If they ask for the business goals or just request formal requirements
- If they document all the information or something gets lost
- If they ask for the project assumptions and restrictions
Separately, it’s important to check if the final document will include non-functional requirements such as:
- ability to integrate with existing infrastructure
- ability to work under specific load
- security requirements
- supported platforms
The final document helps you determine if the software developer is the right fit. If you find it hard to understand or make sense of the document this might be a sign of having to look for another software contractor.
If, however, this phase goes well, you can proceed to the next step and ask for the estimation of budget and project timeline.
Proof of concept
Even though you might like the result of the project analysis phase it’s still not enough of a reason to sign a contract for the whole project. Proof of concept is an additional step to make sure the contractor can deliver according to project requirements. Here is why this step is needed:
- Estimation at this stage is not completely accurate
- Even when the company is recommended by others it does not mean it will fit your specific project
- Sometimes different teams within one contractor have a different professional level, so it is very important to test the team
The points above are the reason to start with a proof of concept – a relatively small fixed-price project with clear boundaries and measurable goals.
The PoC requirements need to be defined beforehand. This can be done by you or you can ask the selected contractor to prepare the requirements for you to review. Once the requirements are all in one place, a contract for the PoC is signed.
PoC is a larger scope stage of the project than the project analysis stage and it involves a different type of tasks, so it gives you a better idea of how the contractor will perform during the project. Here are the things to look out for at this stage:
how fast they respond, how good they handle change requests, how well they understand tasks formulated on a business level.
provoke a small conflict and see how they will handle it.
check if the contractor has your business goals in mind as opposed to formal task execution.
the quality of the product should match what was agreed on. Steer clear of contractors who promise to fix the product at later stages of the project.
can they follow their own estimations and timelines, can they release new product versions in a predictable manner.
Planned vs real expenses
check if the actual expenses match expectations and fall within the budget set aside for the entire project.
Sign the contract
If you follow all the steps outlined above there is a good chance you will end up working with the contractor that best suits your business goals and project needs.
At the stage of signing the contract make sure you include the following point:
The key persons of the team cannot be replaced without your approval. This point guarantees that the best people stay on your project instead of being moved by the contractor to other jobs.
Finding any contractor, including the one in the IT industry, is a pretty straightforward process. You make the long list, shorten it and then apply additional criteria to identify the one firm to sign the contract with. The task gets trickier as you progress through the search and face the dilemma of choosing one of the 2 best matches. In the software industry, fraught with uncertainty, unclear requirements, and complex projects, the final choice is often impossible to make without additional steps such as a short-term agreement for the requirements gathering phase and a proof of concept. Aside from these crucial steps, there are also three key principles to apply to the search process:
Be specific about what you want
Outline project requirements early in the process, even if they’re still unclear or vague. Preliminary requirements are the first necessary step to help you sort and find potentially suitable contractors.
Look for the best fit to project needs
If you’re aiming to find the best contractor in software development you’re setting yourself up for a failure. Software firms have different areas of specialization, that can vary from industry specialization to concrete technology knowledge and product expertise. Aim to find the best fit to project needs, not the best contractor. For the same reason, don’t always rely on previous contractors as new projects might be out of their area of expertise.
Start small and expand from there
Just like software development includes a testing phase, the search process wouldn’t be efficient without taking the contractor through some tests. The short-fixed price agreement and proof of concept are intended to affirm or challenge your convictions about a certain software developer. While failure at these stages doesn’t necessarily mean the contractor isn’t skilled enough technology-wise, they might simply be a bad match for your project. Better find that out early than when the project is in full swing.