Programming isn't much different from writing: it requires mastery of language, clarity of expression, and frequent rewrites. There are many qualities that differentiate expert coders from novice and moderately experienced programmers, but here are the ones that seem to be most important:
Here are some others:
