Empathy is the fundamental skill of understanding other people, but it is just as essential for developers, enabling them to build a psychological connection with their programs as they code.
And this isn’t just about teamwork, listening to users and the other human aspects of being an effective developer. Even if you are working on a simple program on your own, empathy is how you understand what a computer is going to do with your program.
It’s easy to dismiss this as anthropomorphism, but that handwaves away the truth: humans systematically treat computers (as well as other machines, such as automobiles) as if they are social actors. Clifford Nass and his colleagues tested this: in a wide-ranging set of experiments they found that:
- People apply social norms like politeness to computers
- People apply concepts of “self” and “other” to computers
- Gender roles apply to computers
- It’s the computer itself that matters, not the programmer
So yes, empathy makes people more effective coders, because the core of empathy, stepping into someone else’s shoes, applies equally to computers, and is the exact same technique you need to program effectively.
This idea originally came from Seymour Papert’s work on LOGO, although there were hints of it in Oliver Selfridge’s “Pandemonium architecture” in the late 1950s (which also remarkably used an early version of back-propagation - the same algorithm that is central to modern deep learning).
LOGO’s unique feature was a “turtle”, originally a robot that moved according to commands in the language, although the robot quickly became a virtual character on a computer screen. The turtle could move, draw lines, and so on. For Papert, the character of the turtle helped people see geometry from the ‘inside’:
“Children can identify with the Turtle and are thus able to bring their knowledge about their bodies and how they move into the work of learning formal geometry” (Papert, 1993, original emphasis).
We learn this ability to take someone else’s point of view very young, usually between two and four years of age. It’s the capacity we use to tell us that what someone else thinks might be different to what we think. It’s the very foundation of our social world.
But this also enables us to know that a computer’s point of view isn’t the same as our own. Just because I intend that the variable “day” contains “Wednesday” doesn’t mean that this is true from the computer’s point of view. To debug issues like this, we need to imagine ourselves as the computer, following its program, step by step.
So how do you debug your code? Do you imagine yourself as the computer, following instructions? Is this the source of your intuitions? Or do you try to remain more objective, and work by collecting evidence in a more systematic way?
I’d love to know your answers and what you think about this. Contact me: @turalt, stuart.watt@turalt.com
Dr. Stuart Watt has a PhD in psychology and AI, and is CTO of Turalt, a Toronto-based AI company using cognitive and psycholinguistic models to solve the negative impact of miscommunication in business.
Image © studiostoks at 123RF Stock Photo, used with permission.