This is Part 1 of a blog series that details the challenges of outsourcing software development.

Software development is the type of industry that is always on the cutting edge of technological advances.

It’s the foundation that allows us to design tools that make our lives easier and stay ahead of the game. But designing software is far from easy. And honestly, sometimes it requires outside help through outsourcing.

Even though the amount of outsourcing providers has skyrocketed in the past few years, the overall quality of work and level of customer satisfaction hasn’t. We want to change that. With over 15 years of cumulative experience in software development, our founding team has experience both from the perspective of an agency as well as a client.

We’ve received vague requirements (and given vague requirements).

We’ve dealt with picky customers (and been a picky customer).

We’ve complained about bugs to suppliers (and been the ones fixing bugs).

To put it simply: we’ve been on both sides of the fence. This has given us a unique perspective to understand the drivers and motivations behind clients and agencies when it comes to outsourcing.


One of the most common frustrations in software development outsourcing comes from what’s known as the principal–agency dilemma.

Let me explain it this way: remember when you were a kid and your Mom needed help baking cookies? When she (principal) asks you for a cup of sugar, she trusts that you (agent) will hand her a cup of sugar. But what if you give more than a cup? Or less than a cup? What if you accidentally grab the salt instead? The cookies will head straight for the trash.

Are we talking recipes here or software development? Okay, let’s reel it back in. The dilemma lies in the fact that when work is outsourced, both parties act out of self interest.  In the tech world the dilemma occurs because the agent (in this case the software agency) needs to act both on the client’s best interests but also on their own best interest. And these interests can sometimes conflict.

As a client, you want:

1.  To build great software for your customers to use.

2.  Do it at a low enough cost that is also financially sustainable.

The agency wants:

1.  To build great software for their clients (you). Client success is mutually beneficial and helps in developing a long-standing working relationship.

2.  To make money.

On the first point, both you and the agency are aligned, almost by default. You want to build the best possible product for your business. And agencies want to create good, valuable products because:

a) It helps them establish a good reputation to build on.

b) Making good products gives their employees a sense of satisfaction.

On the second point, there is an ever slight tendency for both parties to move into opposite directions. You want to get as much bang for your buck. But the agency, just like any business, wants to maximize revenue.

If this conflict goes unchecked, it can create friction from both sides and jeopardize the relationship. To align interests for both parties, we need to rethink how the value is exchanged for money through invoicing, billing, and payment agreement terms.

So what are the most common invoicing methods in software development outsourcing?

Time and Material / Hourly Basis

  1. With this method you easily get overcharged: the agency can easily invoice more hours than what you expected without getting your approval. This happens very slowly. You ask for more things to be built, the agency spends more time building them and in the end you get a bill that was much higher than anticipated.
  2. You get poorly defined fees that you didn’t know were part of the deal: agencies will include a vague title like “management” or “project management” without a clear guidance of

a.  How many hours were spent

b.  What is the value you are getting out of those hours

One alternative is to work on a per-project billing fee instead of an hourly. But even this method presents its own set of issues.

Fixed-Price Projects

Working on a project basis means that all guidelines and expectations are agreed on before the project starts. This means there’s less chance to get screwed over, right? Well, here are a few things to consider first:

1.  You have to know exactly what you want before starting the project. Start to finish, every aspect of your needs must be planned out. This is because if you forget something and later have to add it to the project, you will be charged extra for it.

2. Agencies will provide an estimate or proposal of how much the project will cost. But all agencies include some form of a buffer (markup) into their estimates. As a client, you don’t really know if this buffer is 10% or 80%.

Monthly Retainer

If you want to avoid the headache of billing hours and project fees, a monthly retainer might be the best solution for you. It’s the closest you can get to actually hiring someone full time.  However, you need to be aware of two things:

1. Unless you get a dedicated developer, there is an incentive for companies to “re-use” the same developer for other projects and thus you might get someone whose focus and attention is spread too thin.

2. Almost no agency will give you a developer on a retainer for a 3-week project. Retainers have minimum commitments of 3, 6 or sometimes 12 months. And even though they offer free trials, you wouldn’t commit to a year’s relationship after dating for a week 😉. Well, most of you wouldn’t.

Here’s the bottom line: there’s lots of payment frameworks, but it’s hard to find one that perfectly balances the interests of both the client AND the agency. That’s what you as the client need to be mindful of.

In the world of next-day delivery convenience and cancel-any-time guarantees, it’s time the software development industry starts to push the envelope in guaranteeing great service. You pay good money for the product you want, so if something goes wrong, you shouldn’t be stuck on the losing end. While you can always switch to another provider, there’s still the loss of time and money sunk into a product that doesn’t work.

At Softup, we’re doing things differently. We believe that our long term success lies in a 100% satisfaction guarantee. If something goes wrong (not that it will), we pick up the check. That’s why we offer a risk-free model that allows you to pay only when you are satisfied.  And we don’t just do this in our first sprint like most free trial offers. We do it for the whole marathon.  

If you want to learn more about the risk-free software development at Softup, let's talk now.