From time to time I have talked potential clients out of doing business with me and my company, not because I did not think the job was great or I did not want the money. It was usually because I knew the project will ultimately fail. The project would fail because they were not financially or mentally ready to maintain the kind of software they were asking for. I could easily take the money, build what they wanted and stopped when they ran out of money but they would quickly realize that they need more work than they anticipated and then feel like they have been suckered into a scheme. This leads to a bad customer experience and a bad reputation for my company.
There is this huge misunderstanding with most clients and it is that there comes a time when the software will be COMPLETED and in most peoples minds this is the time where the software does everything they envisioned it to do, it has no bugs, all their staff are fully trained in it and they will not need any changes to it in the short term, but this is rarely true. I call this the "Happily ever after lie". You see this fallacy in life also. As children we were told, if we got good grades in school we would grow up to live happily ever after. When we got good grades we were told if we got this one good job all would be well. When we got the job, we were told if we just got married we would be very happy and when we got married we are told we will be finally fulfilled when we have children. I can go on and on but you get the picture, the goal post is always moving. Whenever I want to agitate my dad a little, I tell him he has lied to me my whole life about life😅.... but I digress.
This lie also exists in software, the goal post will always move. This is because Software is a tool and not a business. As your business grows, your tools need to adjust to fit your business needs. A baker who makes 3 cakes a day from his or her home kitchen cannot continue with the same process when they grow to 100 orders a day. Their tools have to change. Understanding this will allow you to scope out solutions to account for some growth but you cannot foresee all the future changes, this is rarely communicated by developers and is widely unrecognized when budgeting for a project. This is unfortunate because it comes as a huge shock at the end of the project when every feature that you asked for is completed, it works exactly as you imagined and very quickly you start to see things that need adjustments. This issue is why I give clients a 3-month warranty from when I deliver the software to make little tweaks and bug fixes at no expense to reduce the blow and the realization.
"Like Art, Software is never finished only abandoned"
I once read a quote somewhere that said "Like Art, Software is never finished only abandoned" and I could not agree more. As a tool, we need it to grow with us and as it is left in the open, people interact with it in many different ways we could not anticipate so we need to patch these issues as they are found. Understanding this and communicating this to clients has really helped in bridging the gap in what it takes to create and maintain a software system and advising organizations on a realistic budget on their software needs.
-Happy New Year! 🎉
Subscribe to The Art of Coding
Get the latest posts delivered right to your inbox