Professor Beekums Blog

Follow Professor Beekums
follow professor beekums on twitter like professor beekums on facebook

Switching Costs in Software Development

Switching costs are an important part of software development. When my software relies on one service, the amount of time I have to spend moving it to another service is called a switching cost. In general, you want these to be as low as possible. The reason is that if the service you are dependent on ever becomes unsatisfactory or even harmful to you, then you need to be able to switch to a competitor service. With high switching costs, a company knows that their customers are unlikely to stop being customers. This allows them to either increase prices or reduce quality of service.

Photo courtesy of Luke Price

“That’s an interesting theory, but will it actually happen?”

Unfortunately, the answer is yes. There are plenty of examples of this, but one in particular burns brightly in my mind. I once worked for a company that had its web servers on Amazon Web Services (AWS). Their management interface was lacking back then so we used a third party service to help us. I’m going to call this service “Scaling R Us” instead of using the company’s real name. Scaling R Us started off phenomenal. They took this really complex process and simplified it a ton. They had an enterprise flat fee of $2500 a year which was super affordable for a startup considering it saved us several hours a week. That simplicity was paid for though in us working in their proprietary software and building scripts and workflows that only worked in their ecosystem. We invested dozens if not hundreds of hours in that system over 2 years.

Then one day, Scaling R Us decided to raise their fees. By a lot. Instead of a flat fee, they made it 50% of what AWS was charging! For us, that meant paying tens of thousands of dollars instead of $2500. Can you imagine if you cell phone bill went from $80 a month to $3000 a month and you couldn’t switch? That’s what that was like. It wasn’t exactly a reasonable switch either. Managing a $5/hr AWS instance costs the same as managing a $1/hr AWS instance. AWS gets to charge more money for bigger machines because they have higher hardware costs on bigger machines. Scaling R Us just needed another row in a database somewhere. This wasn’t a fair price change to make prices reflective of costs. It was a money grab from customers they knew they could take advantage of. For some larger companies, they may have gone “Yikes! This will affect our bottom line. How will we explain this to shareholders?” For smaller companies though, the conversation was “Will we  be able to keep the doors open next month? Can we still pay our employees?” And we were already struggling trying to make our product valuable for our users. We didn’t have an abundance of time to rebuild all the scripts and workflows we had made in Scaling R Us’ ecosystem. Having a sudden increase in costs with no time to find a way to lower them is the type of situation that can help end a company and the jobs that company provided.

That experience is why I am always cognizant of switching costs when choosing a third party service for software projects. Making that decision goes beyond making sure my work is not in a proprietary format though. Competition is also extremely important in keeping switching costs low. It doesn’t matter how easy it is to switch from one service to a competitor if there is no other competitor. This is why when I was deciding where to host I chose Google Compute Engine over Amazon’s EC2. Amazon’s service is phenomenal and has served me well in every company I’ve worked for. Yet Amazon has 30% of the cloud computing market and Google only has 5%. While there are many technical differences between the two, the important things to me are equal:
  1. Both are large companies with lots of experience in large scale web infrastructure from having to keep their own websites running.
  2. Both have priced competitively with each other (though I do find Google’s discount pricing much easier to handle).
  3. Both provide me the exact services I want (raw Linux VMs, load balancing, cloud storage, etc)
  4. Both are now easy to use
  5. Both can have low switching costs if you use the services correctly
With all the important things being equal, I choose the service with the much smaller market share and encourage others to do so as well. The worst thing that can happen is that competitors choose to leave the market because they can’t make a profit due to Amazon’s dominance. At that point, it won’t matter how easy Amazon makes it to switch to someone else because there won’t be anyone else. They know you can’t leave them which gives them the power to raise prices, lower service quality, or both.

One could argue that they can’t possibly see some companies abuse their market position. Either the CEO is too “great” or the company has always shown such benevolence to their customers. My response to that is Scaling R Us was also benevolent to it’s customers at first. All it takes for a company to reverse that position is a new CEO or a new investor looking for an easy way to increase revenue. I don’t think it was a coincidence that Scaling R Us received a huge investment round only a few months after hurting their customers so much.

If you enjoyed this post, sign up for the Professor Beekums newsletter to get notified when new ones are published.
share on facebook share on twitter share on linked in share on google plus share on reddit