Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How do you know if you've mastered a programming language?
10 points by naeem on Jan 24, 2012 | hide | past | favorite | 4 comments



I don't think mastery is a bit. It is much more an analog signal that requires exponential energy input as you move from the initial state to the maxed out state. As a result, even though I've done Java and Python stuff for 10+ years, I still wouldn't rank myself more than a six or seven out of 10 on them. I've used JavaScript since very soon after it was released, but I would still only five myself a four or five on it. I don't learn much about programming from Python but am very efficient. JavaScript is still teaching me new things (projects like node.js have helped!).

For me, the more interesting question is: what am I learning from this language. This tends to follow the inverse curve: I learn a lot early on, but a language's impact on my programming reduces over time. Learning a new paradigm obviously increases that much more that learning a fifth variant on a paradigm I've used for umpteen years.

Of course, different people have different motives. Some may want to be the best 3D programmer out there. That path looks different than my "I want to be an incredibly valuable, generalist programmer". My path let's me work on lots of different types of projects, but I'll never understand AI like Peter Norvig.

In the end, look at your real goals, keep track of your progress, and adjust course as necessary to keep moving in the direction you want.


To me if you can competently build a product that you and others can maintain you have mastered a languadge. You may not be an expert in every facet of the language but you have demonstrated mastery of it to produce real products. Masters develop a style, and a system to produce results once you have a style and a system that consistently produces results you have mastered it. Lets take art for example and I will use a commonly known artist Salvador Dali who's style was Surrealism of which he is considered a master, he however may not have been good at Fauvism even though he mastered the same tools, but may have never been exposed to the techniques of that particular style. None the less it still leaves him as a master of painting even though he may not have mastered every aspect of painting.

Adapting that to technology one may build systems in say Java but never use particular built in classes, maybe they use the Apache classes instead. This is their style and so long as it produces quality results, it can be said that they are a master.


How do you know if you've mastered the hammer?


How do you know if you've mastered the hammer?

When you learn when not to use it.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: