Friday, October 17, 2008

What is production?

Production is everything that is day to day operation of the software - INCLUDING things which are exceptional but are still done on a regular basis.

There is NO point glossing over things which users are going to need with a frequency more than yearly - because before you know it, they are going to need the system to accomodate what you have said is too exceptional to build into the system.

I'm not advocating building everything into the software part of the system. But a system really includes the maintenance, the support staff, the processes and everything required to operate the IT enterprise.

In the same vein, the majority of the lifecycle of software, you are going to be in production, so your actions prior to production should be most closely a reflection of what they will be in production. e.g. If you have an operation which in production you would fix a package and reload a file because an ETL package breaks, then in pre-production when you are loading an entire data warehouse history, it makes little sense to fix the package AND go through all kinds of abnormal operations and creation of throwaway code to fix previously loaded data, when re-loading all the data with the fixed package will:
  1. Validate the new ETL package
  2. Validate the fixed package over a broader range of dates
  3. Increase your level of confidence that the package changes have not broken anything
  4. Avoid having to test code which will be thrown away
  5. Avoid having to think how to test the throwaway code

Apparently understanding production is a big problem these days and it comes from most developers having too little experience running production and too much compartmentalization and separation of IT from the business in general.

0 comments: