(Disclaimer: I am not a doctor, so I can’t guarantee that anything I say about medical practices is accurate.)

Recently while watching an episode of House M.D., I realized how similar differential diagnosis is to software debugging.

Like any good doctor, the fictional Dr. House first seeks to verify the cause of a patient’s ailment before prescribing treatment. House is a modern-day Sherlock Holmes, master of observing the mundane details that give clues about what condition a person may have.

This art of observation is not limited to the present. Talking to a person and understanding their medical history is as important as performing tests and taking vital signs. Medical testing can give important insight into the current state of a person, but often it is what happened prior that allows a doctor to determine how a patient should be treated.

If I walk into the ER with a bite on my arm, the doctor is going to ask what happened. I could have been bitten by a dog, poisonous insect, or rabid squirrel, and all cases would need different (and potentially life-saving) treatments. Sure, they could clean up my arm and prescribe antibiotics, but there are too many potential causes to treat them all simultaneously.

Read more →