For any project, it’s important to choose a contractor who can achieve the given goals, who can create a specific set of features within a set timeframe and budget. If the contractor is chosen incorrectly, the goals may not be achieved, and the customer will lose valuable time and money.
When a team lacks individual specialists, or doesn’t have a development department at all, a choice arises: hire freelancers or contact an IT company. Each of the options has its own pros and cons, and each is suitable for different tasks.
Contractor selection criteria
1. Cost and Quality
Finding a freelancer for a specific task is cheaper than working with the same specialist through an IT company, where there is always built-in overhead. But the difference is small, usually 25%-35%. If we are talking about highly qualified freelancers or «stars» with rare skills — these are now considered specialists in VR/AR or data science — then the difference can be even smaller, in the range of 10%-15%.
At the same time, the quality of the code of a programmer from a company is often better than that of a freelancer. In a company, one developer writes a part of the program, three more do a code review, testers check the functionality, and while this is happening the next part is being prepared. A freelancer only manages to write code during the same period.
Some freelancers do test their code themselves, but this extends the project timeline: you can’t write and test at the same time. And the quality of testing one’s own code is always lower: for a good test you need a fresh, clean eye.
A customer works with a freelancer directly, personally with the contractor. An IT company always has a mediator — a project manager. Often the customer doesn’t even know who exactly is working on his project. This can be a problem: task instructions can get distorted or miscommunicated on the way to a person actually performing a specific task.
However, it can still be easier to work through a manager. Often, IT people are introverts, communication not being their greatest strength. A manager helps understanding of a task for both the customer and the performer. An experienced manager asks the right questions to formulate a clear technical description, and in the process of work he explains to the customer what the developers are doing.
A developer in an IT company is focused on his direct responsibilities. He or she writes the code, the rest is the manager’s job. A freelancer is their own manager: they deal with contracts, accounting, must spend time negotiating, and if the client is an English speaker — which is often the case — the freelancer must also be fluent in English. Obviously, when the freelancer is busy with administrative work, the project isn’t moving forward.
Growing startups and teams often look to freelance to find a good developer, and they will hire the freelancer if the freelancer is okay with giving up the freedom of self-employment. It’s difficult to hire a specialist from another IT company. And really there is no need: you can always agree with the other company on long-term outsourcing.
Lack of guarantees is the main problem with freelancing. A performer may disappear at the most inopportune moment: they can get sick, move to another project, or just choose to communicating. Even if an agreement has been signed, it’s not so easy to get money returned for unfulfilled obligations. Few people will sue for relatively small amounts of money, especially when the freelancer resides in another country: there can be significant legal costs. In this sense, freelance exchanges are preferable: they protect the interests of customers. However, they won’t save you from the careless and irresponsible. If a freelancer disappears with all the developments of a project, you’ll be forced to start all over again.
In this way, we once saved the project of a small American insurance company. Initially, two freelancers worked on the project: one was engaged on the backend, the second on the frontend. The backend freelancer decided to leave freelancing to join a large IT company, and with the freelancer, knowledge regarding the structure and functionality of the project disappeared. Additionally, the documentation was poorly written with unclear descriptions. We had to learn and comprehend someone else’s code, and then re-describe the project.
In an IT company, if the main performer on a project gets sick, goes on vacation, or quits, the company will immediately find a replacement for the performer. And before leaving, the performer will transfer all affairs to a new performer, with the customer possibly not even noticing the changes. In addition, an IT company is a legal entity. It will not disappear, and will be fully responsible for all obligations. OrbitSoft, for example, has representative offices in Russia and America, and clients all over the world find it convenient to work with us.
4. Scope of services and experience
A company has a lot of developers. Cooperating even with just one of them, a customer gets the joint experience of all these people. They have joint developments, successfully completed projects, their own products from the company, and they have colleagues and related specialists who can be asked for advice or who can be involved in solving problems. As a result, development takes less time: a contractor has ready-made solutions, and quickly solves problems that arise.
For example, when an American content provider approached us to develop a website, we took as a basis the developments of our own successful POSiFLORA project: management of users, roles, display of statistics, tables, etc. This saved the project significant time and money.
Of course, freelancers also have their own work, for example, their own libraries. But 30 developers in a company certainly have more of them than one independent freelancer.
If a freelancer has a problem, he has no one to ask for advice. He is forced to look for an answer on forums, take training courses, read tutorials, etc., all of which takes a lot of time.
IT companies usually offer the full development cycle: they have front-end and back-end programmers, testers, managers, and UX and web designers on their staff. A client can implement an idea of any scale, or start small and then easily expand. A freelancer is always one person, a narrow specialist. For example, if this is a mobile developer, and the customer asks him to fix something on the server side at the same time, he will not be able to help.
For large, complex projects, one freelancer may not be able to cope: you need a team. Even when creating a mobile application, one developer isn’t enough: you need at least a designer, and if the application has, for example, a photo filter for image processing, you will need another back-end specialist. If you hire freelancers, the risks for the project increase: the larger the team, the more difficult it is to manage, and the higher the chances that one of the performers will let you down.
For example, the author of the POSiFLORA sales accounting system for florists tried for a year and a half to implement his idea with a team of three freelancers, but the system never worked. After that, he agreed to cooperate with OrbitSoft. Together we created a high-quality, useful product, which is already used by more than 8500 customers.
When is it worth hiring a freelancer, and when an IT company?
|Complexity of the project||— Freelancer — an option if there is a team for the project, but it needs to be strengthened by a specific specialist|
— If the project is typical, a freelancer can handle it using ready-made solutions: WordPress for a website, or Magento for an online store
|— Large, complex projects can only be carried out by a company|
— For the development of specialized products, for example, an advertising system, universal solutions cannot be found. An experienced team is needed, preferably with its own developments in this area.
|Budget||Small companies are interested in the issue of cost. They are ready to spend more time and effort, but work with freelancers for the lower costs.||Medium and large companies often have already had negative experiences with freelancers, and prefer to pay a little bit more for a company’s reliability.|
|Search for specialists in-country||Startups often look for freelancers in order to later invite the most accomplished to join their team.|
|Clarity of the task||If there is a specific task for a narrow specialist, you can hire a freelancer.||If the task isn’t completely clear to the customer: there is a goal, but there is no detailed technical specification, and there is no understanding of how this should work. It’s better to contact a company, where a manager will ask the right questions, and specialists of different profiles will give their opinion and help in choosing the optimal solution for the final tasks|
|Need for further service||A freelancer who once wrote code took on another project||A company offers further support|
|Additional Resources||A company can help with entering a domestic market in their country. For example, OrbitSoft can create a product that is adapted for the Russian market, because we know the market, the local realities, and we have resources.|
Conversely, we can help Russian businesses enter foreign markets, as in the case of POSiFLORA