Does anyone here have tips for ExtremeLearning or LearningInPairs?
Heck, does it even work? I am specifically looking for ideas on learning new things outside of programming *in* the language.
Tell us a little more ... what kinds of things do you hope to learn?
Ok, I can sling DHTML, JavaScript and Java pretty well. Now we are using various technologies (from MS and others) to *do* things (Present multimedia or encapsulate our gems for others to use).
Example Technologies:
JavaBeans - Self contained Java objects that I can reuse. DirectXXX - Various multimedia technolgies from MS to do Nifty Cool(TM) things like 3D rendering and 2D animation.
A strategy I have tried is "assignments".
We know what our goal is. Pick a topic in our given technology, read and experiment about it for a day. Get together and try a solution (or a piece of it). Iterate until the end of the day until we -- 1) Solve our chunk or 2)Realize there is more to learn and spend some time on topic X and come back together to try again.
There is a strong desire to explore together, but in "learn mode" people experiment at different rates and can "deadlock" the computer. OTOH, when we have gotten together there have been many "DOH!" experiences, where we start showing off solutions to each other and one says "DOH! I spent way too much time figuring that out" and the other person has a righteous solution. This is quickly followed by an AHA! experience :-)
Anyways others and I are trying to learn API's or technolgies outside of the programming language we are currently working in.
adam... -
When I was in 2nd grade, I taught my sister how to read ("the Mouse Book" ISBN unknown). Just the two of us, side by side, at the same workstation (er, book). I had no special teaching capacity, I was 7. No doubt it was a LearningInPairs experience. Anyhow, I think I'd enjoy learning programming the same way. I just can't find the partner or the job that will allow this non-programmer to learn something more complicated that HTML. -- SeanOleary
As in ExtremeProgramming, continuous feedback(between you and your system, or your customer) and driving metaphor play a great role in ExtremeLearning. Skinner's box, the icon of psychological behaviorism, has something to say on the importance of feedback in learning. (Though the box as representing the human learning model is totally abandoned, it has some value to learn.) There is a rat and a hole through which foods come in when a button inside the box is pressed. At first the rat does not recognize any relationship between pressing the button and the result, food, when it has accidentally pressed the button. However, as time goes on and the rat pushes the button more often, and consequently getting more food, it gets on to LEARN the relationship. She's acquired a working knowledge. But the learning process slows down significantly as we increase the delay between the time she pressed the button and the time the food come out. Quick feedback is the point.
Therefore, rather than learning everything needed, usually a set of formal rules, before you do anything in practice, just do it and see the result immediately to reduce the delay and increase the feedback.
If you are to learn HTML, don't dig into the formal textbooks which teach you HTML beginning from the history and protocols and all the tags. Instead, try with a simple interactive environment(simple web authoring tool) and test, experiment, tinker and play to see the result, and then modify the HTML source a bit, and get the feedback again. After you gained some critical amount of real world experience, learning formal rules is quite easy.
When learning a programming language for the first time, interactive interpreted language such as SmallTalk or Python is a good choice in the same vein.
-- JuneKim
Old EightBitBasic? languages are superior to most widely-accepted modern languages in this regard. What implementation of CeePlusPlus, or JavaLanguage has an ImmediateMode?? As stated above, SmallTalk and PythonLanguage have them, as well as VisualBasic. RubyLanguage comes with an input-evaluate loop program that serves the same function, and the tutorial encourages its use, but it's not built into the language itself. And PerlLanguage has these weird debug command line options that do something kinda sorta like immediate mode only more confusing, if you can find it. --NickBensema
Like any analogy, ExtremeLearning is going to be thin or patchy in places, but....
If you are learning 'mathematics' the equivalent of 'refactoring' is refining a proof - or finding alternative ways to prove the same thing. This is something many undergraduates take a long time to learn the importance of. When you have several ways to prove the same result, or have gone through the process of cutting down a 3 page proof to half a page, you start to understand the essence of the problem and proof. Unit tests? Hmm, I guess these are consistency checks, like substituting specific values / cases in a general expression to verify that it is valid, or check where it has gone wrong.
If you are learning a language (spoken), contrast the approach of a intensive language courses (which immerse you in the language) and normal language teaching in schools. My experience of language learning in school was akin to programming in batch submission mode - write essay, submit to teacher, receive essay back covered in red ink. In an intensive language learning environment you get many chances to improve on your first attempts at 'What I did at the weekend', also people spark off each other, adding to what someone else has said, reusing their vocabulary and idion in a different way... Unit tests? A bit weak there, but if there's an ethos where people correct each other there is some fast turn-around feedback.