I wonder if the adrenaline and stress makes a big difference. For example, I've been trying to improve my German for roughly forever, trying assorted books and CDs and such, but the best results have come from going to a weekly class.
Even without (much) studying I learn all sorts of things, and I think it's because I'm put on the spot to read things, conjugated verbs, make up sentences, and so on.
All of the real-time pressure (though, really, it's fun overall) seems to make a big impression on my brain.
Now I need to try speaking German to random women. :)
After two weeks I could actually survive through a conversation. When I started I knew no German at all.
desire > ability
There's obviously no better way to learn then to immerse yourself in the culture, but you'd be surprised how many friends come back from a year abroad and have minimal gains.
to learn a language, try every time you meet someone in German, or even using online dictionary, spend 30 minutes talking/ asking questions/ writing down how to say that.
review it every day for at least an hour
learning a language takes a ton of diligence, and I've found that I often forgot what I learned if I didn't repeat it every single day for a good bit of time
soon, your mind will begin to think in the language ( a scary thought for me, a mono-lingual speaker at birth)
Subject + verb infinitive + object
and people will understand. Of course, grammar is important, but I hate it when I have to say "he is very good" instead of "he is quite good" because I don't know the right word.
I've heard that you need 3000 words to be reasonably comfortable in a language. With 40 words/day, that's still 3 months, which should be enough to pick up grammar if you actually talk to people and study a bit on the side.
I think this same kind of learning process applies to anything that you really have to understand to get good at. Many things have two levels of understanding: most people can drive, but who really understands how the transmission works? Those are the people that are able to truly control a vehicle, and they probably drive manuals.
Learning is not hard, unless you're studying something that you don't like, for example years in school when I started studying Logic it was a real pain. Later when I started learning statistics I figured out that logic is awesome, and is the basis of many many things.
http://www.sciam.com/article.cfm?id=mom-was-right
Sorry about the paywall, but you can get the gist from the summary.
Programming is similar. We make mistakes and brute-force our way through. We start to recognize patterns. That's experience. It's a lot easier however (even though it's all in the head) to do fail in something if it's only you and the compiler/runtime (who cares if it doesn't work right away, you know it will) - when other people are involved, it's a lot harder (fear of what people think)