Configurability is one of the most crucial, and one of the most frequently mishandled, features of a product.
A good configuration enables crucial calibration and evolution of a product to meet evolving external conditions.
Systems engineers must provide a list of configurable variables with explanation of usage, impact to product, range of settable values, default value, and within the range of settable values, the list of values to test. The test list has a multiplive effect on unit testing, and potentially on system test. The rookie systems engineer may define too many configuration variables, and large ranges of values to test, only to find out later, that only the default values have been tested for many of the configuration variables due to time constraints. The experienced systems engineer will define the minimum set of configuration variables, and restrict as much as possible the testable range space. The engineer may highlight hard coded variables that may be candidates for future change so that the plumbing is created to enable adding configurability to these variables, if desired, in future product updates.