I often find myself working with clients who are in a difficult position: They have a viable proposition and a business model to support it, but it relies to some extent on a technical foundation which they, unfortunately, aren't able to fulfil themselves. In their early days these business are forced to rely on experience and expertise offered by external partners. 

This is just the world we live in - technology is moving at a staggering pace and we can't all be expected to keep up with every 'best practice' the industry thinks we should be adopting. So businesses delegate to trusted partners.

In this situation it's all too easy for those trusted partners to capitalise on their clients' knowledge gap by putting their own short term goals first.

I've recently been working with a startup whose founders do not have a strong technical background, but rely on technology to power their product. At the beginning of their journey this left them with a decision to make: Hire a dev team or outsource? Because their seed funding was modest they decided to outsource their MVP to sidestep the initial upfront investment in hiring along with the ongoing overheads required to maintain a productive development team.

(I'm all for outsourcing MVPs. I'm a freelancer after all! But it is so important to get that initial choice right - whoever you end up choosing is going to be the rudder of your project, either keeping you on the plotted course or creating resistance without you even realising.)

Back to the example - Just as the MVP development was outsourced, the hosting and infrastructure for the project was too, but to a different partner. When I joined the project I ran though the existing setup to ensure I understood exactly what their current situation was before making any recommendations. Immediately things looked a little odd.

  • The application stored uploaded assets and sessions on the local filesystem
  • But there were two application servers with autoscaling rules
  • And a load balancer which was using round robin traffic distribution (no routing cookies)
  • But the app all worked as expected

For those reading who aren't software engineers, the above points shout pretty loudly that something isn't right. The infrastructure is built for a horizontally scalable application but the application has not been built to be horizontally scalable. Weird.

After a bit of back and forth with the hosting company via email I found out that they had recommended this infrastructure and had been responsible for implementing it and deploying the application to it. They had made the initial recommendation without reviewing the application itself or asking the right questions in order to determine if their infrastructure was feasible. Upon discovering that their (already built) recommendations did not suit the application they then chose to fudge a fix by sending all incoming traffic to one of the application servers rather than to the load balancer. Oh, and not tell anyone.

At this point the client is paying for a load balancer and autoscaling set of application servers which are literally doing nothing. Only one of the servers is being used at all! The hosting company were happy to charge the client for all of these servers though - they put their own goals before their client's, to his significant detriment. 

Another £50 a month that has been wasted for a year, all based on their crappy recommendations.

– Upset Client, referencing yet another unused server we found

I worked with this client to reorganise the product's infrastructure to achieve some short term wins, including reducing their average monthly server cost from ~£700 to ~£250, whilst also improving the performance of their application. Just a couple of days work and a strong focus on the client's objectives has saved them £5400 a year.

Finding the right people to place your trust in is paramount to the success of projects which have a technical requirement. If you are starting a project soon and would like to chat, let me know.