Jay Little
logo
Developing Custom Software is Probably a Bad Idea

06/28/2023 05:39:53

This post is the culmination of years of accumulated professional frustration. It will not be well received by some. That's okay. If you make it to the 25 year point of your dev career and you spent most of that time writing custom software for clients and you still disagree, feel free to write your own take and send it along to me. I will afford it my due consideration.

That isn't me gate keeping or trying to make an argument based solely on an appeal to my own authority. I'm just pointing out that I have watched a lot of clients break themselves against the rocks of custom software development and over time the accumulated weight of their trials, tribulations and in some cases, overt failures, has begun to weigh upon my soul. The purpose of this post is to discuss some of this at a high level and explain why I now believe custom software is not a good option for most.

Before I continue, I want to make it clear that this post is basically a follow up to my post from 2022 entitled "The Siren Song of Set It and Forget It". It also bears mentioning that post was a follow up to my post from 2021 entitled "Spock Was Wrong: In Tech it is Easier to Create than to Destroy". Finally if you are really interested in going even further down this rabbit hole, my post from 2017 entitled "Riding the Nostalgia Wave: How Old is too Old?" is also worth a read. Feel free to skip them if you don't care that much. I just feel its prudent to point that I have spent a great deal of time thinking and writing about this subject over the years.

"But Jay, aren't you basically shooting yourself in the foot here?" Yeah probably. Frankly at the rate I'm going, if I'm still writing software and getting paid for it five years from now, it will be the first in a series of three miracles required for me to achieve sainthood. This is a tragedy because I happen to think that I'm at my peak when it comes to my professional prowess. I have never been better at writing software than I am right now. I am not likely to get much better. I'm turning 44 this year and the clock is ticking. This profession is not kind to the older code monkeys who choose to stick with it.

So what's the problem with clients wanting custom software? Well to summarize it right up front: Clients who tend to want custom software are generally totally unaware of how much actual work it takes to not only build that software but to also maintain it. And let's be clear, by build I'm not just referring to the effort to code the software, I'm referring to the effort required to design, understand and architect a solution that will stand the test of time.

But what does that mean, "to stand the test of time"? Well currently in our industry it makes jack fucking shit. There is no such thing anymore outside of deluded enterprise environments who are still clinging to the remnants of their Mainframes, AS400s and Windows Servers. Most of us are simply not in the business of building things that can last or should last. The reality is that in our new Cloud dominated world of hosted proprietary vendor specific forks of open source software most of us are writing software that is completely dependent upon a third party entity who is essentially unaccountable to us and free to totally change things up at any time with little to no warning all while charging you, the client, an arm and a leg to get fucked over.

Yeah that last paragraph is a doozy. But if you read it enough times and allow yourself to get more comfortable with my purposeful albeit poor language choices, you'll realize that I'm absolutely correct. We are building throwaway solutions and we are basically outsourcing responsibility for that to the Cloud vendors.

So wait, is this just some boomer appeal to the good old days of on premise software? No, it is not. I wouldn't want to go back to that even if we could. Those days are dead and with good reason. It doesn't make sense for a lot of companies to have a server rack much less an entire specialized room full of server racks to handle their computing tasks anymore.

The Cloud is the natural next step that comes after achieving near-universal internet access availability. This is a trend that cannot be reversed and it will not be. My own real qualm with it at this point is that its basically turned into yet another Duopoly between two companies nobody should care for much less actually trust given their track records: Microsoft and Amazon.

What does this have to do with clients foolishly opting to build custom software? Everything. The Internet led to the Cloud, which itself broke this mechanism in the worst sort of way. In the past before virtually every computer in entire world was connected to every other computer, it was possible to build custom software solutions that could stand the test of time. That's because without the constant evolving threat of the legion of hackers, assholes and shady entities on the Internet, this model actually worked pretty well.

The Internet and the Cloud by extension broke this model because every piece of software that interacts with any network in any way is now under immense scrutiny, whether you choose to acknowledge it or not. Most clients are incapable of understanding this. The cost to just half-ass build a piece of half ass software that "solves" the problem at hand isn't cheap. But once you add in the cost of properly designing the software and account for the cost of actually properly maintaining that software via consistently updating dependencies, re-evaluating its security posture and chasing the constantly moving target of whatever third party Cloud services you will surely be integrating with, it isn't worth it.

Nobody realizes this up front. People in and around my profession aren't in the business of telling them. A lot of the younger dev talent hasn't been around long enough to understand neither how great this cost will become over time nor realize that clients who aren't in the business of developing software will at some point choose to abdicate on the responsibilities they took when they commissioned its creation

In addition, the software sales people are basically just liars. Never believe a word they tell you as they will literally say anything to get that commission. The world has yet to birth a software sales person that has even slightest clue what they are actually talking about. That's because there is no financial cost to telling lies, because clients tend to only realize they were lied to after they sign the contract or have spent a literal fuckton of money building dependencies around the product. By then the sales person has received their commission and moved onto another prospective victim.

TLDR: Building custom software will almost certainly not save a client money. Over time it will cost them a lot of money because maintaining software in a globally networked environment is quite expensive. Unless they choose to abdicate on properly maintaining it. In which case it will likely cost them way more sometime down the road. I have seen all of these situations play out personally. Buy something off the shelf or use a turnkey Cloud hosted solution and make it work. Thank me later when you realize that you saved hundreds of thousands, if not millions of dollars.

All software is transient. Embrace the chaos and realize that change is the only constant in this game. So instead of investing truckloads of money into a custom solution, adapt your workflows around making something else work for you.

Search:
[Top] [Rss] [Email]