Lazy programming annoys me. I see it on web sites, desktop applications and embedded systems alike. It is a bit hard to qualify what I mean by “lazy programming” so allow me to indulge in an analogy:
Imagine the programmer as a rock salesman. The user in our analogy becomes someone who wishes to purchase a heavy rock from the salesman and transport it to their garden. Carrying the rock is hard work and so neither the salesman nor the customer wishes to carry the rock far. The rock salesman has an unfair advantage here. His rocks are the finest in all the land, capable of far more “rocky goodness” than the customer can find elsewhere (OK, so maybe it is not a fantastic analogy… bear with me!) Consequentially, he need not try too hard to win the sale. So, he doesn’t. He takes the money for his fine rock, carries the rock to the front gate of his rock-sale yard and dumps it on the ground. He dusts off his hands and leaves the customer with the effort of transporting it the rest of the way home – on foot – on a hot day… Did I mention it was a heavy rock? A greater rock sales person carries the rock themselves, to the front gate of their customer. The customer is forced to make some effort, maybe opening their gate and telling the sales person where the rock should go, but the hard labour is not done by the customer.
Relating this back to computer programming, the point to the story is this: The greater the effort the programmer expends, the lesser the amount of effort the customer needs to put in, to complete the task at hand. Really good software “flows”. It takes almost nothing to use this sort of software and the productive output from it is simply “satisfying” as a customer. Conversely, software that is difficult to use demonstrates a laziness on the behalf of the programmer(s). It is not a joy to use and the output comes with a “relief that the task is over”. Put simply, it is hard work for the customer. In the fantastic tale of the rock salesman, it is easy to see that the amount of effort expended in both cases would have been equivalent. It is stretching the rock-selling industry analogy too far to suggest that this perfectly matches the computer software market. But a certain truth remains: No one likes to do hard work if they can get away without it.
I implore you as programmers to put the hard yards in, so that your customers do not need to.