In an earlier life, I coded several different life-critical applications that aided decision support in complex domains. Domains where a mistake could result in people being injured or dying. As the code was written, new use cases were discovered. What if there is a 2,000-pound baby with kidney failure? Is that a typo or a real thing? What if the scientist in the lab did not follow the formula as described? What if, what if?
Naturally, the fear of harm slowed development due to an abundance of caution. The qualified clinicians and scientists could describe scenarios fantastically, and always prescribe a solution. We would record each scenario or use case in the following format:
Given these INPUTS when WE DO SOMETHING then RETURN THIS MESSAGE
As the product was developed and new use cases were discovered, the clinician would always have an answer. For example, even the 2,000 Pound Baby scenario resulted in a prescribed solution.
Given a 2,000 Pound Baby when prescribed ANYTHING then return “Ask a qualified clinician.”
If all the inputs could be discovered, it could be codified into the correct set of outputs. As the product matured, a pattern started to appear – all edge cases followed the same algorithm. Any patient or scenario in which we did not have clarity on the solution would result in asking clarifying questions to the clinician or scientist. All edge cases followed this same pattern, then I realized – all cases followed this pattern, a default use case, “Ask a Qualified Clinician.”
Given ANY INPUT that doesn’t meet any other input criteria when WE DO ANYTHING then return “Ask a qualified clinician”
If the first use case or scenario had been, “Ask a Qualified Clinician” and carefully coded the other exact scenarios, we could have theoretically released daily since the “Ask a Qualified Clinician” scenario would protect us from the “What if, what if” scenarios.
This was our first step on our pathway to keeping our Life Critical Decision Support Application always shippable. A future post will talk about carefully coding the other exact scenarios. And like all good decision support systems, before you adopt this practice, “Ask a qualified clinician in your organization and domain.”