Software matters, this much we have ascertained from an earlier blog on ‘that car!’. I think it may be fair to draw a comparison in some ways between something else that really does matter, relationships. Like any relationship we should be in it for the long haul, ultimately everybody gets much more out of the software if its not a quick ‘get it done and boot it out of the door’ thing. There’s no feelings of guilt about having done a half job nor the shame of being in it for the one thing, money. In addition there is no awkward history to catch up with you when you least expect it and no sense of the whole relationship being just another logo on your ‘customers’ page .
When you start to care about the software you create you actually start to ask what will make the customer happy, what will make our life together a happy life, what can I do to make sure my customer wants me as much as I want them. If you’re really lucky you get to create a brand new piece of software from the ground up, no history no expectations and often what ends up being delivered in this instance, when you care, makes for a great relationship. You have both sought to understand each other whilst keeping your own independent ideas. Throughout this process what has been delivered suits everyone as far as possible, sure you’ll have had to have made compromises along the way. Maybe these are things that you have elected to ignore for the short term but will address over the coming years, maybe they are things that are just never going to work as things stand but that you are prepared to live with for now. It might be that there are things that have been uncovered as you have been ‘getting to know each other’ and that you now need to work at. What ever the reason for the compromises you now have a functioning piece of software that is the building block for the rest of your hopefully long business life together.
As business and technology changes you may start to find that the original software can be improved upon, or does not work in the manner intended. Indeed maybe some of the compromises you made earlier need to be addressed before they drive you both apart. This is not a problem, good software like a strong relationship should be resistant to change. So long as any refactoring is sensitive to the needs of both parties and is properly thought about change need not be a negative, it can make for a much more complete body of work that a business can build around. Even legacy software can be refactored in such a way, just because the world has moved around a legacy system it does not mean that its days are numbered, sometimes it is necessary to reinvent and invest a lot of time and in instance where there is a clear need this is time well spent. Just like a relationship if there is a clear need from all parties for this essential piece in the jigsaw then the time invested will be time well spent.
Of course, just like relationships sometimes software is just bad and in such instances there is only one real solution to the issue. The solution is of course to move on, not a decision ever taken lightly but sometimes it really isn’t worth the day by day trouble that an errant or misbehaved piece of software can cause. At some point the business at large will feel the harm caused and will decide that its just time to move on, no regrets, hopefully to a much more harmonious existence. The real trick here, is knowing when its the software that is bad and not the implementation or the environment which will of course impact upon any newer software. Sometimes you have to change things at a more fundamental level, change the way you work or your expectations, because its the ecosystem that is bad and not the software.
Bottom line, Good software just like a good relationship needs to be really worked at no matter what the environment can throw at you, the benefits of doing so are absolutely immeasurable. Word out…..