“COTS-first”, “Why build it when we can buy it?”, “Custom development is expensive”, “We’re not a software company” were all slogans that were hammered into my head during the first half of my career working for a large global consulting firm. They were and are still the prevailing wisdom in the IT industry and when looked at it purely from a cost/benefit perspective, they’re easy to justify.
Those sentiments are also directly responsible for the widening gap between organization’s IT capabilities and their digital aspirations. The philosophy of outsourcing software IP is exactly what led the banking and government sectors to be woefully slow in implementing digital services. It’s why the major banks, despite their deep pockets, are having such problems catching up with small Fintech startups.
So how did we get here?
The Great Divide
For as long as I can remember, IT and software industries were considered separate and only loosely overlapping. Software companies did all the complicated engineering and computer sciency stuff that made tools, and IT practitioners installed and tailored the tools into enterprises like Ikea furniture.
Early CIO’s reported to the CFO in most large enterprises and the focus was on how to get systems deployed with the least amount of money possible. “On time and on budget”, “OpEx and CapEx efficiency”, “ROI”, and “cost recovery” were what occupied IT executive minds.
The Digital Reality
Companies like Amazon and Netflix have shined a light on the new digital reality: software is the business. They didn’t adopt the traditional thinking that software was some capital asset to be treated like a cost centre on a balance sheet, but rather a revenue generator and competitive differentiator. The focus shifted instead to “agility”, “speed to market”, “resiliency and reliability”, “scalability”, “security and integrity”, which are more closely aligned to how organizations think about their core business offerings.
The move to digital has pushed enterprise IT shops closer and closer towards the practices, philosophies, and skills of the software industry. Concepts like Agile, Extreme Programming, and Domain Driven Design which were widely accepted within the software industry by the mid 2000’s are finally being seen as table stakes for the digital enterprise in 2020. Sometimes we’ve even given them new names like DevOps and Microservices to make it feel like the IT industry invented these concepts.
The increasing maturity and variety of software frameworks are starting to blur the line between custom development and COTS as developers can now do a lot more with a lot less code. Cloud takes this even a step further where everything ranging from a logging service to a CRM can be provisioned and interfaced with via an API through a little bit of code. The short of it is that enterprise can’t get away from building code anymore, but they also don’t have to build as much of it to deliver the same features as 20 years ago.
The problem that exists today is, to state it bluntly, that enterprises don’t know how to build software. Decades of prioritizing buying over building has created IT departments heavily geared towards project management, requirements gathering, system administration, and configuration of various COTS tools using whatever proprietary vendor technologies. There may be a few intrepid developers responsible for gluing all this mess together and keeping it all running plus some plucky web dev teams that push out wave upon waves of web forms. But the gap to actual modern software development is huge. And this gaping chasm is what most enterprises are being forced to cross in their shift towards a digital economy.
Crossing the Chasm
I think this is the first time since my 2nd year Marketing class that I’m actually using this phrase. Enterprises must invest in building software, especially related to the delivery of digital services. Not because it’s cheaper or less risky than buying it, because in most cases it’s not. But because that’s the only way to actually build up the type and scale of software development capacity needed to transition to digital.
We’re not just talking about coders, but all the surrounding disciplines that enable successful software delivery (e.g., product owners, UX designers, project managers, executives, testers, platform ops, security). Even accounting models have to change to stop treating software as a depreciating asset and instead as a line of business. Organizations have to fully embrace the reality that going digital means running a software company.
The new reality is that software is a part of any digital organization’s core business. And experience has taught us that any organization who outsources its core business will never be competitive.