Language Learner Looks for Leads in Learning? 42
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?"
Learning styles (Score:4, Interesting)
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.
It doesn't matter (Score:4, Interesting)
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.
You've already figured it out... (Score:3, Interesting)
It's not what language you know. It's about knowing how to solve a problem independent of any language, and then using the language that best solves the problem.
Just keep learning languages for new ideas to express things, but don't keep learning languages thinking that you're going to end up learning The Language, that conquers them all. That language doesn't exist, and it likely never ever will.
Wrong! I used to think that way too... (Score:2, Interesting)
I knew BASIC, C, Pascal, 80x86 assembler, C++, VB...
A look was enough to learn PHP, Python, Lua or any other of many languages that I learned for a single project and forgot.
The easiest to learn was Ruby, but it had a catch: it introduced me to the world of languages that aren't as easy to learn.
You see, learning PHP when you know C and VB is trivial because they're practically dialects of the same execution model. That's why when you learn another one, it doesn't feel like you actually learned something.
Learning LISP was like learning to program all over again.
Brainfuck too.
I still haven't found myself in Smalltalk (I have problems with trying to do too much too soon - I can write simple programs, but the GUI systems, both MVC and Morphic, I couldn't fit my foot in).
I'm still dreaming of looking at APL, but I already know that it will be something TOTALLY different and mind expanding, with all the beautiful function math there.
SonOfLilit
What about technology in general (Score:2, Interesting)
What about technology in general: networking, security, architecture, programming languages, libraries, testing, operating systems, analysis and design, distributed computing, concurrent programming, artificial intelligence, algorithms.
From the parts of the thread I've read, I suggest that hands-on experience (practice) is essential to learn how to do any of these things well. But what about the content? What the best was to learn about these technologies (with the idea that you're going to use them)?