Or “Superhero” developer? Or “Ninja” developer? Or “501” developer? These are terms people use to either label themselves or other label others. I am not a big fan of labels or titles like these.
In a recent interview, I was asked if I was a “Rockstar” developer. It is an interesting question. Am I a “Rockstar” developer? What or who is a “Rockstar” (or any other labeled) developer? So, I did some research.
A “Rockstar” developer is . . .
· According to the interviewer, a developer who gets the band together and creates awesome code that people will use.
· Michael Krotscheck posted in Jan 2010 what qualities he believes a “rockstar” developer has. Check it out at http://www.krotscheck.net/2010/01/10/what-makes-a-rockstar-developer.html
· Quora had the question about being a “rockstar” or “ninja” developer post. Here are the answers: http://www.quora.com/What-is-it-like-to-be-a-ninja-or-rockstar-developer-Do-ninja-and-rockstar-developers-have-groupies
· Read Write Web had the top 10 traits of a “rockstar” developer at http://www.readwriteweb.com/archives/top_10_software_engineer_traits.php
Based on the above posts, talking to the interviewer and others in software development, a “rockstar” developer to me is . . .
· Someone who knows what they are doing (they are good at programming)
· The enjoy their work (passionate about making the best product and continuing their education)
· Plays wells with others (they are not center stage all the time and accepting of other viewpoints)
· Produces a finished product that users want (their music is enjoyable to hear)
Superhero or Ninja Developer
These were a bit harder to find definitions for.
According to the interviewer, a “Superhero” developer is a developer who goes at it alone and does not work well with others. I would add they have a weakness (like kryptonite for Superman). This type of developer may say all the right things and even be creating some great code. However, they are not involving others so their code is not understood, may not be maintainable and may be overly complex. In addition, they are all over the place trying to be involved in everything (to save the day).
Gayle Laakmann McDowell (of TechnologyWoman.com) has a great post (http://www.technologywoman.com/2011/11/18/hey-hipster-ninja-isnt-cool-what-developers-really-want-to-be-called-is) about the “Ninja” label, other titles / labels and what her survey showed people would like to be called. My take on a “ninja” developer is they are very similar to the “superhero” developer. The main difference is they are focused on a specific area and task.
A 501 developer is . . .
· Someone who at 1 minute after 5 is heading for the door
· They turn off being a developer; they do not want to think about anything that has to do with coding.
· They are not interested in learning more about their craft or becoming a better developer
Scott Hanselman has an excellent article he posted back in August 2007 (still relevant today) about developers who shut their enthusiasm off at 5:01. Check it out at http://www.hanselman.com/blog/501DevelopersFamilyAndExcitementAboutTheCraft.aspx. Recently, there have been postings of a 501 Developer Manifesto with discussions, disagreements and revisions. The best posting that I found on the topic is by Chris Nicola at http://lucisferre.net/2012/04/19/reclaiming-the-501-developer-manifesto.
Personally, I have no issues with what time anyone leaves the office as I like to leave by 4pm. However, just because I have left the office does not mean I am done being a developer. Being a developer (software engineer (see below)) is part of who I am. Just like being a Christian, husband and father are part of who I am. Each day, I continue to learn how to be a better person in each of those areas so why not also learn to be better at my craft which is software development.
So, am I a “rockstar” developer? Short answer is I will never label myself as one; others may but that is their option. When I graduated college and got my first job, I labeled my career (and myself) as a Software Engineer. I believe developing software takes skill (that continually needs to be updated), effort (may need to put in extra time on occasion – not all the time), a team (no major undertaking is accomplished alone) and responsibility / investment in your work (need to produce a quality product that users wants). These are all similar traits as other engineering disciplines hence I am a Software Engineer.
So, what type of developer are you?