Code complexity has categories

Technical:

The domain of knowledge or in this case business or scientific rules and baselines that are needed to satisfy the conditions of the problem.

  • Example 1: Tax laws being codified into software
  • Example 2: Gravity calculation and or light calculations when performing astronomical simulation and modeling.

Intrinsic

  • Example 1: Timeouts
  • Example 2: Hardware failures

Extraneous

  • Example 1: Cognitive load, how hard is is to find things and or trace the flow and process of the system as a whole.  How are things ordered
  • Example 2: Toil: What is the relative working conditions of the codebase and tools used to interact with it.  Each environment is a stand alone virtual machine that takes half an hour to start for local development or is it a single executable that is run immediately after successful build?
  • Example 3: Deployment placing this in separate section as it is so often fraught with introduced complexity

Deployment

  • How automated and smooth is it to deploy your code to production?
  • What approvals are necessary to deploy code environmental or political?
  • Are developers empowered to deploy at will and when necessary?
  • How many steps are necessary to rollback failed or problematic deployments?
  • What is the confidence level of code that is deployed?