Wednesday, October 12, 2011

Want to feel like a Rockstar software developer?

Before I dive into how to feel like a Rockstar software developer I think we should ask just what is a software developer Rockstar?

There is no one criteria from which one can describe a Rockstar software developer, a collection of traits however can help encapsulate the concept. On Read Write Web, a "Top Ten Traits of a Rockstar Software Engineer"is discussed in detail - the abbreviated list is shown below:
  1. Loves To Code.
  2. Gets Things Done.
  3. Continuously Refactors Code.
  4. Uses Design Patterns.
  5. Writes Tests.
  6. Leverages Existing Code.
  7. Focuses On Usability.
  8. Writes Maintainable Code.
  9. Can Code In Any Language.
  10. Knows Basic Computer Science.
Reviewing this list I think I can simplify this Rockstar concept into "just be a competent, industrious software developer" (which to a junior developer these are all great traits to pick up). Really all of the above traits I find among most software developers I've encountered over my career - all of them doing these things to greater or lesser degrees, but I don't think practicing all of the above as placing developers head and shoulder above the rest of the pack. There has to be something more to being a Rockstar.

Searching some more I found another post describing the traits of a Rockstar software developer, this time from a blogger whom looks at things from the point of view of a startup looking for programmers. In the article "What makes a 'Rockstar' Developer?" the following traits are discussed:
  1. They don't think of themselves as rock stars.
  2. They have a proven record of multiple shipped products.
  3. They care more about frameworks than plumbing.
  4. They're not willing to work for free.
  5. They believe in development process and best practices to speed up their work.
  6. They have a positive attitude.
  7. They get uncomfortable when you ask about their social life.
  8. You don't want Alphabet/Acronym soup in their technical skills.
  9. They're involved in the community.
  10. You respect them.
I prefer this list to the previous as it hits on a many of the concepts I think make a Rockstar software developer - accomplishments, a great attitude, deep knowledge (know their projects from floor to ceiling), help their community, and garner great respect from their peers. You can tell that you've meet a true software developer Rockstar because they don't try to sell their self to you, their charisma draws you to them to join in the fun their having developing their project(s). Bonus points come when you've worked with the Rockstar for a longer period of time and feel just as excited to do so now as you did when you first started.

So what does this have to do with feeling like a Rockstar software developer?

I believe the essence of being a Rockstar software developer is sharing your passion and deep knowledge for software project(s), and having other developers seek you out for guidance. To this end I think the best way to gain this experience is to join into a mentoring program that matches your development background with other developers looking to learn best practices from you.

In my case I enrolled in the Apache Local Mentors Program - its purpose is to help link up new Apache contributors with existing Apache Committers in their community in order to help the new contributor to integrate further into the Apache community at large. From the point of view of the new contributor whom may have only had interactions with Apache via mailing lists, IRC, source control, and issue trackers meeting an existing Committer helps put a human face on the community. For the Committer they get to share their project with another developer whom is eager to learn.

Karaf/Kalumet Style
Mentor Protege

My experience so far has been immensely positive. Having another developer excited to learn about the projects you've worked on for so many years learn the ropes, and begin to contribute is incredibly rewarding. I would highly recommend all Apache Committers join into the program, and help mentor more developers into our community. To me this is what it means to be a Rockstar software developer, drawing in new developers to your project(s) and helping them work toward all of the traits discussed above. Some may say that there is more to being a Rockstar such as fame, fortune, influence, and prestige - to them I say be mindful in taking those aspects of the Rockstar concept too deeply to heart, there are many examples online that tell tales of Rockstars gone wrong. All things in moderation, the concept is good, just make sure you remain a developer other developers want to work with. In the end we're all just trying to spread our enthusiasm, craftsmanship, and joy of programming with others.


Gord Peach said...

I like the concept of a "programming rockstar". I've met a few myself. What I find interesting is how a programming rockstar can be converted into a "programming roadie" depending on the software shop they're working at. Perhaps another requirement should be "immune to corporate culture". :-P

Jamie Goodyear said...

The "programming roadie" concept probably requires its own blog post. It's a horrible thing to see or experience, but seems to be a side effect of mismanaging (or being unable to manage) rockstars on a team. One would hope that a rockstars' presence would promote aspirational goals in team members however on occasion it just turns the non-rockstars into clean up crews :S The trait "don't think of their selves as rockstars" probably covers this phenomenon, as the programmer considers their self part of the team (no Diva like behavior towards drudge work or tedious tasks - nothing is below them).