The other day I read this very interesting article by John Mark Walker on open source software (I’m looking forward to John’s promised follow-up installment). One of Walker’s central points is that the genesis of open source (and free as in beer) projects has been in large part due to the undeniable trend toward the commoditization of software. Both the growth in open source software and the underlying forces that have led to its ascendancy suggest that businesses in the software industry need to shift their value proposition away from the executable code itself to service, support, training and related consulting services.
Walker also points out that the smaller the market for a particular type of software – viz. vertical market applications – the less likely we are to see open source projects gaining a foothold. However there is an important lesson here for vendors who are fortunate enough not to yet see any pressure from open source products in their space.
I have observed and been involved in a number of vertical-market application projects. All of these have had their genesis as custom applications that were adapted and marketed to a broader market. One of the biggest mistakes that I see software companies make in this transition is to look at the actual code as a valuable asset. In my opinion, the code is more often than not actually a liability.
- The original code almost always implements business logic that is far too granular and company-specific to make the software usable by a broader market. The very elements that make it attractive to the original customer make it unacceptable as a vertical.
- The original code is not usually architected to withstand the extensive modifications necessary either to meet the needs of its initial target market, or to keep up with changing customer needs; as a result, “code decay” sets in very quickly, making the software increasingly expensive to maintain.
- I have never seen – either in my own experience or in the observation of other software developers – an instance when code did not improve in the process of a re-write. In fact, there is usually a quantum improvement in design – you know where you’re going.
Where the real value lies is in the knowledge and understanding that the company has of the target market and their needs. The actual code is a commodity, and should be the first thing that a company should discard when making the transition from a custom system to one targeted at a broader vertical market. Doing so clears the way for getting a properly designed and architected system into production quickly, preserving the early-to-market advantage without dragging along all of the baggage inherent in the original code.