Give your customer what they need – this is not always what they want

A typical customer of iMeta is a large international bank or other financial institution. A typical system that we build might be a bespoke web based application, taking legacy data from a mainframe backend system and allowing the end user to view and interact with that data online. Our customers come to us because we have considerable experience and a proven track record in the domain in which they are experiencing difficulties. Often such customers have pre-conceptions as to how something should be done or how it should take place – usually these pre-conceptions are absolutely correct and justifiable, but from time to time, someone requests something that’s not ideal. If this happens, it’s important to work with the customer to understand the problem and to work towards the optimum solution.

For example, I recently worked with a customer who had storage issues. Their database had grown to the point that the disk that it was housed on was soon to be full. The simple solution would be to move the database elsewhere, or to remove some data from the database so as to reduce its size. Unfortunately the customer did not have any space elsewhere and considered it not to be possible to remove any data. Instead they asked us to undertake considerable development to allow their data to span two completely independent databases. This would have taken a considerable amount of effort, would have introduced unnecessary technical debt into the application, and worst of all, would have adversely affected performance. I investigated the problem and established that SQL Server would be able to split the databases through partitioning, a much better solution than implementing this within the application, however it would have still required a considerable effort from iMeta to design the partitioning and performance would likely be impacted. Having considered all of the options, I eventually recommended that the customer purchase additional disk – this was the solution that offered the best value to the customer, would have been the quickest to implement and did not introduce any additional technical complexity.

It wasn’t what the customer wanted, but it was arguably the best solution to the problem.