Writing software is like telling an story: details matter. It’s not only about solving a problem but also about how to solve it. That’s called programming skills.
There is many ways to solved a problem, but only one is the best, told me a former boss, years ago. Well, I’m not sure if there is always only one ‘best’ but for sure for every brilliant algorithm there are plenty of inadequate ones. The problem is, the best solution is usually not the one that comes first to mind. You need experience and programming discipline to tell the best approach. Design patterns helps, but patterns are at the end standard recipes that need to be adapted to fit into concrete problems.
Not only the functionality side of the problem to solve deserves our attention. Non-functional characteristics like maintainability, reliability, performance, security, safety etc. are so crucial as -unfortunately- ignored in real life. Non-functional features are many times wrongly understood as irrelevant from a business value point of view: “just give me that XYZ cool function in the software, how you do it it’s your business”, is the common mantra among many product managers.
An here lies the problem: From outside, that is, without detailed inspection of the code, it’s not easy to tell good algorithms from the bad ones. At least in the short run. When time passes and the software becomes legacy, slow but steady, the product becomes more and more difficult and costly to maintain. Adding new features are more and more time consuming and period to stabilize the final release gets longer. But again, the link between these diseases and the lack of proper attention to non functional features in the past remains hidden for most business people.
As the title of this post claims, “just working” it not enough. Of course the software has to solve the problems it was designed for, but this is not enough. How these problems are solved matters, and depending on the answer to that how we’ll and up with an efficient system able to deliver customer value in the market at time or at some point we’ll suffer with each new release, losing market share until some manager decides to cut the tree.
Each time you hear the claim “yes, but it works”, well, maybe it’s working is the only aspect worth to mention.