A Strange Story of Version Control and Software Customization
I’m currently consulting part time for a local transit district, coaching their project managers and working to formalize their project initiation and approval process. The IT department recently experienced compatibility problems between a couple of software components, and they found that one of the components was significantly behind in maintenance.
The team is spread pretty thin, so I offered to assemble an inventory of their installed software, including vendor information, the version the district currently had installed, when that version would no longer be maintained by the vendor, and what the latest released version of the software was.
The manager of desktop support had a tool that quickly produced an inventory of every scrap of software loaded onto the desktops. The enterprise software was a bit more of a challenge, but fortunately the maintenance for those systems is a budget line item, so I started using word of mouth and the annual budget to identify some of the critical systems. I then tried to use the web to determine the current releases of the software, but for a few of the vendors the information was nowhere to be found. In those cases, I launched an email inquiry to the vendors.
A week later I received a shocking call. A software vendor for a very popular transit system (if there are buses where you live that have any automation, there’s a fair chance your local transit district is a customer) called in response to my inquiry. It took me a while to understand what he was saying, but it finally registered: This vendor doesn’t have versions. Every customer is a special little snowflake that has a custom configuration and installation.
If I had been drinking a beverage, it would have sprayed out of my nose. I asked again, sure that I was misunderstanding some part of what this guy was telling me. Did he mean that the system was a collection of modules that had different version levels? “No,” he assured me. “Each customer has a unique instance of our software because they require so much customization for their unique circumstances.”
Could someone please explain how in the world it can be cost-effective to maintain hundreds (thousands?) of unique versions of a product? Where are the economies of scale? How do you provide technical support to customers literally all over the world? Isn’t this the exact opposite of how software has been trending for the last forty years—away from custom code and toward a more robust product?
I’d really like to get comments from some of you who work in the software product space. Did I miss something in recent evolution, or is this the most insane thing you have ever heard?