There are two common buzz words that fly around the software world: Customized and Configured. The problem is that these terms are not always well defined, and as a result there is a fair bit of confusion. In this post, I would like to present some working definitions for the two and explain why it matters.
Most software purchasers want to buy a piece of software that does exactly what they want it to. Whether buying an app for your phone or enterprise software for a highly complex business, the buyer wants it to meet their exact requirements. However, the more complex the requirements, the less likely it is that a piece of commercial, off the shelf software (COTS) is going to come out of the box meeting those requirements. In order to meet the specific requirements, the software must either be configured to meet the needs or customized to meet the needs or a combination of both.
Let’s start with some definitions and take a quick trip to dictionary.com. Customize – “to modify or build according to individual or personal specifications or preference.” Configure – “to design or adapt to form a specific configuration or for some specific purpose.” Gee, doesn’t that clearly illustrate the difference between the two? Not so much.
I would like to propose the following working definitions. Customize: “To write new code (programs, class files, scripts) to in the software that meets specific requirements.” Configure: “To use tools in the application to meet specific requirements without the use of code.” The key here is that customization is by definition much more invasive to the core application because it requires programmers to modify a program or write a program to do something that the software does not currently do. Customizations can be fairly basic – writing a class file to meet a task – or very invasive – changing the core application.
To put these definitions into practical terms, customization means more effort and more risk. This is because a programmer is working outside the application. Custom code tends to break in an upgrade. Configuration means less effort and less risk. This is because tools within the application are being used to make changes in a way that the application was expressly design to have changes made. Configuration is inherently better because it is working within the application.
TeamConnect offers the best of both worlds. First, TeamConnect has a robust set of configuration tools that allow for extreme flexibility using configured rules to meet specific business requirements. Second, TeamConnect offers an API (Application Programing Interface) that allows for using custom code in a way that never modifies the core application. Using the published APIs means things don’t break during upgrades.
A guiding principle Mitratech’s professional services team uses for implementing our software is to rely on configuration as much as possible and only customize when a requirement can’t be met with pure configuration. We never customize the core application. The result is that relying on configuration allows our clients to meet complex business requirements without the risks that often come with customizing the application.