Homo logicus are driven by an irresistible desire to understand how things work. By contrast, Homo sapiens have a strong desire for success. Programmers also want to succeed, but they will frequently accept failure as the price to pay for understanding. An old joke about engineers gives some insight into this need to understand:
Understanding the problem with the scaffold was more compelling than staying alive. When I lecture to groups of computer programmers, I ask for a show of hands of how many in the audience, when they were a child, took a clock apart to see how it worked. Typically, two-thirds of the audience will raise their hands. I then ask how many of them ever got that clock back together again, and all but a few hands will drop. I then ask how many considered this experiment to be a failure, and most of the audience will laugh as they realize that they got full satisfaction out of breaking their clocks. Homo logicus want to understand how that clock works that is their goal and they are quite willing to sacrifice a working clock to achieve that goal. Homo sapiens, on the other hand, like to have clocks that work. Their goal is to be able to know what time it is, and in exchange, they will forego knowing what makes the clock tick. Interaction designer Jonathan Korman points out:
Programmers' drive to understand makes them instinctively create interaction that closely follows the internal functioning of the product. Instead of making the program mirror the end user's goals, it reflects the working of the mechanism within. Programmers are naturally comfortable with it because when they understand how the software works, they understand how to use it. We call this common interaction style implementation model. For example, computer documents are permanently stored on disk drives, but programs can only modify documents while they are temporarily stored in RAM. Programmers are very comfortable with this technical distinction, so the interface to their programs reflects the two storage types. Exposing the two types to the user is as unnecessary as putting a switch on the dashboard of your car to force you to select between radial and bias-ply tires. Normal humans are quite content not to know how something works, even though they use it and depend on it in their everyday lives. They see implementation-model interfaces as imposing an unnecessary burden of understanding on them. Programmers find such attitudes inscrutable. |