Choosing a company to entrust your software development project to is a responsible task. For large companies whose tender procedures have long been worked out and formalized, everything is clear due to the availability of relevant instructions. However, for those who are faced with the need to select a contractor for their IT project for the first time, the procedure can seem complicated and intimidating.
That’s why we’ve created a step-by-step guide on how to choose a reliable partner for your software development project.
Step 1: Define your IT project needs and requirements
Trite, but true – you need to start from the beginning. Therefore, first you need to analyze the needs of your organization, the tasks and requirements for the necessary software, as well as the requirements and preferences for the terms of cooperation. Figuratively speaking, you should not leave the house without knowing where and how to go.
Some of the tasks that need to be completed at this stage are listed below:
Determine the general goals and objectives for which software is needed
Determine at least the basic functionality of the solution or its individual modules
Decide on the general timing of the start of the project, highlight the main milestones for the project
In the case when the project is related to the development or restructuring of an existing information system, it is important to clarify the technology stack involved
Plan an estimated project budget
Thus, the result of the first step is the preparation of the draft specification and terms of reference, as well as a request for quotations and proposals.
Step 2: Send out the Terms of Reference and Request for Quotations
The most interesting point that arises at this stage is to whom to carry out the mailing? Therefore, the main task here is to find companies that develop information systems of the required type.
In general, there are several ways to find potential contractors for your IT project:
Search on the Internet.
So, as a request, you can specify such phrases as “order software development”, “custom software development”, etc. You can also replace the general wording “software” with the name of the required information system. For example, if you need a CRM system, you can specify in the request “development of a CRM system to order.”
Placement of the project on freelance exchanges and specialized sites.
Depending on the site, you either create and publish your project, or contact directly the performers who specialize in software development in the area of interest to you.
Search in electronic directories.
As a rule, searching in electronic directories is especially relevant for those who want to find a company located in a certain city – often in the city where the customer’s organization is located. (Although it should be noted that software development is a service that does not require the physical location of the customer and the contractor to match.) Here, the most famous option is, for example, the 2GIS reference system. Enter the phrase “software development” into the search engine, and the system will return a list of companies of the required specialization, registered in this reference system.
Having determined for yourself a list of companies as a first approximation, send them the pre-prepared terms of reference and request for prices and proposals. In the phrases most common on sites, leave your application and expect responses 😉.
Step 3. Conduct an analysis of the companies included in the list of potential executors
Make a list of companies that responded to your request and analyze them. Some of the information needed for the analysis can be extracted directly from the proposals that companies sent in response to your request. In addition, you can contact the contact persons of the companies and ask clarifying questions or request a portfolio (as a rule, the contact person and methods of communication will be indicated in the proposal).
Here are some points to pay attention to:
Technologies that the company uses or offers for your project (if it is of fundamental importance)
Expertise in the required target area
The number of completed projects relevant to your project (indirectly shows, among other things, the level of expertise)
Average (or maximum) project duration (can show how ready the team is for long-term projects)
The number of developers and the possibility of increasing the team assigned to the project (if necessary)
In addition, analyze the vision of candidates for the implementation of your project and the solutions they can offer.
Step 4: Analyze your bids
In the previous step, you will most likely shortlist no more than five or six companies worthy of further consideration. Now it’s time to analyze their proposals from a financial point of view.
Here are some tips on what to consider when analyzing and comparing proposals received:
If you plan to work under a fixed price contract, pay attention first to the declared man-hours and only then to the cost of the project. Of course, rates may differ from company to company. In contrast, man-hours provide an excellent basis for comparison and show a company’s understanding of the scope of a project.
Beware of too low rates and prices (relevant both for a contract with a fixed price and for cooperation on an hourly basis). Of course, inflated project costs are detrimental to your organization’s budget. However, underestimating the project can cause even more harm, as it will most likely lead to additional costs that are not currently taken into account. Of the negative aspects of too low rates, one can also indicate the risks that junior level developers who do not have much experience and expertise will be involved in the work on the project. And, as a result, the low quality of project execution in terms of architecture and code being built, the number of errors and improvements, etc.
Analyze the terms that the company offers for your project. Compare them with each other and with your expectations.
Naturally, there are always certain budgetary constraints. And there are risks associated with choosing low rates. Therefore, the result achieved at this stage will be to cut off candidates whose bids do not meet the existing budget constraints, as well as candidates offering suspiciously low prices.
Step 5. Analyze the details of cooperation
Yes, cost matters. However, there are other important aspects as well. For example, in software development, communication, technical support, and project control play an important role.
Here are some points that should be touched upon and analyzed during the negotiations:
Availability guarantees (especially with significant time zone differences)
Implemented Project Management Practices
Experience in integration with other teams (if necessary)
Communications roadmap (e.g. communication channels for engagement, do they have a practice of weekly calls, providing daily reports, etc.)
At the end of this stage, most likely, your list will be reduced to 2-3 companies that you can rank in descending order of priority (probability of being chosen as your technology partner.
Step 6: Trust but Verify
Now you have come close to choosing a company to which you are going to entrust your project – you have compiled a prioritized list of companies that are potential executors of your project. The company that tops this list is the most likely counterparty.
While this company’s portfolio is impressive, the offering matches your goals and budgetary constraints, and the company itself has almost earned your trust in terms of communication productivity, don’t neglect testing their expertise and programming skills. At the same time, it is important that the team that will directly work on your project take part in testing.
For example, give them a small pilot project or a test task. Or at least issue one of the issues that are posted on GitHub and are relevant to your project or the technologies involved.
Summing up, we can say that finding a reliable IT outsourcing partner is not the highest mathematics, but it is not an easy task either. Analyze, calculate the economy, keep the price / quality balance. And, of course, test.