Jonathan Boylan, Chief Technical Officer, FINEOS
One of the more difficult aspects of software is that it’s not physical, you can’t touch it, and so we have to use a lot of abstract language and metaphors to describe the higher level capabilities of systems. These days when we ‘like’ something we mean more than the literal meaning and tweeting is no longer just for birds.
Inevitably in this environment it’s easy for words to take on new meanings, especially when marketing budgets are applied to them. For me, configuration is one of these words. Going right back, configuration was simply how things were arranged or combined, the configuration of my laptop is the particular set of choices I made when buying it.
In enterprise systems, configuration is more commonly used to describe the various options you can set up to control how the system behaves. The more configurable a system is, the more you can change its behaviour by changing what is essentially data; data that the system uses to modify its behaviour beyond the strict rules of the code it’s programmed with. This kind of configuration is good because it allows you to change the system to meet your needs without resorting to coding, because we’re told it’s bad, very bad. It’s expensive, prone to going wrong, expensive to maintain and sometimes doesn’t do what you intended in the first place. Or at least, we’ve all had this experience at one time or another in our careers. More on this later.
So configuration sounds great, you get what you want without any of the hassle of coding, right? Not quite. Configuration is limited by the imagination of the original developer (the bad man with the compiler). So if the setting’s not there, you’re stuck and have to resort to code. Or maybe you can use rules, and because rules are configuration we’re in the happy place again. And to an extent you are. Rules typically provide flexibility to achieve things through configuration that go beyond the original design of the software. But again we’re on a slippery slope. Once we start to define more and more complex rules, with complex conditionality, looping, collections, our rules start to look a lot like code and require the skills of a programmer, which is as much about being able to create very specific sets of instructions to achieve a result as it is about writing code.
To avoid this problem, companies are now beginning to talk of programmers doing your configuration. A few even go as far as to say that a configuration consultant will use a programming language to integrate and configure their systems for your environment. Now call me old fashioned, but that sounds like coding to me. On this train of thought you can go on to say that those systems are implemented without custom code, it’s just configuration. The question is, what do you think?