views:

339

answers:

7

In general aspects, this might be a good reference for everyone. Having an idea of how long people take in average for properly learning how to code can give a very good idea on how dense or long is the path.

Someone who never programmed should take weeks or months, even years maybe while someone who's already experienced in the area and know at least 2 different languages might take days, hours or even minutes to start coding.

But other than being able to write code that runs, there are ways to write the same program, and it's much harder to get deep knowledge on that than actually being able to program. And sometimes languages differ a lot from one to another on that aspect as well. For instance, we should never have to worry with code-injection in JavaScript like we do in C.

So, is there any place we can see some good numbers for how long it takes to learn a language, maybe divided into level of knowledge categories, languages and paradigms, etc?

edit: This is not meant to be subjective, I just gave my clueless data examples because I have got no good idea on the subject.

I want data points and statistics on this. It is not to be perfect, it's to serve as reference.

For instance, a good reference would be course times and effectiveness of people formed in those. But then, again, from several different schools. That's not the only way to do the stats, tho.

+8  A: 

Ten Years. (Someone was going to post that link anyway ...)

Jörg W Mittag
That was the first thing that came to my mind too, but, to be pedantic, that article is about taking ten years to learn how to program, not about learning a particular language.
David Johnstone
+1 someone was going to post it anyway, indeed :)
Cawas
its also a lower bound http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html
jk
Well, given nobody could come with a proper answer, I guess this one is not only humorous but also quite true in general.
Cawas
+1  A: 

I think the speed with which one picks up new programming languages is highly dependent on the individual. It also depends on how similar the new language is to the ones previously learned (for example, going from C++ to Java may be much easier than say from C++ to Ruby or to Haskell). Also, I think your statement about JavaScript is incorrect; for example, in JavaScript, you have eval() and other security pitfalls.

Michael Aaron Safyan
For the javascript part, I'm just assuming it's client-side so you really have not much to worry about as a developer, for your server-side security.
Cawas
+4  A: 

In my experience the real time consuming thing about learning a new language is the APIs that go with it, fundamentally most languages are similar and therefore if you know others it's easy to adapt to the (usually) minor syntax differences.

CarbonX
not really. ever tried learning lisp?
Ken Liu
Famous last words: "fundamentally most languages are similar". :-)
Jon Harrop
@KenLiu man I wished to learn lisp, but I got no application for it and definitely do not urge to do so. Just like latin.
Cawas
haha, I was waiting for that. "most" would be the operative word there ;)
CarbonX
@Jon: similar to what? Most languages are similar to *some* other language. But most languages are *not* similar to *most* other languages ;-)
Joachim Sauer
+1  A: 

Learning a language is one thing, learning frameworks is something else entirely. If you have some kind of OO background, you can probably pick up a new OO language and learn the syntax in a few nights. If you're from a procedural background then you need to learn OO principles as well.

C# is just a list of about 100 keywords and some operators, when you break it down. The .NET Framework could take a lifetime to learn every detail of, and then there's a plethora of third-party (open-source and otherwise) frameworks that can make your life incredibly easy or incredibly difficult, depending how you use them.

If you learn Ruby, you're probably thinking Ruby on Rails, but Rails is just a DSL for web development and there are others available and worth looking at - some that will take you a couple of days to pick up but will do the job; some that will take you ages to find all the features of.

So, in short, I guess I'm saying that this is one of those unanswerable questions.

pdr
Would you still say it's unanswerable after the couple edits I did?
Cawas
Yes, I would. You still haven't really hit on what you mean by a language. Which of these is a 'language' in the context of your question: C#? .NET Framework? ASP.NET? MVC for ASP.NET? WinForms? Nor have you said to what level (paradigms) qualifies as learning or what other skills the individual had before. Without all that information, comparisons are meaningless, so the stats you are looking for would be too complicated.
pdr
That's because I want samples from all, or at least major ones. Most times I kinda love looking at huge amounts of data in detail. I agree, they are complicated. Just hoping they weren't **too** complicated. And thanks for the feedback. Hopefully this will turn in CW if it stays for too long without an answer.
Cawas
+1  A: 

Obviously each person will be different, but I'm capable of getting started and doing some basic tasks (Hello World, Fizz Buzz, etc.) in a new language in about the time it takes to read a decent tutorial -- so usually a few hours. But doing anything more complex than that depends on learning the API, and the time it takes for that depends in large part on the complexity of the API and the quality of the documentation for it.

Daniel Pryden
A: 

It depends partly on the ideas behind the language. If you know C, you can write bad C++ programs almost immediately. Learning how to use the OO and template features well will take a lot longer, not because of awkward syntax (although C++ certainly has that), but because you have to learn new ways to think.

David Thornley