

Ask HN: How do you know if you've mastered a programming language? - naeem


======
SoftwareMaven
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.

------
kls
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.

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

~~~
byoung2
_How do you know if you've mastered the hammer?_

When you learn when not to use it.

