Imagine walking through a rowdy street market with only a general idea of what you want to get. Vendors crowd you immediately, offering their plentiful wares. The choice is stunning! You can get what you want, how you want. Happy now?

Probably not so much. A rowdy market - this is more or less how the IT services market looks today, especially for less established businesses. Only instead of decorated lamps and trinkets, we have a hundred ways to build a product. A freelancer you talk to tells you in-house software developers are expensive, and that Python is the best tech for your cat horoscope web app. A software house lists all the big clients they worked with, and no, they say, Python is absolutely horrible for your needs. How to judge them, and where is the truth?

The necessary choice

Investing in a product means a lot of time and money - there's rarely any room for mistake or experimentation, so before we choose our one and only we need to identify the essentials: 

  • What do we need?
  • What is our budget?
  • How much time do we have?

As Investors, startup founders, or producers we can choose from several forms of cooperation, and each of them tempts us with convincing self-promotion and promises. Entrusting product development to an internal team, freelancer, or software company involves a completely different system of work, bringing benefits but also risks. So how do we choose the perfect business partner for our company?

Internal team, or maybe the whole crew on board

One of the options is an internal team, i.e. a dedicated department permanently employed by our company. Several factors may convince you to choose this solution:

+ Commitment and fitting into the culture of the organization. Developers working on a permanent basis know the needs, character, and politics of their company inside out. They’re aware of what suits a given company and how its present-day customers react to various solutions. 

+ Empirical knowledge in the internal context, i.e. simply knowing what works and what doesn't in the context of a given organization. This is very useful when working for a specific industry or target group. The question is, do you need this skill only at the ideation/discovery phases, or is it a must for a junior developer? 

+ Effective and smooth communication. Within a single structure, where we have internal communicators, daily statuses and we are in constant contact - it’s easier to give quick feedback and make corrections.

Less flexibility and higher costs

Of course, this solution also has some disadvantages that we must take into account:

– Very high costs. Maintaining a specialized full-time software team is not a cheap business, especially when we need an advanced product and many people. If we don’t need a full IT service all the time but only want to create and maintain a specific product, outsourcing web development (of other type of services) will be a much cheaper and more practical option.  

– It's hard to find specialists locally. Although we are increasingly opting for remote or hybrid working modes, many of us still prefer to have a full team on board. It is often difficult to find the right professionals in the location where the company is based. 

– Vulnerability to employee turnover. In internal teams, one person is usually responsible for a particular area of project delivery. Their departure slows down the whole process much more than in the case of dedicated companies, which will efficiently find a replacement within their structure and will also find new capacity if it’s needed.

– Lack of market perspective. The other side of the coin of knowing your business well is that it is easy to fall into patterns. When something works well in our company, we are less motivated to look for innovation and non-standard solutions.

Freelancer, cheap and simple

We can also hire a freelancer - an individual specialist employed for the purpose of a specific project. 

+ It is a good solution when the budget is low. Cooperation with a freelancer is often the cheapest option, so if we want a relatively simple product, it may turn out to be the best choice. 

+ Quicker start of work. Individual vendors, working from order to order, usually need less time to start the project. They are more flexible than large companies with extensive scheduling and planning well in advance. 

+ Small one-off project? Go ahead! Sometimes you don't need much to be happy - a simple landing page or app for a single campaign or contest or a small website upgrade. It happens that big expert companies are reluctant to accept such small orders because it is not profitable for them. This is when freelance software development comes into play.

+ Without intermediaries. A freelancer is a person who makes an offer, creates a project, receives feedback, makes corrections, and issues an invoice. Alone. All communication with just one person who knows everything first-hand? It’s not hard to get used to it.

The dark side of flexibility

– You may not be the only one. Flexibility is a double-edged sword. Specialists often have other projects and work, which limits their time available to us. As a result, the creation of the product and the implementation of improvements may be prolonged. If you go this route, always ask about the scope of other commitments, and consider asking for exclusivity (which, obviously, has a price in USD).

– Keep it simple... and only like that. Cooperation with a freelancer will usually not work as well in the case of complex, big-scope projects. Such endeavors are hard to pull off inside a well-functioning company already, with delays and screw-ups derailing projects.

Remote-first companies that may be better suited for such cooperation - but make sure that your mid-level managers are enthusiastically on-board with incorporating essentially third parties into a multifaceted development effort.

– Uncertainty in emergencies. We have to take into account the lack of appropriate emergency procedures because an individual vendor cannot count on support, teamwork, and division of tasks characteristic for expert companies. Lack of a specific safety cushion, consultancy, and reliability are among the main risks of working with a freelancer.

– It is difficult to find the right person. When looking for a reliable business partner who will respond to our very specific needs, we must be aware that it will take more time in the case of a freelancer. There is nothing out of the ordinary in the fact that one specialist has a narrower portfolio and range of services than a 40-person company. Will that be a problem for your project?

Software house - reliability, expertise, knowledge

Another option is to outsource the product to an expert company that implements a wide range of IT projects, having at its disposal qualified specialists. They exist to serve various needs of really varied companies, so they must be flexible and have a deep bench - both in terms of developers and know-how.

And you know the drawback, there is a big one. Such services are simply more pricey - although, as a software company ourselves, it is our job to show you why it is worth every penny:

+ Bring more guns to the fight. Software companies have an extensive team of specialists on board, with different sets of competencies, thanks to which they can undertake work on the most diverse, even the most complex projects we need. 

+ Experts everywhere. Better experts and experienced managers mean better code, better code equals fewer reworks and bugs, and reworks are frustration, time, and money. A top-level IT service will charge you more upfront, but will not cut corners and save on technology and expertise. 

+ The power of empirical knowledge. Niels Bohr said that 'An expert is a man who has made all the mistakes which can be made in a narrow field.' This is what stands behind the potential of software houses - empirical knowledge derived from past successes and mistakes. Your competition is an amazing source of information - and if the software house led several similar projects already, they will tell you what pitfalls and traps to avoid.

+ Agility is the answer. A developer just quit? Well, you do not have to care about that at all. Recruiting great devs into your team is hard, time-consuming, and expensive. Why not outsource this process completely? With proven procedures, optimized planning, and high fluidity of work, even in the case of internal rotation, a software house has the tools to manage risk and recover from disasters that your in-house team may not have.

+ Reliable partner. Software companies often have extensive, well-documented portfolios and credible feedback from previous clients, as well as quality guarantees which allow us to thoroughly check their competence and effectiveness. Don’t discount this - but always ask for specifics of the projects the firm is touting. 

Okay, so who to choose in the end?

"It depends" (you knew this one was coming, didn’t you?). I don’t know your company, so any final verdict would be pointless. 

Hiring a software house when you have just opened shop may be overkill. But maybe they are the ones who should take a look at my idea during discovery workshops? They have seen it all, and they developed it all already. They know their stuff.

Hiring a freelancer for an established in-house team, with a tight-knit culture and plenty of industry experience? That may be unhelpful, but you can throw a freelancer a bone and outsource a smaller coding job to free up your core team. 

Finally, you can hire top players yourself, and pay them their worth in gold. But did you really need their skill 24/7, 365? Hiring a developer at an absolute best lasts around 2 weeks (much, much longer on average) - and then the onboarding only begins. It will take months before they really help you out.

So there you have it. The one that is best is the one that works for you.