Using The Easy Button
A common phrase around our shop and one that I try to follow is to “Do the simplest thing that works”. It sounds like a simple thing to follow but to me it more accurately means, provide the simplest solution that meets the customers needs. We use it as a reminder not to gold plate, but it’s an easy thing to take to far and provide an inadequate solution.
Everyday we make decisions on the quality of things we surround ourselves with. When getting groceries you can decide to purchase organic food or items put on “manager’s special”, how important is your health and how much money can you afford to spend? The cheapest food is the simplest thing than gets you fed, but it may have unwanted health consequences. Ideally you try to balance just enough quality so that you don’t waste resources.
But custom software development doesn’t have the same side effects of food so how do you know the difference between the simplest thing and to simple? Unlike the nature of retail you don’t get to devise your own quality standards and let the customer decide which product suits them. It is a very important to get this information from the customer when building their software, and you can’t simply ask “what kind of quality would you like” because they will always tell you the quality should be high. You need to know the correct questions to ask in order to decide the quality of the system the customer actually needs. When the car salesman asks you “What will you be using the car for?”, “Do you have any kids?” they are trying to help determine what car will be a good fit for you. Just the same it is up to you to ask revealing questions to help build a system to meet the customers needs.
“How current does the data need to be to be relevant?”, “How important is it this system is online”, “How many people will be using it”, “How often will you be using the data?”
The answers to all of those questions are revealing in telling you how often you need to process any needed data, how reliable the system needs to be, the user capacity it needs to support, and how fast it needs to serve content. It might feel natural to gauge the quality the customer is looking for by they money they are looking to spend, but that is a great way to deliver something to the customer that doesn’t meet their expectations. If a customer can not afford the system they need then don’t be afraid to stand your ground and potentially loose the work, it benefits no one to deliver a failed solution. I would always advocate cutting quantity of features instead of quality of features.
Another concept is to deliver the solution that is easiest to change, this is also a good practice to follow. I like to think of it as its resale value, when you are shopping for a car you are interested in getting a car with a good resale value because it makes it cheaper for you to change vehicles later. We know customers software needs change all the time, and making it easy to replace a solution with a new one that offers needed features is a good thing to strive for.
Build it simple, but remember to build it right.