An Average Programmer

A lot of programmers I've seen start out with a great start, errors and sloppiness are to be expected with a new language. However, when the individual finally gets comfortable doing something a certain way that works for them, it seems some stop excelling. In my opinion, it's better to go in depth with fewer subjects than broad on many topics which causes a lack of depth.

In an Object-Based language, here is a chart that I see among much code:

Average Programmer

If you excel beyond the halfway point there, you will potentially become a very good programmer. The picture below shows the phases you may go through in the simplest of steps with a visual example of a code structure. One thing that could be easily overlooked below is that an OOP/OOD developer may have a lot of Spaghetti code mixed in with Phase 2 and Phase 3, that's not good!

Average Programmer

Something like this may take several years to get to efficient at, but it's worth it! Programming should be thought of as architecture more than "lines of code", or "just so it works".

Here is my personal recommendation. If you'd like to grow faster, this is a fantastic book that I recommend reading several times over, it's called The Pragmatic Programmer. I own it, and it's possibly one of the best books to help you improve your applications. So check it out!