Lately I've been thinking a lot about my career and what I'll think about when I reflect on it when I'm retired. Will I look at myself as a ColdFusion programmer? Will I look at myself as a JavaScript programmer? I'm pretty sure I'll just look at myself as a programmer. This got me thinking about how others perceive me as a programmer. Do others come to my blog and never read past the first two words of "Ryan's ColdFusion and Web Development Blog"? Am I automatically dismissed as a programmer because I primarily associate myself with ColdFusion? I'd like to hope not but I'm sure there are more people that do than I'd like to admit.
This brings me to my point, a developer is not the language they prefer to code with. A developer is defined by so much more than that. I'd hire a good Python developer to write ColdFusion applications even if they've never even seen a line of CFML in their life. A good developer will be a good developer in any language.
So what does define a developer if its not the language they write with? For me its a few things, first its what they have given back to the programing community through their contributions to open source projects. I'm not saying Java developers should go out and contribute to Ruby projects. Its perfectly fine to stay in an area of expertise. The point here is that a developer that gives back by contributing to open source projects shows that they have a passion for writing software that helps others and for writing code in general. Passion goes a long way to making a good developer.
Secondly I think a developer can be defined by their thirst for learning new things. The world of programming is always changing, it can be exhausting to think that the learning never stops. It can also be exciting and fun. I wake up each morning looking forward to learning something new, when this feeling stops I'll know its time to get into management. A developer who doesn't embrase the ever changing landscape will quickly get left behind by others who are actively seeking new things to learn.
Lastly I think a developer can be defined by their willingness to teach and help others. I'm not talking about speaking at user groups and conferences here. Yes, those things take tons of time and preparation and do help many others. However, they are also self-serving engagements. There's nothing wrong with that, but its the simple truth. Speaking in public is an ego and career boost for the speaker. What I'm talking about is spending one on one time with another developer helping them solve a problem or helping them master a new technique. There's no reward in that other than the self satisfaction of helping someone else. That't the kind of programmer I want to work with.