The classic question that companies ask themselves is whether to turn to a software house/system integrator or whether to have their own team of programmers, hired as employees.
In short, my answer is neither way, if it is a digital product or service that represents your company’s core business.
Or rather, even if you have not considered it or did not know it, there is a third way and I will explain what it is, why you have to choose it, and when.
But let’s take a step back and start from the context.
Outsourcing OR Inhouse Team
One of the main problems of companies that want to create and grow a digital product or service is to find programmers who will take care of software development and platform maintenance.
Another fundamental, equally important, the problem is also that of deciding the form of collaboration/recruitment.
Historically, the dilemma is whether to develop everything inside the home or whether to outsource to a more or less specialized supplier, which brings us to the title of this article.
The outsourced development allows companies to obtain the skills necessary to obtain a quality product and reduce both costs, avoiding hiring people who may prove invalid, and the business risk in itself of having employees.
However, there are also risks, and many wonders which path to take between the two alternatives, but almost always remain with the fear of making mistakes in both cases.
In many cases, making the wrong decision can be very expensive, both because of the high initial costs and the unsatisfactory return on investment.
On the one hand, IT outsourcing has become a global phenomenon and has grown more and more in recent years, with many companies deciding to outsource their software projects to outsourcing companies.
Among the various factors behind this trend are the high costs of the hired talents, difficult deadlines, difficulties in finding people with the necessary skills and experience, high search and selection costs, the poor ability of most companies to attract better programmers, etc.
Furthermore, with outsourcing, companies can focus on their main activities and delegate those activities that do not require constant live interaction.
For clarity, from the outsourcing discourse I remove offshoring and near-shoring, i.e. entrusting the development to more or less distant foreign companies (typically Indian or from Eastern countries) that over and over again have proven to not work well enough and in the end cost more than the local choices, also compared to the attractiveness of the often low rates.
I also remove pure body-rental, which is not outsourced if it is not carried out with certain criteria that I will explain (but which automatically do not make it body-rental as the typical US-based company imagines it).
Bringing your internal team together and making it work well requires great effort, patience, and a well-defined long-term vision if you want to avoid extremely expensive mistakes.
On the other hand, having your own team can give you a greater sense of control, ensuring ownership of what you are building, and in some cases, it is a value in itself.
For example, when a company is looking for financing rounds from external investors, having its own CTO (or at least a technical manager) and at least a minimum of internal teams has its weight in the evaluation phase.
Let’s say that if it is a question of developing code for an application or an instrumental platform to the business that is not the business itself (e.g. a CRM or the CMS of the company website), the best way is practically always to entrust the entire development and subsequent maintenance in outsourcing to specialized companies.
The important thing, as in the case of the development of custom software and Web Content Management platforms, is to make sure that you choose the right supplier for outsourcing development.
The problem of choosing outsourcing or in-house instead arises in the case described above, namely that of companies where software development refers to a core business product/service (e.g. a digital service), such as in native digital companies, or where the development relates to the channel that conveys the product/service (e.g. a B2C / B2B platform).
And it is precisely the problem that solves this article; so keep reading it to the end if it is also your situation.
To understand why you usually choose between these two alternatives, it is good to analyze their pros and cons.
What are the main advantages and disadvantages of each of these two strategies? What are the risks and possible obstacles? What are the differences in terms of costs? What are the other aspects you need to consider when choosing between outsourcing to an external development team or hiring and growing your own internal development team?
Let’s see them together.
Main pros and cons at a glance
Only by reading this list of pros and cons, can you understand how there is no clear answer to the question “outsourcing or at home” if we limit ourselves only to these two categories without considering other alternatives.
The internal development teams (provided that you are able to find, attract and keep good programmers) can also perfectly understand the requirements of your project and the values that guide your company, but they can almost certainly find themselves lacking in some skills and experiences key in unexpected situations.
And the unexpected, in the IT field and with today’s technological complexity, is the norm.
Development in the home
- Control, quick feedback.
- Communication that takes place in person.
- Partnership within the team (if there is a company culture suitable for developing it, even if the reality in the average Italian company is the opposite).
- The team dedicated to your project and not to other customers.
- High experience on your product, with reduced bug fixing, maintenance, and support times.
- Very high costs (salaries, contributions, taxes, management costs, payroll processing, holiday and sickness management, personnel costs taxed for different purposes, etc.).
- Difficulty reducing the team in case of need.
- Difficulty keeping the team.
- High costs of research, selection, hiring (recruiting takes a long time between campaigns or assignments to recruitment agencies, interviews, training, etc.).
- Difficulty finding suitable skills if you are looking for local programmers.
- High turnover, completely natural due to the human factor and even more so in companies that always work on their product/service with little or no rotation, with consequent high costs in the search for substitutes.
- You must have the skills and competences to manage or at least control projects.
- Ability to draw on a broader base of talents who have already accumulated experience.
- More possibilities to find a company with experience and skills in the areas required by your project.
- Ability to access multiple types of talent and skills that don’t require full-time people and don’t justify hiring.
- Lower costs compared to internal staff if we consider all the more or less hidden costs of having your own team, as well as not having to incur recruitment, training, talent retention costs, etc.
- The company assumes fewer risks and commitments than those of having permanent employees.
- Possibility to change suppliers based on the evaluation of the results, which is much more difficult to do with the employees.
- Greater balance between price and competence, no need to hire new employees.
- Simplified budget planning.
- Faster time to market, avoiding the typical staffing problems of in-house development.
- Risks in terms of security and confidentiality, since some data must be communicated or shared through online channels.
- Companies that claim to have skills they don’t really have, just to attract customers.
- Potential dependencies towards the outsourcing company when you are unable to independently maintain the code delivered.
In addition to the pros and cons listed above, there are also others that can occur in different cases, but these are the most recurring ones.
Clearly this is only a summary list of pros and cons and it is not easy to properly weigh the various points when making a choice of this type.
More generally, in fact, we have at least three macro dimensions that share the elements of analysis of the two different approaches, in terms of risks, benefits, and costs.
First of all, when hiring an internal development team, the general rules on personnel search and selection are very different from those specific when hiring staff in the technological field.
Do you have a precise idea of how to proceed? Do you have procedures for selecting and validating interviews or someone who can do it for you professionally?
What types of experiences, skills, resources, and tools do you need for your project? How many developers do you need? Etc.
These are all important points (and they are not all of them, they are only a part) because the success of your digital product or service is in your and your team’s hands, and you cannot make serious mistakes at this stage.
Then there are also aspects related to training, management of activities, and personnel.
Not to mention the risk that your employees, after spending large amounts of money and time to train and grow them, at any time they can “run away” and change jobs, bringing with them the know-how you have invested in.
Not at all rare in these times, in which there is a strong competition between companies to take away the best employees and, given the dramatically lower supply of demand, now also those of a more junior level.
Just check on LinkedIn how old people remain on average in some of the most well-known digital companies, to realize how concrete this risk is.
Nonetheless, there are risks involved in outsourcing to an external team.
What happens if the supplier with whom you signed the contract is not really able to deliver a functional and suitable product? Or what if it ultimately costs you more than you initially imagined?
And even worse, have you considered what can happen if the supplier goes out of business or disappears after taking your money?
If an outsourcing company is unable to show its own portfolio of recent jobs, positive customer testimonials, or if there is a negative feedback from other customers, these are all signs to be taken into consideration.
Make sure you find and rely on a company with a solid reputation and demonstrable skills.
Cost & Benefits:
In addition to the risks, there are clear benefits in both choices.
As for an internal team, once you have put together a good one with all the types of programmers you need, you generally have full control of the situation.
You can also employ the team at your convenience on the fronts you prefer.
In theory (and if it is not too large), your team will work in a more or less aligned way to achieve common and shared objectives, also building its own corporate culture.
With outsourcing, however, the most important benefit is that of being able to access the skills and experiences already accumulated by the partner and normally in larger quantities than you might be able to obtain with an internal team.
The outsourcing company will put at your disposal talents, ideas and experiences, solutions to problems that have already faced and solved several times before you and your team without having to reinvent the wheel, effort to develop and maintain your product.
In practice, it can handle all the heaviest work.
An outsourcing approach also allows you to minimize the problems related to staff turnover.
First of all, because outsourcing companies (series) attract talent more easily and manage to keep them in the company because for example with rotation policies their developers are much more stimulated, being able to work overtime on multiple fronts, situations, customers, types of technologies, etc.
In addition, outsourcing companies are more prepared to manage turnover problems in order to guarantee timely deliveries.
Another important benefit is that better-organized outsourcing companies can bring processes and tools (e.g. continuous delivery pipeline) to companies that would struggle to set them up on their own.
It is true that in Italy the average salaries of IT staff are incredibly low compared to the same jobs in most of the other states (even taking into account the adjustment based on the cost of living).
But they are at the same time tendentially much higher than the average salary in general, and as is well known the cost of labor in Italy is frighteningly high compared to the net perceived by the employee.
This means that an internal team has a really high cost, which must be calculated considering not only the salary but also the costs of personnel management and the processing of payslips, holidays and illnesses, TFR, recruitment costs, office space, and work tools, etc.
In addition, usually more than 1 or 2 programmers are needed to make digital products with a minimum of consistency.
Obviously, all these costs are also included in the outsourcing company, but typically it is equipped to manage them better and with less business risks because the risk can be spread on the various customers, just as it can economize on an important cost range.
It is also more efficient on training and recruiting processes, being specialized in doing it continuously.
The Solution: Team Scaling
Now that I have exposed the positive and negative aspects of the two traditional approaches, a question arises.
Do you have to choose one of the two alternatives or is there a way to get the maximum benefits of both models by making them work well together while reducing their respective risks?
The answer is yes, the way is there and it is based on a formula that I have tested and developed for over 10 years of experience and continuous collaborations with customers in the development of their core business platforms.
The formula is called Team Scaling and it arises precisely from the need of many growing companies (e.g. scaleup) to quickly scale the software development of their digital products and services.
With the team scaling, you have at your disposal an additional team of remote developers dedicated to your company who collaborate with your internal team.
Applying this formula, I realized over the years that in addition to achieving this specific goal, it also brought all the benefits listed in the previous chapters as important benefits: it, therefore, combined the advantages of the In House team with that of the Outsourcing team and marginalized their respective disadvantages.
This means that if you want to develop a digital product or service, you should have both internal and external staff.
Obviously there are already those who try to add a little external development to their team (in the form of freelance, consultancy, external development team) but I have rarely seen this type of collaboration work well, both because some fundamental elements were missing instead in Team Scaling that for the approach generally followed by both sides.
You must have a CTO or technical manager
The first condition to be satisfied is the presence within you of a CTO or at least a figure of technical manager.
Not (only) a project manager, but someone capable of making technical decisions and doing it according to business needs.
Also able to manage a team of developers and evaluate their work.
A CTO is not easy to find, but you should have it from a certain point onwards as he is the person who can help you with many activities, including human resource management.
With Team Scaling, your CTO / manager manages both the internal and external team, supported by our quality and methodological control, continuous training, team rotation, and other aspects that place it in clear contrast to a mere body rental.
This is already a first substantial difference compared to those companies (which are often not even in the scaleup phase) in which there is a founder who understands something about technology but is not a technologist and who brings together some programmers (e.g. one hired and freelance or two).
When we find ourselves in this situation, we usually see only large amounts of technical debt and it is still difficult to collaborate in the long term because there are problems of incorrect expectations on the part of the customer.
Teams need to work in an integrated way
The second condition to be satisfied is the integration between the internal team and the external team (at least the latter is almost always remotely).
The integration must go beyond the periodic delivery of functional software (e.g. in the form of bi-weekly iterations/sprints) on the same code repository after having collected the requirements, therefore not simply as a customer/supplier relationship.
Your internal team and the external team must integrate perfectly, working on the same code (which with this model always remains your property), sharing the communication channels and work tools that you already use internally (eg Slack, Jira / Trello, GitHub / BitBucket) and making frequent alignments.
The two teams must contaminate and train each other, exchanging know-how and method: the internal team brings product expertise, the external team experience, and methodology.
At this point, talking about the internal and external team is not only misleading, but it makes the company and supplier continue to work with old patterns and mindsets.
Here instead we speak in all respects of co-development.
Share the risk
Co-development is not only on a software level but also on a company level.
In fact, Team Scaling is also a way of sharing business risk, which is the third condition to be met.
Let’s be clear, Team Scaling is not an insurance on the goodness of the customer’s business idea.
When I talk about sharing business risk, I mean that the customer continues to take on his overall business risk but reduces the technological one, because we partly take it on (e.g. less employees) and we reduce the need to stiffen our structure.
We in turn only work with people hired full time and we guarantee the quality of the work model, and since the Team Scaling is not done for a few hours or a day but for a quantity of work that starts at least 10 days a month, this for us, it means taking on a certain amount of risk regardless of the customer.
At this point, it is clear that, under certain conditions, the best way to develop and evolve a product, a service, or a digital core business platform is to work in Team Scaling.
If your company is also growing and you are considering whether to continue working in In House mode or to activate an outsourced model, contact us as soon as possible for a free consultation. We are a team of highly skilled and experienced professionals capable of handling projects of all sizes. You may work with us on dedicated hiring, hourly-based hiring as well as project-based costs.