In NYC, we are working on creating a collaborative community programming environment and trying to segment out software engineers into differing buckets. At present, we are trying to define:

  • Beginners
  • Intermediates
  • Advanced
  • Experts (and/or Masters)

Similar to an apprenticeship, you would need to demonstrate specific skills to achieve different levels. Right now, we have identified beginner programming skills as:

  • Object - method, attributes, inheritance
  • Variable - math, string, array, boolean - all are objects
  • Basic arithmetic functions - precedence of functions
  • String manipulation
  • Looping - flow control
  • Conditionals - boolean algebra

This is a first attempt, and it is a challenge since we know the natural tension between programming and software engineering.

How would you create such a skills-based ranking for JavaScript in this manner? For example, what would be the beginner JavaScript skills that you would need to have to advance to the intermediate training?

And so on.

4 Answers 4


I'm probably oversimplifying it a bit but:

  • Beginner - can write it but doesn't know/understand prototypes, objects, json, etc
  • Intermediate - Beginner and understands object oriented programming, may have a basic understanding of prototype pattern and how it applies to extending JavaScript. May be familiar with JSON syntax.
  • Advanced - Intermediate and fully understands object oriented programming and prototype patterns as implemented in JavaScript. Knows JSON syntax. Is familiar with available JavaScript libraries (e.g. Moo, PrototypeJS, jQuery, etc). Familiar with differences in JavaScript versions.
  • Experts - Advanced and understands differences in browser implementations of JavaScript. Has a familiarity with off-line JavaScript features and a general comprehension of applying software engineering principles to javascript programming.
  • @frogstar78 - thanks for the feedback - this is great. Interesting that you are focused on JSON. What would be the basic concepts for a Javascript programmer to know? As in - if I were going to spell out the coding concepts, which would be the JS concepts/components that I would be surprised the coder not know if they said they were a "X" coder. For example, if the coder said they were an Intermediate coder, but could not refer to the DOM in an effective manner, I would be surprised.
    – Sanford
    Feb 14, 2011 at 15:00

Even at a beginning level, I'd say the programmer should do some kind of a project, such as a prototype web-app with a small scope. The scope should be big enough to exercise and demonstrate his skill.

If I was relearning JavaScript I'd be thankful if I knew about closures earlier; or rather using functions as parameters in other functions. This is useful skill to know, since some duplicated code could be done in a nicer manner or with less code.


I would avoid over analyzing the groups at first. Since I don't know where you are getting the students from, it's useless to assign a category. MIT freshmen are an entirely different group than PTA moms. Are these all software programmers? Then just concentrate on creating a boatload of sample showing the key JavaScript principles. It's not that difficult of a language. I would concentrate on scope, delegates, and prototype. The rest is just syntax.

  • Snoop - the idea is that the minimum skillset would be one that any beginning programmer should come to the class with. It will be a mix of people which will be from industry, not from schools. The idea is to create programming that can help grow more software engineers.
    – Sanford
    Feb 16, 2011 at 5:05

I would want a javascript programmer to know a few things:

  1. Callbacks and Async operations
  2. Closure and anon functions
  3. One of the major toolkits (such as jQuery)

And I would want the programmer to have read "Javascript, the Good Parts"

Not the answer you're looking for? Browse other questions tagged or ask your own question.