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

Software development 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.

Even though the number 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.

Before you get further, you might want to check the previous blog posts: Paying the Invoice, Buyer's Remorse and No Skin in the Game.

Part 4: Vendor Lock-in

In an ideal open market environment, customers would be able to “lift and shift” freely as they want. If they are not happy with their existing software agency, they can simply replace them with a new one. Right?

In the real world, it's complicated. Some vendors make it particularly difficult for their clients to migrate projects to a competitor.

Accepting your right to move  freely means lost revenue streams for the agency.

The vendors never explicitly prevent users from practicing this freedom; they just impose financial, and legal restrictions that discourage clients from doing so, or just make the whole process more complex than it needs to be.

Notice Periods

The most obvious kind of lock-in is of course time bound, in the form of notice periods.

Notice periods are typically present in long-term collaborations, instead of one-time projects, however they are more common than you think. Notice periods can vary from a few weeks to a few months. Be sure to read the fine print when you are reviewing the contract.


Also certain contracts cannot be terminated for their whole duration. For example, if you sign a two year contract with a vendor you are stuck with that vendor for the next two years.

Some clients need and want that, as it’s usually enforced from both sides, meaning that the vendor also can’t walk away from the agreement. However, in such collaborations, you need to extensively test the team who is going to work on the project before committing.

It is very common for clients to ask for extensive trial periods, lasting a couple of months before finalizing the agreement. Otherwise the risk you are taking is just too high.

Migrations & Handovers

As a software architect or CTO, have you ever taken over a product that was developed externally? It’s like going to the dentist, you don’t really want to do it unless you HAVE to.

There is a lot that could go wrong with migrations in general: undocumented legacy processes, incomplete Fit-gap analysis, tedious mapping and lack of standardization.

But if that wasn't enough the fact that they are the agency and you are the client, complicates things. Now you are leaving them and breakups, just like real life can be sad, difficult and painful.


Here are some things that an agency can do to make your migration even more difficult than it already is:

  • Drop in quality of service
  • Gap of knowledge left behind, critical questions remain unanswered
  • Unfinished documentation
  • Reassignment of key developers with knowledge silo

Note: I am not suggesting that all agencies are evil and they will for sure act in this way. I am only speaking on the incentives that are in play and my previous experience from being on the other side of the fence.

Technology Lock-in

Technology lock-in is the kinder of all lock-ins and it’s often unintentional. If you are working with an agency for the first time, ensure that the programming languages that they plan to use are (a) widely used and (b) in trend by the developer community. For example, Javascript, PHP or Swift.

Something like COBOL is too old, there are very few new systems being build with it (unless you are adding a new feature to a legacy system).

And something like Go, while in trend, it might not be widely used (at least not as of this writing). So it might be difficult to find additional developers to work on your project when it scales.


When you are just getting started, agencies  make it very easy for you to start using their services. They employ free-trials, generous availability and short onboarding times.

However, when an unhappy customer wants the current lock-in mechanisms make it difficult to leave which leads to customers feeling stuck.

At Softup, we strive to keep the door wide open. The only thing that should keep us in business is customer satisfaction. Check out our risk-free development approach for more.

Our previous blog posts:
Paying the Invoice, Buyer's Remorse and No Skin in the Game.