This article carries at its heart the purpose of helping you raise the level of your technical competence. It is about helping you make every second you spend learning something count; all using experience-grown tactics that prove their worth in practice.
Essential Introduction: Mental Models
Simply stated, a Mental Model (a known concept, not a fancy term I pulled out of my sleeve) is a certain imagination or logical explanation one has for how something happens or works.
For example, you were able to learn how to drive your car because someone helped you learn a mental model that explains the car’s behavior. This mental model was encoded in your mind in the form of a set of facts and cause-effect relationships.
“Shift the gear stick to D then push down the gas pedal and a car will move forward”,
“Push down the brakes pedal and a car will slow down to a stop depending on how far you push the pedal”
… and the rules go on.
These rules in collection plus some facts (what is a car, pedal, etc.) represent a simple Mental Model that if you hadn’t acquired through both learning and practice, you wouldn’t have been able to drive your car.
It is important to mention that some whiz professor called Dr. Donald Norman describes the properties of mental models – that they can be “contradictory, incomplete, superstitious, erroneous, unstable, and varying in time.”
Strategy… and Tactics
It can be argued that the purpose of education in general is learning Mental Models that are stable (not easily forgettable), reliable (can be recalled fluently), and useful (has value because you can perform something with). The following tactics are all geared towards helping you efficiently learn useful Mental Models. They help you get the best out of any learning experience you go through in everyday life.
With these tactics…
- You’ll learn more in less time
- You’ll remember more of what you learn
- You’ll gain better insights from problems and challenges you face
Tactic #1: Do Most of Your Learning By Example
Hardly a surprise. When learning a particular technology, minimize reading and comprehending long theoretical text to the least possible. Be selective of what you learn, and start by the most common scenarios for applying the subject technology (taking JSF as an example, I’d start by creating an application with some simple forms, validation, templating, etc.). Practice those common scenarios to get hold of the basic concepts of the technology.
The way I see it, learning is a means to an end. Your ultimate purpose is to get some job done, learning the theory behind what you do is often enjoyable yet sometimes optional outcome.
Tactic #2: When Facing a Problem, Step Back and Reflect FIRST
Before jumping your browser’s toolbar to google your problem, do some careful thinking about it first. Although this might seem counter intuitive, the reality is that some proper focused thinking in your problem will certainly lead you to a better understanding of your problem.
The traditional approach is that you only have some superficial knowledge of the problem and may be some leads — may be in the form of a handful of error message or keywords. If you take those and you google them… presto. You often find a solution to your issue within a few clicks. Ironically, you have never really understood neither the problem nor its solution!
The bad thing about googling the hell out of every issue we face is that it often cancels out a very important intermediate step in any problem-solving effort: understanding and gaining insight into the problem. Careful thinking is an essential part of any serious problem-solving; do it when you want the problem and its solution to stick in your head.
Tactic #3: Learn More In Less Time By Condensing Your Understanding
Any complex creation of the human mind (e.g. technology or book) can be traced back to a few source concepts. These source concepts are the seeds around which the complex creation was formed. When reading long text or understanding a technology, “Step back and reflect” to condense your understanding into few key points, actively seeking to uncover those basic principles or concepts behind whatever that you are understanding.
Tactic #4: Learn Efficiently By Contrasting Close or Similar Concepts
Understand by contrast. If you spend one week learning a technology like Tapestry by example, and another week learning JSF by example, chances that you’ll end up understanding a whole lot about the essential concepts of View frameworks in general by just contrasting the differences between the two (more or less) similar technologies. Bonus: the contrasting happens in the background of your mind while you’re learning the second technology; you don’t spend any conscious effort doing it!
A simple yet extremely powerful variation of this tactic is (for example) to put yourself in the shoes of the creators of Technology X that you want to understand. What would they have done to implement Feature Y? If you do that kind of thinking before you attempt to understand Feature Y, you’ll be contrasting your own mental models of Feature Y against how Feature Y was actually implemented!
Learning by contrast is a very powerful technique. Use it whenever possible.
Tactic #5: Avoid Learning Without Purpose
In order for the Mental Models that you learn to persist and not evaporate, you have to associate them with some purpose that is important to you. Try reading a book about Hibernate just for the purpose of learning Hibernate… and then try to read the same exact book for the purpose of creating a small Library application, interleaving practice with reading. See what I mean?