I recently heard a podcast where David Chappell said something that piqued my interest. Paraphrasing, his thinking went something like this.
- Business processes support what the business does.
- Those processes that give a competitive advantage are the most important.
- Those important processes are always supported by custom software.
- Custom software is the output of the Application Lifecycle Management (ALM) process.
We can assume that the success of a company is fundamentally linked to how well it does ALM.
That's quite a statement. My kneejerk reaction was to take issue with the third point; business processes conferring competitive advantage are always supported by custom software. However, I thought more about it and I've come around some. I still think "always" is an overstatement, but "often" or "usually" might be appropriate.
It took me more time than I'd care to admit that I missed the point. I was hung up on the wording and dismissed the core idea.
Looking at it from a different angle
Instead of David's set of statements, let's think about this assertion.
A company only writes custom software to gain a competitive advantage. Nothing else justifies the costs and risks associated.
Competitive advantage comes in two main varieties: comparative and differential. Comparative advantage is efficiency. Can you do something at lower cost than your competitors can? If so, you can undercut their prices or have a larger margin. Differential advantage means exactly that: Are you different? Is your company doing something no one else can do? Did you invent a new product? Is your customer service better?
So how does custom software create the advantage? Here are a few examples:
- You're writing an inventory app that will reduce stock on hand and speed delivery
- You've created an innovative talent recruitment and retention system.
- You're planning a custom application that will streamline a task that currently requires three off-the-shelf products to accomplish.
- You only need a small subset of features from commercial offerings and are writing your own to avoid/reduce cost.
Moreover, creating competitive advantage with custom applications makes the advantage harder to copy.
Custom software is expensive and risky. It takes time to plan, develop, test, deploy, train, support, etc. Therefore, if it isn't giving you a comparative or differential advantage, it isn't worth it.
Why ALM Matters
So custom software is written to confer competitive advantage, but can only confer that advantage if it is delivered, functional, usable, cost-effective, and timely. Given that, organizations with quality ALM will gain more advantage and be more competitive than those without.
That's why ALM matters. The success of a company is fundamentally linked to how well it can produce the custom applications that creates an advantage. Failed software projects are failed attempts to better compete.