Monday, November 09, 2020

Evaluating the health of a software development unit

[ Out of scope (but extremely important): Are we producing the right thing? ]

If I were to evaluate a software development unit, I would ask the following questions:

(measures of current health)

  1. How long does it take after an new idea is conceived until it starts being used by end users?
  2. How long does it take until a change request or a bug is discovered until it is deployed?
  3. How consistent are these times?
  4. How many errors are being deployed to production, and how are they discovered?

(measures of continuous/improved health)

  1. Are developers growing?
  2. Are processes being improved?
  3. Is technical debt managed?

 

To probe further as to where the areas of improvement lie, I would investigate the following key attributes of the product:

  1. Maintainability (e.g. coding standards, test automation, documentation)
  2. Release management (e.g. CI/CD, traceability, planning, configuration mgt)
  3. Risk management (e.g. single-point-of-failures, technical debt, regulatory compliance)
  4. Quality management (e.g. testing, code reviews, repeatable procedures)
  5. Serviceability (e.g. logs from production (errors, statistics), handbook, su configuration)
  6. (Security (e.g. scans, audit, access mgt, policy))