Software Customization Options
If you are looking for software for your business, you might find it challenging to find a solution that precisely meets your needs. The more complex the requirement—for example, application lifecycle management—the harder it is to find the right solution. Your final decision may depend on what makes more sense for you: customization or configuration.
A highly configurable tool might be more expensive initially, but your total cost is not just about the price. There is a lot to consider when customizing a simpler tool, so you need to consider how each scenario affects your business and your team in the long term.
Consider the difference between customization and configuration and which factor will influence your final decision.
What is configuration?
Configuration means enabling, arranging, or adjusting available functions to best suit your needs. For example, when you buy a smartphone, you might arrange the home screen, adjust security settings, zoom in on font sizes, change the background color, and imagery—these are all configurations. You have options just like anyone else who buys the same phone, but the way you set up its inherent functions is unique to you.
In practice, you will configure any software you purchase for your business. Things like form fields, information boards, and user views are often very flexible in any solution. However, the more flexible you are to adapt to your specific workflows, the more effort the provider needs to build, test, and support those functions. Hence, the cost tends to be higher.
What is customization?
Customization, on the other hand, involves making a modification not available through available functions. Using the smartphone example, if you engrave it or hack the code to make something work differently from its inherent functions, you have customized it. This requires special skills or knowledge to make your phone different from other users. Additionally, if these changes affect some of the phone’s inherent functions, the manufacturer is not responsible for fixing that issue.
When you customize software, it often requires custom coding and—in some cases—custom deployment. This creates a range of challenges that you need to be prepared to face both now and in the future.
Software configuration does not require programming knowledge—you just set up your system using available functions. Customization requires code changes and needs specialized expertise to execute.
Considerations for Customization versus Configuration
Whatever the business application, considerations of customization and configuration are quite common. Here are four points that might adjust your concept of the total cost.
Time: Customization takes more time than configuration. If your provider offers customization, this might reduce the amount of time needed to build your functionality. However, you need to develop a set of requirements and entirely new tests for customization. If you ask someone else to create that code for you, they not only have to figure out the new code; they have to research the existing code to ensure everything works well together. They also do not have access to the testing that has been done on the base software, so if they want to check that nothing is broken, they will build those additional tests from scratch.
New functions might also take longer to deploy. Training staff is not just another task; that training also needs to be developed. Remember, the additional work is not done when the code is complete.
Simplicity: It takes someone with a lot of expertise to create custom code. Again, the issue is not just about new code but also how it interacts with existing code. If you do not use your provider for customization, finding someone to do that work becomes complicated. Are you using someone in-house? How does that affect their other responsibilities? Outsourcing? How do you find the right fit? And when you need changes in the future (because you will), can you rehire that person? Is that in-house person still working for you? How much time and effort are you willing to spend to help someone new catch up?
That does not mean that configuration is also extremely simple. There will be a learning curve. It’s just that anyone in the team can handle configuration. The same cannot be said for customization.
Agility: When you customize code, you are locked into that change. If you want to revert, you have to do so with much newer code. If a future release impacts the custom code, someone needs to figure out what changed and then create more new code.
Conversely, with configuration, you can often flexibly enable and disable functions quickly and easily.
Support: When you purchase software, the provider has tested all functions and will support that software along with the features provided through future releases. This includes your base software and the configurations that come with it. With customizations, if there is a problem in the new code or caused by the new code, it is almost always your responsibility to rectify that situation.
Going back to the phone example, you might have encountered this if you have downloaded an app not supported by your phone’s operating system. It might still work, but if something goes wrong, the app manufacturer clearly states they owe you nothing to make it work. The same holds true for add-ons to popular software. Customization does not necessarily mean you ask someone to build something from scratch. It could very well be an existing application. But if it was not built for your solution, you are going to face many of the same complications as starting over from scratch. (More on add-ons in the next section.)
Of course, this does not mean that the ability to customize is bad. Sometimes, it is the best (and perhaps the only) option. You just need to be aware of how your ability to adapt and support is affected, while deciding whether that could cause you delays, inaccessibility, headaches, or even loss of customer loyalty.