The history of Slack, the most widely used workplace messaging app, is often referred to as a classic startup success story. Before it became a world sensation, the company was called Tiny Specs, and their initial product had nothing to do with collaboration in the workplace. Instead, it was an MMORPG called Glitch. Six months after the release in September 2012, the company had to shut down the game servers and admit it couldn’t compete with other online RPGs that already had sustainably growing fan communities and profits.
The story then took an unusual twist. The company decided to pivot, and focus on developing what they initially thought of as a more convenient tool for internal business communication. Stewart Butterfield, the company’s CEO, saw the commercial potential in a new messaging application that would utilize bots and integrations with other tools frequently used in software development.
The bots and integrations aren’t why Slack has become such a big hit, though. It is the design, a deviation from the typical corporate style towards an appealing and friendly GUI. What not many know is that Slack hired a design firm to refine its product in the early stages. MetaLab reworked the company’s website and app, redesigned its logo, and created most of what users see when they interact with the messaging tool today.
Many of the world’s most successful startups have outsourced some of their work. In this post, let’s explore the differences between key types of outsourcing arrangements, outline the reasons for outsourcing versus gathering an in-house team for software development, and describe the pros and cons of each approach.
Table of Contents
- What Outsourcing Really is: Types and Opportunities
- What Do You Really Need: In-House Team or Outsourcing?
- What Do You Really Need: In-House Team or a Tech Partner?
When we say “outsourcing”, what we often mean is different levels of involvement, commitment, technical expertise, and responsibility. Let’s review the three key types of outsourcing arrangements and what the differences among them mean to you as a customer.
When setting up a new team, the person responsible for the technical implementation – the CTO – has to make a crucial decision that will define the future of the company. Simply put, the CTO must choose between (1) staffing an in-house team, and (2) outsourcing the work to an external team. However, it’s possible to partner according to different conditions, terms, as well as levels of commitment and trust. All this defines whether you should work with a vendor or a tech partner.
In this part, I will briefly describe each of the types, their challenges, and when it’s best to opt for each. I will conclude this part by explaining how working with a partner can be similar to having an in-house team.
Outsourcing to a vendor means hiring a team for a specific task. Such types of companies have solid, cohesive teams and, as far as I’m concerned, are best at delivering fully functional products. Software vendors, also called software houses, assume full responsibility for gathering the requirements, and managing and delivering quality software. Outsourcing to a software house presupposes giving them the requirements specifications and letting them define their approach, the tools to use, and the implementation of the software. Such a partnership excludes most micromanaging activities because you are hiring a team, not a few developers – and in most cases, a team consist of business analysts, software developers and testers, and project managers. Vendors carry full responsibility for the quality and performance of the parts they develop, and here’s why.
Besides the well-known issues associated with software vendors – like the risk of data theft or cultural issues – the one I would like to emphasize is the level of engagement in your business. A vendor will do what you ask them to do, even if the requested solution is not optimal or does not meet industry standards or best practices. This is not because they don’t care, but because there may be more effort put into achieving the goal stated in the contract than into achieving what the market demands. However, companies have been working with software vendor for decades, and by now we are well aware of the ways to mitigate problems that might arise.
Outsourcing software development to a vendor is not a bad solution, though. It just works best when you know exactly what your end-product should be. If you are uncertain about the desired outcome or need expertise in matters besides the implementation of a software product, I suggest you consider a tech partner.
A technological partner is also a service provider, just like a software vendor. The two differ in their approach to solving business problems, as well as the level of engagement they have in your project. Unlike a vendor, a tech partner can challenge your ideas and stand up for their suggestions and approaches to solving this or that problem. Partners can also manage other vendors — by setting up processes, strategy and frameworks – as well as provide technical advice on how to configure a particular part of the resulting application.
Assume there is a system being developed that requires a phone number input. There are different ways to implement this feature, and one of them is shown in the picture above. Based on criteria like your brand positioning, the UX flow, current UI trends, the tech stack and so on, a tech partner is more likely to suggest building a drop-down list with a country flag and code that detects the user’s country and provides input validation. With a plain outsourcing vendor, there are no user experience guarantees unless you specified them up front.
While a technical partner’s solution may contradict what you had initially hoped for, they will always have a supporting rationale for their idea.
Unlike a vendor who is interested in project success, a partner aims for product success. Because if your MVP is successful, you will come back to the tech partner after new investment rounds and will continue working on the product with them. In other words, the tech partner has a long-term interest in your success, because it will inevitably make them more successful, too.
In addition to communicating the business goals, time frames and resources, working with a tech partner presupposes giving them communication access to the various departments of a startup (marketing, communications, legal, etc.), because a well-developed application is not the only predictor of a startup’s success. More important, a partnership might require you to give them access to your data. Sometimes this can be scary, but no tech partner can come up with a strategy or improve a business unless they have full access to that data. I am sure that had Slack not trusted MetaLab with much of their strategic decision-making, the application would not have received the universal acclaim it has.
A consultant is a mature software development company that provides services to startups to help them with challenging activities, from setting up own processes to optimizing the team’s velocity, to increasing the feedback loop. It follows that a consultant is not a team that can do the development for you, but can accelerate your team.
Consultants are best at three things:
- Validating your business idea with a fresh, objective opinion based on their experience in the field
- Setting up the processes in the development department, as well as the business processes
- Estimating the cost of developing the MVP, since they have done it previously and have the industry data and insights
Building a startup is usually associated with having an in-house team whose professional competencies can cover all major problems and risks that startups usually face in the early stages. It’s tempting to set up your own team of dedicated engineers, but there are a few aspects to consider before doing it.
On one hand, in-house teams are reliable. You will have little to no trust issues when working with your own team, for they are as interested in the product’s success as you are. In-house teams are 100% engaged in the product, hence their motivation. They have one product to focus on and only one priority, which is the key factor for products that require long-term development.
As a CTO or equivalent, you can be engaged in most of the activities related to product development, from choosing the development methodology to setting up the processes. Moreover, having a local team of developers is convenient. You have total control over their progress, you know their workload, and you can change priorities even during a sprint. You have the kind of flexibility you would never have with an outsourced team. For the same reason, if something goes wrong, you don’t waste time fixing it.
Now the downside of in-house development: : the enormous expense of building a team may stop one from taking this route.
There are three main types of expenses for a tech startup: (1) recruitment and staffing, (2) set-up, and (3) operating costs.
- Recruitment and staffing costs. It’s expensive to recruit staff through a recruitment agency, since they usually charge 5-10% of the recruit’s listed annual salary. If you don’t use an agency, there are plenty of job boards, but advertising an opening may cost you $100-$1000, and some recruitment agencies charge up to $20K for each successful hire. And this is even before we discuss the costs and complexity of firing someone in certain markets.
- Office set-up costs. Apart from monthly salaries and rent, buying hardware and software for your startup can be a source of expenses that is not always easy to forecast in advance. To keep up with competitors, you will need to provide all of the equipment and licenses for your team to work properly.
- Operating and administrative costs. These are monthly expenses that you have to pay – such as medical insurance, tax and social security coverage, as well as internal administration overhead – to keep the business running.
Mind that a new venture start spends money much sooner than it gets a solid team and a ready-to-market product. This delay is caused mostly by the time it takes to staff a team. Even if you can afford the best experts, finding them and making them join your venture is a tough nut to crack. The recruitment process takes time – 3-6 months, to be more precise – as well as money and effort, because the competition for a single developer is hard and you never know what other companies can do to hire personnel.
Another pitfall of staffing is that there are just not enough experts out there. Since the IT industry is young, there are already lots of developers, but only a few that are right for you. It’s like a game where different attributes – the tech stack, domain knowledge, availability, soft skills, charge – should match your needs and budget so you can start the recruitment process.
Now that you have a clear idea of the advantages and challenges of both approaches to dealing with the tech stuff in a startup, let’s go over a few situations and suggest when to opt for in-house development vs. outsourcing.
Your Product is Your USP
If the technology used in the product is your value proposition – the main benefit of using your product – then you are playing a long-term game. Developing such a product is non-stop, and it’s unlikely that you’ll ever switch to support-only mode. he Product development will drive bug fixes, new releases and more feature requests. In this case, you will need to have a team that can quickly spot and resolve issues.
Go for: In-House Team
You Are an Industry Expert with an Idea
If the technology is only a medium for delivering a service, it’s best to outsource the development until your venture generates revenue and is ready to scale. This is the case for online shops and applications with basic functionality, like food delivery, and if your company is non-technical and all you need is short-term development services of up to 6 months. Note that even for a small project, it is recommended that you hire a cohesive team and not a single freelance developer.
Go for: Tech partner
You Move Fast and Break Things
If you’re a startup according to Eric Reis’s definition – an institution designed to deliver a new product or service under conditions of extreme uncertainty – you will need a fast feedback loop and to react to market changes quickly. At some point, you might need to pivot, just like Slack did at some point, for the sake of not wasting even more money on a product for which there is little or no demand. Such a strategy requires swift action, so you might want to have an in-house team to avoid the day-to-day bottlenecks you would otherwise have with an outsourced team.
Go for: In-house team
You Rely on Integrating into a Technical Ecosystem
If your product has some upfront technical requirements – integrations with enterprise software, specific language, and frameworks for backend components, etc. – it definitely makes more sense to find an experienced partner. The same applies to industry-specific solutions, like those for finance or healthcare. There are many software development providers that specialize in specific domains, and they can save you the time you’d otherwise spend on looking for qualified staff.
Go for: Tech partner
In this post, I’ve attempted to explain that outsourcing software development should not be associated with low-profile deliverables and last-resort decisions. Many well-known tech companies have delegated some parts of their work to other teams, and the results have been incredible.
If you know you’re not going to build an in-house team, be very careful when signing a contract with a vendor. Discuss how much responsibility you want your service provider to assume so that you can be sure that no part of the required solution will be missing or malfunctioning.
Have an idea? Let's discuss!
Get help on your project from our development process experts