Is Customization a bad word?
So, why last year's story now? Recently, I was talking to a colleague of mine who is working on a sizable global Maximo project. In this project, client has a clear mandate - no customization. This project is developing a global Maximo template which will be rolled out to multiple countries across the globe. Infosys and client project teams have successfully been able to adhere to "no customization" mandate - which was a surprise to me.
While I dove deep into the implementation approach, I found this client also has the requirements which are not meant by standard package but the project team has used Maximo's innovative configuration options to avoid the customization and met all the gaps by configurations.
Before we proceed further, let's also understand the difference between configuration and customization. In Maximo context, configuration could simply be described as extending the features without any code change, using software provided framework. While customization would mean extending or creating new features by changing code using outside tools.
Coming back to the project discussion - Another thought came to my mind "Is this project not having too much configuration??" So, further deep dive and realized that they have explored each and every Maximo configuration possibility and met all the customization requirements by configuration. Bravo!!!
But I realized that few of their customization requirements could have been met by a simple customization for which they have used complex configuration.
Here the debate starts; should we customize software or not, considering requirements being met by configuration. Also consider that generally customizations are not upgradable and would require revisiting the code during upgrades later.
My opinion here is that customization is not a bad word. If you have a critical business requirement which can be fulfilled by either a simple customization or a complex configuration; solve the problem by simple customization. Document it properly to be used by upgrade teams later.
A complex configuration may mean a high level of support activities, expansive changes and difficult debugging, once system is in production.