App configuration is one of my hidden passions. Think of an application that ships to five tiers of users (dev builds, then internal, alpha, beta and stable), with different set of options (backend endpoints, feature flags etc.), compiler flags, and all automatically on a Continuous Delivery system. How to make it work predictably, easy to inspect, difficult to break and misconfigure, friendly to modification and extension, mockable in a testing environment, partly dynamic based on the environment etc etc etc.
Sounds complicated, very techy and detailed, and feel like home to me. I often get very frustrated because I can’t solve all of the puzzles at once in my head. But then I feel high levels of satisfaction because it just works for all of the team.
Configuration usually spreads very quickly and deeply through the codebase. It’s difficult to refactor it, because often you have to simulate certain environments. It’s a careful, minesweeper-like work.
I wonder if I should start writing detailed guides on what works best from my experience. I also wonder if I can read anything on this subject.