I have worked on a few projects lately where the the conversation typically went as follows:
"We aren't coding anything, we are simply changing the configuration within the product"
or "We don't need to deploy our changes to Subversion/CVS/BitBucket/GitHUb as it is config not actual code" (and sometimes the word "actual" is stressed).
Sound familiar?
So I thought I would define what I thought are the traits and differences between config and and code:
Config is:
- Customisation of mature code, without affecting that code
- Held in a source control system, wherever possible
- Setting and changing parameters via simple instructions
- Carried out using a visual tool or interface
- Limited in scope (to what the developer wanted to expose)
- Best suited to making changes to SaaS (Software-as-a-service) products
Code is:
- Scripted or compiled
- Always held in a source control system
- Carried out using an IDE (Integrated Developer Environment) such as Visual Studio or Eclipse
- Far less limiting in scope (to what the developer wants to do)
- Where repeatable functionality is held
- Best suited to the creation of bespoke applications
Or put another way:
If you need a developer to make a code deployment once a configuration change has been made (to implement that config).... it is not config!