# Just-in-time Learning

One of my favorite ways of learning is just-in-time learning. That is, you learn something when you need it. Splines are cool and all, but you don't really need to learn them until you're doing something with cubic interpolation. (Like path definitions in video games.)

When I learned about splines, however, I recognized that my just-in-time learning strategy would have failed me, had my other team member not known about splines. Just-in-time learning only works when you have a broad enough knowledge base to know what you need to learn. If you have no idea what sorts of problems calculus can solve, you will not even consider needing to learn calculus to solve a particular problem. Put me back in that situation of ignorance of splines, give me the same problem, and I would have suggested doing some basic Newtonian physics to come up with a standard function for a parabola. But how to unitize it... No clue. It was a problem I was brick walled against, and a spline-less solution would have been inelegant and ugly. It would not have been a good solution. This is why teams can be beneficial: you draw from each other's knowledge pools, and just-in-time-learn the specifics when someone knows generally what is needed.

Also, for a side-note, just-in-time learning isn't for everyone. I suspect my high IQ helps me in this aspect, but people with very average or below average IQ's would struggle to take up my learning methods. IQ is a fairly reliable test to measure how easily a person can learn new things, and the reason they have geometric and pattern matching questions on it isn't because knowledge of such things is more useful than, say, knowledge about car engines, but because humans are known to suck at holding shapes and figures and calculations and patterns in their heads, no matter how smart they are. How well you can do it versus someone else is a key thing the IQ test measures.

So, back on the topic. I got a job recently where I'm required to do Java and Flex programming. Now, I've had prior experience with both, and even though my experience was limited I've still found myself quite able to do my job. Knowing how to research is also a key requirement of just-in-time learning. With JIT learning, you don't have the luxury of buying a book and reading it over the course of a month or two. You need the answer to your problem now.

But even within the Flex world, I still often find myself having more general knowledge than the people I learn from! Okay, this example isn't so much knowledge as much as thought pattern, I can't say whether the blog authors I've read know of closures or not, but Flex has a global function callLater() which takes a function as its first argument along with optional parameters to pass. What I've seen a lot of:

...
callLater(assignItem);
...
private function assignItem() : void {
waited_for_item.text = "blah";
}


can be simplified so much more clearly with a closure:

...
callLater(function() : void {
waited_for_item.text = "blah";
});
...


One of the main reasons you'd use callLater() is because you can't do what you want to immediately where you're at in the code, and I bet it makes logical sense for you to want to. So instead of writing a whole separate function, just use a closure! The same goes with a lot of places where you dynamically add an event listener. Don't know what a closure is? You're not going to use one, and you're not going to think of using one! Everyone who wants to be a programmer should learn about functional programming, just so they know these things exist, and if they need to learn more about a specific thing they can do so later with JIT-learning.

And so I learn, not just with JIT-learning, but using any means I please, for the sake of learning. I learn broad as well as deep, across a wide field of areas. Perhaps what I learn may be useful in the future when I need it, and I can JIT-learn the specifics, maybe not. But what I'm saying is that in order to be a good JIT-learner, you need to be a good learner in the first place.

#### Posted on 2010-07-06 by Jach

Tags: flex, learning, personal

Back to the top

Comment using the form below

(Only if you want to be notified of further responses, never displayed.)

LaTeX allowed in comments, use $\\...\\$\$ to wrap inline and $$...$$ to wrap blocks.