Is Less Code Better?
The answer is, it depends.
I have spent a large portion of my career developing products for a software vendor(s) in the ERP, B2B and B2C spaces. More recently I have been working as a consultant at large companies and I often here different managers suggest that less code is better and is a packaged solution better then a custom solution? Earlier in my career and while working at these software vendor(s) I had the pleasure of going on a number of sales calls and watched sales people work their magic. I've heard the statement "with a Customization of our product, you can do what you want". The questions every company should ask is or things they should consider are:
- Time to market is typically key to success for many companies. This means you must know your business and know exactly how the 3rd party software will grow with you. It does little for a company to quible over $X dollars in software costs if you can't get to market in a timely fashion. Nor make the changes that the business requests or that you foresee the business requesting in the near future.
The question to ask, "Does the vendor truly understand my business?" If the answer is yes, then look deeper, it may be the right choice. If the answer is No or you are not sure, dig even deeper and come to a conclusion. It does little for you or your company if your time to market will be adversely affected.
If the answer is No they do not understand my business, then writing less code means you cannot adapt to a changing competitive landscape. So either look for another vendor or consider doing it yourself.
- Not all vendor code is created equally. There is a lot of crap out there. Enough said.
- Less code is not always better code. I have seen people write less code that is terribly inefficient and error prone. Or write code that takes advantage of a piece of software that is error prone. I have also seen some developers write very efficient and performant code that has more lines of code but with less bugs. This means, know your architects and developers. A good one makes all the difference in the world in the success of any project whether customized packaged software or a custom solution.
- When buying a solution, determine exactly what customizations are required and can the consultants you hire who are familiar with the product do it in such a way that minimizes customizations and maximizes value. Keep in mind that for many companies who customize the solution spend at least $2-3 for every dollar spent on software. If the customizations are large, the number goes up considerably from their. Furthermore, the cost of upgrading to a new release also goes up considerably with every customization made. So, are you still writing less code? Remember follow-up service contracts are where vendors have large profit margins. This isn't a bad thing at all for you or the vendor, but keep that in mind when you are determining how much customization is required.
- Sometimes the customizations are so large that you spend so much time figuring out how to make the tool/product do what you want that you are truly better off writing it from scratch. Or leveraging a software factory or smaller piece of 3rd party code that provides the small piece of functionality you are looking to achieve.
I have seen a number of software package implementations with so much customization that they might have well been written it from scratch.