Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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.

share|improve this question

closed as not constructive by Thomas Owens Mar 19 '12 at 21:11

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

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.
share|improve this answer
@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 '11 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.

share|improve this answer

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.

share|improve this answer
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 '11 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"

share|improve this answer

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