Learning Wish List
In Open Training Resources, Tony Hirst asks: “[F]or those of you who do learn new stuff, maybe every day, what do you find most useful to support that presumably self-motivated learning?”
I’ve spent huge amounts of time over the past year learning XQuery, R, and several other arcane technical topics. This learning is still very much a work in progress. So Tony’s invitation offers a wonderful opportunity to reflect a bit on my own learning and to offer up a “what I wouldn’t give for.”
I learn best with examples and use cases. If I want to accomplish xyz (eg, write a program to generate dynamic xhtml), it helps tremendously if there are several illustrations of what needs to be done and how to do it. These let me build on what others already know without needing to discover this knowledge myself through trial-and-error.
Don’t get me wrong here. Learning is tough tough work sometimes. I expect and even welcome being stuck on problems. But there is a point where being stuck stops being useful and starts degrading the desire to learn.
In a prior life, I wrote a book whose sub-title was “Queries with SQL Objects.” Defining common business populations in language understandable to complex relational databases can difficult. For example, to define “university applicants accepted for admissions” might require 20 or 30 lines of SQL in a fully relational database. The idea in my book was simple. Why reinvent the wheel? Instead, create snippets of SQL for common definitions so they can be re-used or modified in other queries.
It’s an old technique of programmers everywhere. Production quality snippets are written and re-used, but also serve as wonderful examples of best practice for less experienced programmers. Learn by example, by copying and modifying work of others.
Examples by another name are called use cases. The W3C, in particular, provides use cases as ancillary material to their recommendations and working drafts. These are extremely valuable learning devices, much like problem sets at the end of a chapter except that partial answers are frequently included.
Despite strong self-motivation and the availability of examples and use cases, my XQuery learning has certainly had its rocky periods. Some of this frustration occurs merely because of topic life cycles. It’s easier to learn R (in some ways) than XQuery, for example, simply because R is older, has more history, and more people have developed learning aids. Learning at the bleeding edge is not so easy, but eventually when creativity takes over that is precisely where we all must gain comfort.
Here’s a recent example that may make this more concrete. In December 2008, the W3C issued a working draft called XQuery Scripting Extension 1.0. XQuery is a quite powerful tool for querying XML, but the scripting extension allows XQuery to be used in places where JavaScript and other scripting tools are currently used. It’s a nice idea. You basically use the same toolset across server, middleware, and client platforms.
Anyway, I came to the scripting use cases with the hodgepodge knowedge of XQuery that I’d manage to piece together myself over the past year. And promptly got stuck on one of the use cases. For over a week. After a point it stopped being fun. Searches for related examples turned up little. And who, exactly, could I ask for help? It’s not the W3C responsibility to teach me what I don’t know. Nor is it the responsibility of the vendor who implemented the XQuery that I use. Luckily there are XQuery forums with some extremely experienced and gracious participants. But this is an option of last resort; one that can only be used sparingly. In this case, I simply persevered and debugged and re-wrote and debugged and eventually found and solved 3 errors.
Here’s what I wish I had available along the way.
First, more examples. There can hardly be enough of these. And they must be accessible. I don’t care if they’re all in one convenient place, just so reasonable searches can turn them up.
Second, linked examples. Like many people trying to learn something, I often start in the middle rather than the beginning. So there are huge gaps in what I don’t know. What I wouldn’t give for examples that are linked to other examples. Don’t know what this means (eg, a sequential function), then go here, read this, and look at this other example. Then my learning can be serendipitous. I learn what I need when I need it … a just-in-time learning if you will. Rather than learning in a pre-determined manner that may make linear sense but doesn’t relate to the issues with which I’m grappling. Nor do I want to learn entirely through the black hole of knowledge self-discovered.
Third, mentors. I like to learn by myself, but there are times when asking someone with more knowledge and more experience is simply the best option. It has to be used carefully, but what I wouldn’t give for an occasional mentor when I really get stuck.
And, fourth, trailmaps. These are terrain guides put together by mentors or anyone else who felt comfortable offering an opinion about what and how something should be learned. I’d expect these trailmaps to vary considerably from one guide to another, even for the same terrain. But they’d provide wonderful opportunities for a learner to judge his or her own learning against what more experienced learners believe to be important. I’d really like to know, for example, that to get to a sunlit mountain lake I’d best prepare by learning to scramble up a boulder field.
Maybe these learning crutches exist in some subject or project areas. I don’t know. But I sure wish they existed for the things I’m trying to learn.
Thanks, Tony, for the chance to put this into words.
