Rockinawsome wrote:
There needs to be some sort of test to define if a programmer in DM code is intermediate, beginner, or pro.
Not at all. What sort of questions would such a test ask anyway, and how would it arrive at such a conclusion? Does a walking, talking, and typing DM reference deserve a rating of "pro"? Of course not. Memorizing the reference does not a good programmer make. The reference is there in the first place so that these sorts of things can be looked up!
How are the levels "beginner," intermediate," and "pro" defined? Are they really so cut-and-dry? Of course not. Different programmers -do- have strengths and weaknesses in different areas, though with a strong programmer, "weakness" often translates to "area I haven't spent much time working with."
In the end, I think that programming ability essentially boils down to the ability to problem-solve within a set of constraints called a "language." The natural ability to problem-solve certainly has something to do with one's ultimate programming potential, but in any case, the more time one spends working on specific types of problems, the more successfully one can solve them, and similarly, the more time one spends within a specific set of constraints (a language), the more ways one can work around those constraints.
There's no well-defined point in time when you suddenly turn into an "intermediate" programmer; there's no well-defined point in time or an "advanced" programmer or a "guru," or whatever you'd like to call it. These are terms are labels, and extremely subjective ones at that.
While there may not be a well-defined point at which you reach "the next level" of programming, you can -always- improve; you can -always- get better. How? You get better at problem-solving by trying to solve problems; you get better at programming by trying to program. Program at any opportunity you have. If you have no original ideas, there's nothing wrong with doing something that's already been done before. After all, you don't have to put everything you write on the hub: programming solely for the sake of self-learning seems to be an underused technique among BYONDers, but it's an extremely valuable one.
Look at the hub descriptions of libraries without opening the library itself up and then write your own version of it (the result being that in the end, you can open the other library up and see what you did differently than its author). Actively seek out articles about programming techniques and algorithms, and then program using the newfound techniques! Show your work to programmers whose work you admire and ask for comment and critique! If you strive always to program as efficiently and effectively as you possibly can (bring your work to aforementioned admired programmers to make sure you're accomplishing this), you -will- improve.