How to outsource development without losing your shirt

The definitive guide to outsourcing development of your Minimum Viable Product.

Should you outsource development? #

You have a great product idea, but you don’t know the first thing about actually building software. So, you get a quote from a professional development shop.

Then comes the sticker shock: It’s going to cost tens of thousands of dollars to build!

You get a few more quotes, and eventually, someone offers to build the product at a fraction of the cost. You’re anxious to get started, so you quickly sign on the dotted line.

Many entrepreneurs have been down this path and the story is usually the same:

The development team starts work on the project and you receive the first deliverable. It’s very rough around the edges, but you figure that it will improve before the launch date. The next deliverable is a little late, it isn’t quite what you expected, and the team informs you that the cost might be a little higher than they originally quoted. At this point, you feel that you’re too invested in the firm to turn back, so you agree to the higher costs. The project ends up going way over budget and you end up with a completely different product than you planned.

Maybe you’ve already been down this path. So instead, you sign up for a code bootcamp that will teach you to code in just a few weeks. How hard can it be? While the price is still quite high, it’s less than a development shop and you can build it exactly the way you want.

Again, the story here is the same:

You sign up for the bootcamp and develop enough expertise to build an app. The problem is that it’s nothing like the app that you want to build, and they didn’t teach you anything about design. It takes you several more months of learning and practice to fill in these knowledge gaps. In the meantime, you consistently underestimate how long it takes to develop each feature, rewrite the app several times, and end up significantly behind schedule. If you’re lucky, you eventually launch an app years after you expected.

If these scenarios sound familiar to you, it’s time to step back and really consider the pros and cons of outsourcing development and learn how to do it right. If you haven’t had this experience, you’re welcome -- we’re saving you from tens of thousands of wasted dollars and months of your life that you’ll never get back!

When should you outsource? #

Many successful companies have outsourced development to focus their efforts on what they do best rather than dealing with the complexity of software development.

For example, Slack hired a Canadian agency to handle their logo design, web development, and app development. This enabled the founders to focus on getting the prototype in the hands of early users and quickly iterating based on the feedback. That’s a big reason they were able to grow the messaging startup from $0 to a $1 billion valuation in less than a year.

Benefits of Outsourcing

  • It’s Faster - You don’t have to spend the time and money to learn to code or hire an in-house development team. In addition, you have immediate access to a full range of expert skill sets, ranging from design to devops.

  • No Strings Attached - You don’t have to worry about hiring and managing employees, or any of the baggage that comes along with them. Once the project is finished, you can easily scale back the development efforts.

  • More Knowledgeable - You have access to a knowledgeable team rather than starting from scratch as a beginner. They have already learned all of the hard lessons and can help you avoid them in your project.

  • Lower Costs - Senior level software developers can cost upwards of $120,000 per year, plus benefits and equity incentives. By comparison, outsourcing development can be quite affordable – typically a fraction of that cost.

Drawbacks of Outsourcing

  • Logistical Headaches - The odds are that you’ll be working with a remote team if you’re outsourcing development. While that doesn’t always mean they’re overseas, it does entail communicating via conference calls, email messages, and other mediums that may be more difficult than face-to-face meetings.

  • Commitment Issues - Most development shops work with multiple clients at the same time, which means that you’re not their only priority. While that’s not always a bad thing, it does mean your project won’t get the kind of attention it would from dedicated software developers.

Tldr; If you are an entrepreneur that wants to launch a business as quickly as possible, then outsourcing is usually the best way to get a minimum viable product in the hands of customers.

When Shouldn’t You Outsource?

There are many bootstrapped startups that began with a non-technical and a technical founder getting together to build a product.

For example, Airbnb’s Brian Chesky, Product Hunt’s Ryan Hoover, and Tinder’s Sean Rad are all non-technical founders that built successful tech startups. They started by building small scale proof-of-concepts before eventually building their own in-house teams. Airbnb began as little more than a blog with a map before a third co-founder was added to build out the Airbnb that we know today.

Benefits of a DIY Approach

  • It’s “Free” - You can learn to code for free and building an app requires little more than a laptop and an internet connection. Of course, the true cost includes the time it takes to learn to code and the opportunity costs associated with not launching sooner.

  • Full Control - You have complete control over the project and don’t have to communicate the vision to anyone else until down the road. You can spend as little or as much time fine-tuning things as you want before putting it in customers’ hands.

Drawbacks of a DIY Approach

  • It Takes Longer - You need to spend months learning how to code before you can begin development, and even then, it will take you longer to develop an app than it would for an outsourced team to do the same project.

  • More Technical Debt - You will probably create more bugs than an experienced developer, and many of them will make their way into production. In the future, fixing these bugs becomes increasingly costly - not to mention the hit your reputation takes among customers.

Tldr; If you enjoy learning to code, have a flexible timeline, or have no capital, then taking a do-it-yourself approach may be a good idea.

Common outsourcing pitfalls #

Software development is hard -- even if you outsource the technical aspects.

We once spent an entire year building a messaging service. The client wanted it on every platform with a set of “killer” features that would set it apart from the competition. At that time, we hadn’t developed our scoping process, so we built exactly what he asked for (our mistake). The project launched, and six months later, the appointment feature that we spent weeks building had only been used twice. Many platforms had no downloads!

Non-technical founders must develop a solid understanding of what they’re building, choose the right team to spearhead the effort, effectively manage that team, and everyone must work together towards a common goal to launch on time and on budget.

We hear the same stories again and again from clients that have struggled to develop a product as a non-technical founder. We’ve also made some of these mistakes ourselves in the past and learned first-hand how to avoid them.

Pitfall #1: Spending too little #

Software development is expensive. It’s tempting to accept the cheapest proposal when everyone is promising the same result.

In fact, some unethical developers will intentionally underbid just to get a contract, and then turn around and increase the price down the road as the project progresses. By the time they hit you with the new bills, you already have so much money sunk into the project that you feel compelled to stick with them, rather than starting fresh with someone else.

The “you get what you pay for” mantra applies to software development just as much as other areas of life. If you want a high quality result, you should be prepared to pay a proportionate price for it. That doesn’t mean you should overpay for a project, but it does mean that you should be prepared to spend a fair market rate. And if you don’t have the budget, you are far better off narrowing your scope than hiring lower quality developers.

Pitfall #2: Failing to measure progress #

Many non-technical founders don’t have any experience managing software projects and struggle to measure progress.

For example, you probably have questions like:

  • How long should it take to complete certain tasks?

  • What are the key metrics that you should be watching?

  • How much should you manage the developers?

As with anything in life, you can’t improve what you don’t measure.

You need a way to ensure that everyone is on the same page and the project is moving forward on time and on budget. At the same time, you don’t want developers spending more time making estimates and tracking progress than actually completing work.

Pitfall #3: Spending too much time #

You probably have a very specific idea of how your product should look and work. It can be hard to let go and have someone else create the actual product.

The goal of outsourcing software development is to free up time for you to spend on higher value tasks. If you’re spending too much time micromanaging, you will end up spending an enormous amount of money and won’t realize any of the benefits of outsourcing development.

You need to provide developers with enough input, but at the same time, let them do what they do best and give them latitude in building the product. In other words, play to your strengths and let them play to theirs.

You know your customers and the features that they need to reach their goals. Developers know how to design and build applications to maximize the user experience. Don’t try to do both.

Pitfall #4: Hiring the wrong team #

Hiring the right development team is an intimidating process, and you only want the best working on bringing your idea to life.

You probably have questions like:

  • Do you need a junior developer, senior developer, or development team?

  • How do you balance technical experience with business experience?

  • If you hire a development team, how do you go about evaluating them?

  • What are some questions that you should ask when interviewing them?

It’s important to hire the right development team to launch your product on time and on budget. That means knowing how to properly interview developers (or dev shops) and find the right mix of technical expertise and business experience.

After they’re onboarded, you should make sure they have everything they need and check in on a regular basis to ensure that they’re making progress and moving in the right direction.

We will take a look at each of these pitfalls in this article and discuss how you can avoid them to launch your product on time and on budget.

How much should you spend? #

You know that software development is the most important part of a software startup, but how much should you spend on software development, and how long should it take?

The exact dollar amount and timeline that you should budget for software development depends on many factors. For example, building an Uber-like app is much more technical than building a Twitter-like app, since it must track user locations and handle payments. A more technical app will cost more and take longer to develop.

Even then, the same project might attract a $5,000 proposal from a freelance developer and a $50,000 proposal from a professional development shop — a 10x difference in price!

Why is there such a large gap?

Prototype vs. MVP #

A good place to start is deciding between a prototype and a minimum viable product — or MVP.

Prototypes can usually be built in a few weeks. They are functional, in that they technically meets the specifications that you provide, but it won’t have a great user experience, won’t be very scalable, and will have a lot of technical debt – or things that you decide to do “later” or shortcuts that need to be fixed in the future.

Prototypes are great for entrepreneurs who are:

  • Looking to demonstrate a core concept.

  • Convincing stakeholders that they’re serious.

  • Raising seed capital to build an MVP.

MVPs are much more robust apps that ultimately serve as a basis for the long-term product rather than something that’s scrapped and rebuilt into a fully-featured product down the road.

MVPs are great for entrepreneurs who are:

  • Testing the product to get user feedback.

  • Signing up early adopters to prove the market.

  • Gaining early revenue before investing in a team.

  • Raising seed capital at a higher valuation.

The right decision depends on the stage of your business and your goals moving forward. Do you already have a clear idea of exactly what you want to build? Do you want to start onboarding users and generate revenue? Or do you want to show something basic to investors to convey an idea or concept?

Regardless of the option you choose, it’s important to make a decision between the two rather than trying to do both at the same time. Otherwise, you’ll end up with an expensive product that doesn’t really meet any of your goals.

Freelancers vs. Dev shops #

The next major cost decision is between hiring a freelance developer — or a team of them — versus hiring a development shop.

When hiring a freelance developer, it’s important to note that you’re just hiring one person. You don’t get project managers, UI/UX experts, designers, or other experts that you would get when hiring a development shop. Some developers may have experience in these areas, but there are very few rockstars that are good at everything. You may need to find other freelancers to fill these voids, which then leads to the need for a layer of management.

Freelancers may be fine if you have a really good idea of what you’re building and are just looking for a simple prototype, but if you’re looking for some help thinking through your idea, planning out the development process, and building a more fully-featured version to put in the hands of customers, then a development shop is probably right for you.

Development shops offer a team of professionals to design the right user experience, build a backend with test-driven development, and scale with a devops team that knows how to configure servers at scale. Perhaps most importantly, you get a dedicated project manager that can manage the interactions between developers, designers, and other team members, which frees up your time to focus on higher-level todos.

Hourly vs. Project pricing #

Freelance developers and development shops use different pricing models that can influence a project’s cost and timeline. Some developers charge by the hour and others charge by the project, and there are benefits and drawbacks to each approach.

Project-based pricing models may seem like a good idea since you can easily plan out your costs. But, underbidding is very common, and the cheapest bids often result in cost overruns. This is especially true if you don’t spend time thinking through the specifics of your project. These developers are often focused on doing the bare minimum to meet the specifications and then charging for anything beyond that scope.

When working with project-based developers, it’s important to define a very specific project scope and have both parties commit to meeting those goals on time and on budget.

Hourly pricing models may seem straightforward, but they are more complex than they appear on the surface as well. Some teams may bill a full eight hours for a day’s work — inclusive of lunch breaks, meetings, or other interruptions — while others may only bill you for productive hours. Hourly billing also means they’re incentivized to keep the project running as long as possible, rather than completing it in the minimal amount of time.

When working with hourly developers, it’s important to measure their progress and keep the scope contained to ensure that the project is delivered on time and on budget.

We take a hybrid approach that provides the best of both worlds. Since we’re laser-focused on scoping projects before getting started, we provide very specific project-level estimates and then charge a flat monthly rate. Clients benefit from simpler cash flow planning with fixed monthly costs while the scope can be adjusted without throwing off the project.

Tldr; It’s important to understand how the developer is charging before hiring them. Otherwise, you could run into a host of problems that could ultimately derail the project.

It comes down to scope #

Development costs and timelines are impossible to predict without a well-defined scope.

We recommend starting as small as possible. What’s the minimum set of features that solves the customer’s problems? What user experience has the least friction in delivering those features?

By starting small, you can reduce the cost of the project, reduce the odds of cost overruns, and get the product to market much faster. You can then start collecting user feedback as quickly as possible to begin fine-tuning the product without going back and cutting features that weren’t actually needed.

We believe that this process is so important that we typically push back on our clients to cut down their features. If you’re unsure about any feature, it’s usually a good idea to cut it from the initial release and come back at a later time.

How to hire a development team #

Hiring a development team can be an intimidating process, especially if you’re a solo founder or small team that hasn’t hired anyone in the past.

The good news is that there is no shortage of options when it comes to finding and hiring them. You can find countless freelance developers on Upwork and many more dev shops that are both local, in the United States, or outside the country.

The bad news is that there are so many options when it comes to finding and hiring a development shop… you probably don’t know where to start.

There are a lot of different decisions to make:

  • Internal team vs. outsourced development team.

  • Large development shop vs. small development shop.

  • Domestic developers vs. offshore developers.

  • Technical experts vs. generalists.

It’s enough for you to throw in the towel before you even begin!

We will try to make the process a little easier by going through some important considerations.

In-house vs. Outsourced team #

The first choice facing many businesses is whether to assemble an in-house team of developers or outsource the project to a development shop.

Interviewing individual developers and assembling an in-house team is a stressful and time-consuming process, and there’s always the risk of making a bad hire. Even if everything works out perfectly, you have to juggle multiple contracts, ensure that everyone is working together well, and deal with inevitable turnover. If it’s a true in-house team (e.g. full-time employees), you also have to worry about the cost of benefits, human resources issues, and minimizing their downtime.

Outsourced development teams tend to be a lot easier to manage. You have a single point of contact, a single invoice each month, and a team of experts that have already been vetted and proven to work well together on projects. You can focus on building your business rather than hiring and managing an internal development team.

How big should the team be? #

If you decide to hire an in-house development team, it’s important to hire the right number of developers to minimize complexity and avoid overspending.

If you have ten people working on a project, communication issues start to arise and it can be difficult to keep everyone on the same page without spending a lot of time in meetings. That’s why a lot of companies experience growing pains when they reach more than 10-20 employees, which often requires a layer of management to oversee.

We recommend keeping team sizes between two and three people, including a developer or two and a designer. That way, it’s easy to keep everyone on the same page and you can move quickly when building and launching a product.

If you need more expertise for a specific problem, you can bring in an expert to take a look from outside of the core project, but the 2-3 person team should be sufficient for most of the heavy lifting until the project moves past the MVP stage.

Gauging the team’s mentality #

Most entrepreneurs assume that the best developers are those with the strongest technical abilities. After all, Google goes through great lengths to ensure that their developers know the ins and outs of solving complex technical problems.

So, why shouldn’t your startup demand the same level of expertise?

The simple answer is that smart technical people tend to over engineer solutions. They enjoy building an optimal product more than bringing that product to market.

For example, they may be drawn to the latest and greatest cutting edge technologies rather than selecting the most practical solutions to the problem. Using the latest and greatest framework that has the fastest runtime is great, until you need to hire more engineers and can’t find anyone with experience to join your team.

It’s better to hire a team with a balance of technical, design, and business expertise. That way, you can solve the problem in the simplest and most elegant way possible without over-engineering a solution.

Building a rapport #

Most entrepreneurs that hire remote team members or outsource development will interact primarily through email, phone, or video conferencing.

While there’s no doubt that this is efficient, it’s a good idea to fly out and meet the team at least once in person. The cost of airfare is much cheaper than the cost of a bad hire, and it’s much easier to interact with people that you’ve actually met in person.

In addition to meeting with them, it’s important to treat outsourced developers the same way that you’d treat your own staff. If you’re building a team of individual developers (rather than going through an agency), you should consider offering them equity in the project or providing some of the same perks that you’d provide in-office staff.

Pulling the trigger #

Evaluating development shops is similar to evaluating venture capital firms. They are taking a bet on you just as much as you’re taking a bet on them. The best ones are going to have some great companies in their portfolios, but they will also have a few duds. It’s important to look at what’s in their portfolio and what kind of approach they take as a firm.

There are three key questions to ask when evaluating your options:

  1. What have they built? Do they have a portfolio of reputable companies or are they all out of business? Can you see a live demo of products they’ve created (either by Skype or a demo site)? Successful past clients and strong demos are a good sign that the development shop is capable of executing on your vision.

  2. Who are their clients? Do they have any specific client success stories that they can share? What kind of return on investment did these clients see? Good development shops should be able to point to how they helped clients develop products that have become success stories in their industry.

  3. What is their approach? What development processes do they use? What kinds of things do they care about? Are they listening to you as much as they’re pitching to you? Good development shops should share the same principles as you and work in a way that makes sense for your business.

By asking these questions, you can ensure that you’re hiring a development shop that’s well-equipped to build a high-quality product and launch your business on the right foot.

How to measure progress & results #

Software development projects are difficult to manage — even for developers that do it every day.

Many development shops use Agile development processes, which involve kanban boards, code sprints, burndown charts, and more. These tools are designed to help developers accurately estimate how much time a project will take and compare those estimates to actual time spent development features. We use a quasi-Agile approach in our firm, but the principles are generally the same.

The good news is that you don’t have to deal with this level of detail when outsourcing development, but you still have to be able to measure how development is progressing.

Understand where you fit #

It helps to have a high-level view of how the development process works.

Most software development projects begin with user stories, which are plain English descriptions of how a user interacts with the application. After creating these stories, developers break them down into the technical tasks that must be completed for the user experience to function as expected.

Example of a User Story

As a visitor to a website, I can sign-up to create a new account.

Example of Technical Tasks

  • Create a user data model.

  • Create a sign-up method.

  • Create the sign-up form.

As a non-technical founder, you’re primarily concerned with providing developers with an idea of what these user stories should be. You don’t have to write them, but you should be able to describe how a user interacts with your app in some detail. The developers then convert those user stories into technical tasks and complete them.

You don’t need to know much about coding to have these conversations, but it helps to understand the technology behind the app enough to intelligently talk to developers. That said, it’s a mistake for a non-technical founder to try to learn to code and then micromanage the technical aspects of development.

Hold weekly calls #

Weekly calls are a great way to hold developers accountable and ensure that everyone is on the same page.

Developers should discuss, and sometimes even show you their progress over the past week. You can answer any questions that may be holding them up and provide any feedback. Catching errors early on can save a lot of time, money, and re-work over the long run.

The three most important topics to cover are:

  1. What did you accomplish over the past week?

  2. What are you working on this week?

  3. What’s getting in your way?

These three questions tell you where the project stands and helps you identify any ways that you can help things along by removing bottlenecks. If there was any new code deployed, the developers may also walk you through a demo during these meetings.

Keep an eye on demos #

Most developers will provide you with a functional demo of the application that you can access to see the progress made over time.

For example, iOS apps may be available to download through TestFlight before they’re available in the Apple App Store. Web-based apps are even easier to access through a temporary link to a demo server.

Most user stories have a tangible update to the user interface, which means that you will see progress in the demo app as they’re completed. If the developer isn’t deploying these changes, you should request that they do to help you track progress and provide any feedback early on.

That said, don’t expect to see tangible progress that you can see on a screen every week. A large part of development occurs on the backend where there is no user interface, so you won’t be able to see visual progress at those stages.

Review your invoices #

The final step that we recommend is looking through invoices to ensure that the project is progressing on budget.

If there is a risk of running over budget, you should immediately inform the developers and look for ways to reduce scope. You don’t want to get in a situation where you run out of money when the application is in the middle of development. It’s better to identify ways to cut the scope down and finish some version of the product on budget.

Of course, it’s much better to start out with a small scope and begin developing the app with a conservative budget, then focus on adding features down the road!

How we manage development projects #

Many clients wonder how development shops function under the surface. By learning about these processes, you can better communicate with developers and understand how your idea is transformed into a functional application.

Discovery process #

We break client projects down into the smallest pieces possible and focus on delivering results faster. Even if clients have a big, grand vision, we push them to figure out how to reduce the initial scope and stick within a well-defined budget.

This process starts by getting to know the client, their business, and their goals. We then list every feature that they could possibly want and start narrowing them down.

We ask clients two questions to narrow them down:

  • How long can we hold off on this feature?

  • Can we do this manually for now?

For example, it can take weeks and cost more than $10,000 to build out a payments infrastructure in an app. If you’re targeting enterprise customers with a long sales cycle, it might make sense to manually process these payments in the beginning and devote engineering resources towards building out more pressing areas of the app.

Sketching the basics #

We assign two or three developers and designers to each client. As we discussed earlier, we believe that smaller teams are better positioned to move quickly with minimal friction.

After defining a scope with the client, the designers sketch out the preliminary user interfaces in wireframe form with little to no design elements (e.g. colors, fonts, etc.). The goal is to understand how the core app will look and how users will interact with it.

At the same time, the developers begin mapping out a high level data architecture. The goal of this process is to understand how the underlying database will look and ensure that everything fits together properly.

This process also ensures that the frontend and backend developers are on the same page before a single line of code is written.

Defining milestones #

We use Teamweak to schedule time across all of our projects and set weekly or biweekly milestones. From there, we break down these milestones into tasks on Trello. That way, we know exactly how long we’re spending on features and instantly know if we’re running behind.

After the tasks are added to Trello, we add estimates for each piece to determine how long it will likely take to develop the feature. Then, we can either discuss revising the scope with the client based on those estimates, or jump right into development.

There are many developers that go further into the Agile method, but our semi-Agile approach is designed to take the most helpful aspects of these processes without committing to anything that takes away from time spent on engineering.

Daily & weekly standups #

We have daily internal standups to check in on each project. During these meetings, we ask questions like: Are we on schedule? Are we on budget? We bring any issues to the client as soon as they arise to proactively address problems before they get bigger.

In addition, we have weekly check-in calls and meetings with clients. During those calls, we let clients know what was accomplished over the past week and what’s on the docket for the upcoming week. We also walk clients through any new functionality that has been deployed to gather any feedback before moving on to other features.

Retrospectives #

Retrospectives are a powerful tool for checking in with the team to see how they felt about a project.

We use retrospectives to learn from our past mistakes and avoid them in the future. For example, we may do a retrospective on a project and identify some key bottlenecks in the way that we talk with clients.

Questions and answers #

How long does it take to find a developer? #

It can take two or three months to identify developers, meet and interview them, and start the onboarding process to begin development. If you want to start sooner, it’s certainly possible, but it’s important to find a good fit. You don’t want to spend tens of thousands of dollars on a product that you’re not happy with, or interact on a weekly basis with a team of developers that you don’t get along with.

How long does it usually take to build an app? How much does it cost? #

The price and amount of time that it takes to develop an app is a function of the scope that the non-technical founder and developers agree upon. Complex apps can take a year or more to complete and may cost hundreds of thousands of dollars, but apps with narrower scopes can take just a few months for tens of thousands of dollars.

If you’re concerned about the cost of an app, we recommend scaling back the scope rather than trying to find cheaper or lower quality developers. That said, the average project for us comes in at around $50k-$75k and takes 3-6 months to design and build.

What should a non-technical founder do while the app is being built? #

We highly recommend building an audience ahead of launching your product. In addition, you should be talking to your customers to learn more about their problems and starting to think about marketing channels that can help you launch and scale your app.

What happens after the initial project is done? #

We prefer to work with companies over the long-term. If you began with a narrow scope, we can help you build upon that base with new features that your customers want to see.

What are the ongoing infrastructure costs? #

The ongoing cost of infrastructure depends largely on the individual app. A basic app might not have any infrastructure requirements other than an annual Apple developer license, while a software-as-a-service app could have significant hosting expenses.

Wrapping Up #

How do I get started today? #

We have covered a lot of ground in this article and you should now know what’s involved with hiring an outsourced development team.

We have helped many clients at Krit build and launch successful businesses, ranging from legal software-as-a-service to photo booth galleries to healthcare communication.

Ready to get started today?