14:09 April 11, 2011

Stages of language mastery

So in writing toolbox (https://github.com/k0s/toolbox for now, not my idea to use github so don't yell at me) I realized I didn't know JS nearly as well as I thought. This is to say....I know how to do stuff in JS, but it is more difficult to structure it than I thought.

I've realized that there are different stages for learning a programming language. This is given the assumption that one knows how to program but one is learning a new language/way of doing things. How do they go?

  1. Syntax: learning the literals of the language, the grammar and "words". You can do simple things with these, like e.g. ordering tacos in a Spanish-speaking restaurant
  2. Doing stuff: You can probably manifest any algorithm you can think of. Your solution may look wrong, feel wrong, and not be very efficient, but you can get 'er done
  3. Architecture: You begin to learn how to structure your code so that it is both efficient and is a manifestation of intent
  4. Packaging: You learn to package your code in a way that it may be easily deployed but that complex deployments are possible.
  5. Mastery: You realize the space where your code lives in the information universe

In python, I'm probably a 4. (roughly speaking). In JS, I had previously assumed I was a 3, but really I'm a 2.5 tops.