Language Learner Looks for Leads in Learning?
zanzibar asks: "I learned C in a college course, I learned C++ and Java from books, and I learned Rails from blogs. I'm not convinced one of these methods was more effective than the others. I want to know what other readers think about technical education. What do they want to learn and how do they want it delivered? What do they like about their options today (from college coursework to Wikiversity)? What's missing? What just doesn't work?"
What do they want to learn and how do they want it delivered? What do they like about their options today (from college coursework to Wikiversity)? What's missing? What just doesn't work?"
In my personal experience, classrooms that were structured were one of the best methods for me. In the end though, the best way to learn is to practice, which may be why the structure of the classroom was most effective for me. Learning from books is my second suggestion, as when I try to learn from an online source, I tend to get distracted... too many links and other areas to explore.
I know this subject has been talked about many times before on slashdot, and the general consensus is that discipline can keep this from affecting you, but with ADD and a daily overdose of caffeine, the discipline falls by the wayside when I see something shiny (oooo a 14 line ruby rss aggregator!).
So what works for me? If I'm not in a classroom, I work from a laptop and a book... with the wireless turned off. It's the only way to enforce the discipline I need.
Your sig(k) has been stolen. There is a puff of smoke!
After you've learned a half dozen or so languages it doesn't really matter how you learn a language. You often don't need to learn a languge to, say, modify a program written in it, so long as you have the reference by your elbow.
I'd recommend reading the reference documentation which defines the language, then doing some non-trivial maintenance on some real code written in that language. You shouldn't need the programming 101 stuff, and as often as not that stuff imprints bad habits (e.g. sql injection in PHP). Ideally you would work on a first class example of top notch code, then maybe work on some not so stellar ones, to get an idea of what is good and what is bad about the language.
Learning a language is a trivial exercise once you have a few similar ones under your belt. The toughest thing is learning the environment the programs are supposed to run in. Anybody who can program in some C like programming language can learn to program in Java in a few days. It takes months to wrap your brain around J2EE.
On the languge front, you really want to learn master several different paradigms or models. If you program Java, it doesn't make sense to worry very much about C#. What you really want is to learn a set of languages that "think" different ways. For example: Java, Prolog, SQL, Lisp, and something really primitive like assembler. Knowing different models for expressing your ideas will help.
After that, it's a long nasty slog through learning platforms, frameworks and APIs. If the biggest problem in my professional life was learning new languages, then I'd be very happy. It would mean that I would have only my own hubris and fallibilty to have to deal with.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.