Kurt Seifried

Why Domain Specific Knowledge (DSK) is critical to writing good software – an example

Software for the police written by someone trained to be a policeman:


Look for a genuine problem to be solved, not a way to leverage some technology. Really understand the problem that you seek to solve. For example, we have one of the ugliest UIs in the world, and unless you are a cop it’s very difficult to understand why. On the left hand side is what we call the pedigree: the person’s image and an image of their car model. This is designed to be used on a portable computer in a moving unmarked car, and all we want to give you is the ability to see that person on the street or the car in the driveway. Some of this information looks redundant but it isn’t, e.g., age and date of birth. The age is so I know how old the person who I am going to encounter is. The date of birth is to confirm her identity once I see her. The area on the right changes. It shows home address and home street view when you are still driving. We require almost no keystrokes. Cops hate typing, and they are in a car so they are not allowed to type while they drive. Everything is one click away except when you are parked. We are anticipating the workflow in the order in which we believe a cop will do it but we don’t require them to follow our workflow order.

I would have put a pic of the front of the car (wrong) and just the DOB (making the cop do more work to mentally figure out the age). Good thing I don’t write software for the police.