Rich blogs that Code is the Enemy and I couldn’t agree more.
I’ve been looking for ways to get code out of the code. Is there something the code is doing that can be turned into an external dataset, and driven by a web UI, or some rule-list that I can contract out to someone on elance? Maybe a little rule-based language has to be written. I’ve seen this yield an unexpected productivity increase. It turns out that using the web tool to edit the rules in the little domain-specific language ends up being more productive than messing around in the raw code anyway. The time spent formalizing the subdomain language is more than paid back.
We do this extensively within Tailrank and it clearly pays off.
We have a system of configuration files that are reflected on startup (or at runtime) into a running virtual machine.
Each Java property can be set this way so that we can enable/disable systems at runtime, add new regular expressions, fix configuration bugs, etc.
It *clearly* beats code since you can push out small releases at runtime without pushing a new build. It also means that you can push things into Operations which were formally the domain of Engineering.
We have domain specific configuration settings as well including spam prevention, custom URL canonicalization, etc.
I seriously can’t tell you how many hours of work this has saved me.