It takes extra effort to build choice into a software application, so developers tend to think carefully before adding configuration options, as Sean McGrath describes in the latest of his columns for IT World, The mysteries of flexible software. He makes the point that programmers tend to parameterize (ie add configuration options for) the elements of software code that relate to reconfiguring the software infrastructure, whereas business people are more interested in being able to parameterize the elements that relate to reconfiguring the business infrastructure.
In a related posting in his weblog, he cautions against the use of metadata as a mechanism to allow business people to reconfigure applications. He says (and I paraphrase here) that it involves using a bagful of iffy XML parsing and transformation tools, whereas hardcoding the parameters in program code is much easier because programming languages already have a much more mature set of tools built into the infrastructure.
Thus, he concludes (and in fairness I should point out that I'm still paraphrasing), it's much easier to write software that doesn't provide for user parameterization using metadata, and it means you get slicker software too.
Unfortunately what he doesn't mention is that it is much harder to operate a business using software that users can't configure. Developers (and indeed their managers) often forget that writing better software more productively is not actually the end purpose of the exercise. The ultimate objective is to build slicker business operations, and if that means getting to grips with parts of the software infrastructure that programmers have previously neglected, then perhaps it's about time somebody started investing some effort in that direction.
UPDATE [added 19:52]: Sean has promptly corrected my misrepresentation of his original post, pointing out that his recommended approach still allows for user configuration of the software, provided the programmer creates a user GUI with this functionality. I should probably keep shtum at this point and button my lip, since he illustrates his point by referencing a Jon Udell item about Programs that write programs, which I've always felt contained some important information, but which I'm far too much of an amateur programmer to ever really grok what it means. The trouble is this feeling that I still have somewhere deep in my gut, that I'm going to feel more comfortable as a business user knowing that, if necessary, I can manipulate some metadata in XML, rather than having to get to grips with all the coolness of dynamic languages that can write their own code or having to find a programmer who can. There, I've admitted it I'll go to any lengths to avoid relying programmers to automate my business. Their job is infrastructure, and they should build infrastructure that I can use to automate my business operations how I please. If Sean can write a GUI that gives me that freedom without including metadata parameterization, then fine. My gut tells me he can't. But then, perhaps that's because my gut is making imprudent bets on the chimera of declarative application building.