Ask YC : What determines command of a programming language?
Most of you are great hackers. How do you determine that you have command of a particular language?
What kind of problems/ projects you take up while learning a language. I have read on yc that a lot of people start with a project after a quick refresher and learn the language on the go. Are there any standard problems that you attempt to solve?
I've been trying to learn Python but feel a lack of direction and an inability to assess my progress.
Please share your views.
29 comments
[ 159 ms ] story [ 1207 ms ] threadAs part of the process of completing the project all kinds of problems will come up simply due to the fact that you don't know the language; and you know what? You just solve them and carry on and before you know it, suddenly you're just writing in the language without thinking.
The idea of solving standard problems to me does not appeal, but only because they sound like textbook exercises, but really whatever does it for you.
If you can solve your problems with the language, you command it.
I guess you could consider "Rails" a separate language from Ruby...
You usually can't think the language if you're still referring to manuals/internet over 50% of the time for syntax/understanding.
How many languages have you learned before Python? The first is always hard, and the second is always the worst, because it's the first time you have to think above the level of syntax, but after that it's much easier. By the time you get around to learning number nine, all you have to conceptualize are the diffs with what you already know, which is a much smaller learning curve. So, to summarize, it gets easier with each one you add to your repertoire.
As for problems, I just start with the current one. I usually learn new languages because it seems well suited to a problem I have for some reason. Right now I'm really interested in parallelism, so I'm learning Erlang. I'm working on writing some kind of REST ROA stuff with it (and Yaws), for fun.
I for one am constantly apropos-ing in CL even though it is my primary language.
On the other hand, if I have to look up the syntax for a loop, then I can't say I know the language yet.
Are you sure you want to make that assumption?
I think the point that I would pick is when you start feeling constrained by it. If you start wanting to do things the language can't do, or can't do well, and you can explain why it can't do it well, then you have explored pretty much all of it.
That's why my favorite interview question is "So you're applying to program in FOO. What's something you hate about FOO?"
I've been trying to learn Python and Lisp without any real project to hone my skillz on, whereas with other languages I actually had projects that sort of guided me.
So I suggest finding a project that can be written in the language you want to learn, and start writing it.
When you're answering more [newsgroup|mailing list|forum] questions than you are asking.
(And both are good ways to attain command of a language.)
However, the real deal is when you understand the solution pattern suggested by the language. When you start to break down problems into objects, functions, or types before you even touch a keyboard, then you've really gotten somewhere.