There's a theory that there are two kinds of thinkers, Mappers and Packers.
The Mappers
maintain an elaborate mental map of all of the concepts they know, and how they
relate to each other. They process new facts by mulling them over until they
understand the underlying concepts and have figured out how to fit them into
their mental map. When two mappers have a conversation, they unconsciously
cooperate to exchange information about which concepts the other person already
understands and what names the other person uses for those concepts.. in effect,
a Mapper talking to another Mapper extends his own mental map so that it relates
to the concepts in the other Mapper's mental map. By establishing this shared
vocabulary for complex abstract concepts, two Mappers are able to exchange a lot
of information very quickly -- they say just the essential details and assume
that the implications of those details will be obvious to the listener (who has
the same complex, abstract, interrelated concepts in his mental map, from which
the implications are supposed to be obvious).
Anyway, Packer thinkers don't
work like that. They accumulate facts, and use those facts to solve problems,
but they don't usually spend much time thinking about the underlying concepts
and how they relate to each other. Mappers tend to figure out the underlying
concept and integrate it into their mental map, and just remember the concept
while forgetting the specific factual details they saw. But Packers tend to
remember those details instead. Because of this, their problem-solving
strategies rely more heavily on facts and less heavily on weird conceptual
leaps.
Most people tend toward the Packer style of thinking, but nearly all
programmers are Mappers. Programming is all about manipulating abstract
concepts. Programming activity is mostly mental: it's mostly Mapping.
The
Mapper/Packer theory helps explain why programmers tend to be really good at
explaining programmer-things to other programmers (who are also Mappers), but
not so good at explaining it to everybody else (who are mostly Packers, and
those few who are Mappers don't know any of the hundreds of interrelated
concepts about programming that programmers have in their mental map). For a
programmer, learning how to explain technical things to non-programmers,
especially Packer thinkers, can be a bit of a challenge. But a good first step
is realizing that the person you're talking to probably doesn't even think the
way you do! You might have to explicitly spell out things that seem extremely
obvious to you. [ Reply to This | Parent | # ]
|