[ 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)
- How long does it take after an new idea is conceived until it starts being used by end users?
- How long does it take until a change request or a bug is discovered until it is deployed?
- How consistent are these times?
- How many errors are being deployed to production, and how are they discovered?
(measures of continuous/improved health)
- Are developers growing?
- Are processes being improved?
- 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:
- Maintainability (e.g. coding standards, test automation, documentation)
- Release management (e.g. CI/CD, traceability, planning, configuration mgt)
- Risk management (e.g. single-point-of-failures, technical debt, regulatory compliance)
- Quality management (e.g. testing, code reviews, repeatable procedures)
- Serviceability (e.g. logs from production (errors, statistics), handbook, su configuration)
- (Security (e.g. scans, audit, access mgt, policy))