I remember reading a few years ago that there are 3 types of developers, and that concept sticks with me since then. It goes something like this.
What is really a rockstar software developer? Do you consider yourself one?
The first type is the developer that doesn’t stay up-to-date with new technologies. Those developers are basically below average. Then you have the developer that works hard to learn and stay up-to-date with new technologies on his or her own, those are average developers.
Then you have the developers that put even more effort in learning on their own -even technologies that are not directly related to their job- and stay up-to-date more actively. Those are above average developers. I consider the last type partly a rockstar software developer, but they must also fulfill certain characteristics. Let's review them.
First, they must be humble. In other words, they must practice the egoless programming concept, which is thoroughly described in Jerry Weinberg's book The Psychology of Computer Programming. Rockstar developers are very passionate, no way to be a rockstar if you can’t be ignited to do terrific job. The best developers are craftsman, bringing energy, ingenuity, and creativity to every line of code.
They must be patient with other developers. They need to understand that he or she doesn't know it all, and that someone will know more than them. They also need to admit their mistakes. Coding is an activity, and therefore, prone to errors if done while under pressure or when being distracted.
This type of developers must be willing to teach. And share their knowledge. In fact, teaching is a way to reinforce your knowledge. A rockstar developer likes to spend time helping his teammates by giving guidance to complete their tasks on time, ultimately improving the performance of the whole team.
Finally, they must have a side project. It allows them to direct their passion for technology. Having side projects helps the rockstar software developer to experiment with technologies that maybe he or she does not need today but might need tomorrow. The moment a developer stops learning, he's done in technology.
As you can see, a rockstar software developer is not someone who writes thousands of lines of code a day. Also, not being a rockstar software developer does not mean you're a bad developer. Always keep in mind that there's room for improvement, even if you're already a rockstar software developer.