I was recently in a meeting where we were talking about performance and someone posited that performance is the number one thing that should be focused on in enterprise software. While I will concede that I agree, I only concede in fourth.
I feel that ultimately software must be able to do four things, each of which are equally important:
1. It must meet consumer expectations
If a program has a million bells and whistles, all of which are great, it is utterly useless if the single bell all consumers want is missing.
2. It must work
This almost sounds silly to say, but there are countless commercial sites that I have not returned to because it was obvious that they had not taken the time to make sure that the most basic of things, such as logging in, work correctly. Directv is one such site that stands out in my mind – I can log in, try and pay my bill, and am returned to login – this becomes an endless loop. If consumers can’t trust you to test the basic and glaring issues how can they possibly trust you to protect their vital personal and financial information?
3. It must be fast enough
There is a marked difference between fast and fast enough. Fast is an ambiguous term that must be anchored to something relevant and, by itself, is just a meaningless number. Fast enough means that you can perform at a speed that the reasonable user would find acceptable. Fast enough means that you can handle the expected, and even above expected, load without sacrificing performance in the process.
4. It must be maintainable
We have all written bad code. Bad code sucks. Bad code is time consuming, frustrating, and overly detrimental to the company. Maintainable code should not just be functional but should be designed so that future developers are able to easily understand what is going on and quickly and accurately make changes. While this is not possible in every scenario, in most it is.
As a developer it is very easy to get focused on one or more of these factors, neglecting to treat each as a single part of the larger whole. The more time and effort developers are able to devote to making sure every application meets these four criteria, the more successful applications will be.