As a software consultancy, we are always in the business of trying to recruit good developers. One of the more annoying phrases that has cropped up in the industry lexicon of late is “rockstar programmer”, as both an ideal to which developers are assumed to aspire, and a glib description of the kind of programmer that software publishers are assumed to be desperate to employ.
In my very humble opinion, the software industry has no need for rockstar programmers (or rockstar programmers, as it happens). If we are going to use a musical analogy, a better kind of programmer could be termed a “session musician programmer”. Session musicians are the (usually) fairly anonymous musicians who are relied upon for actually getting records recorded. Attributes of a good session musician would include at least some of the following.
- Courtesy and professionalism towards colleagues and clients.
- Playing, or being willing to learn, a number of different instruments.
- Playing in a range of styles depending on what is required.
- Being able to read music, in order to play someone else’s arrangement.
- Ability to improvise, if the arrangement just calls for “a solo”.
- Ability to work with other musicians to come up with a workable arrangement for a piece if there isn’t one.
- Some understanding of music production, and an understanding of how what is played will translate to what is eventually heard on the recording.
Translated roughly into development terms, with a lot of artistic license, these might be equivalent to the following desirable attributes in a developer:
- Courtesy and professionalism towards colleagues and clients.
- Having some knowledge of a number of different languages.
- Being able to fit one’s code into the “style” of the project being worked on.
- Willingness to follow direction from a technical lead and implement a precisely written specification, where necessary.
- Ability to understand and fill gaps in the technical description of a project.
- Ability to work with other developers to come up with a plan for implementing something.
- Some understanding of the tools used for building, testing and deploying code.
I am not sure that the concept of the “rockstar programmer” embodies these things. Rockstars exist to do one thing well, generally singing or playing guitar, and that often seems to come with a whole lot of tiresome baggage in the form of massive ego, tantrums, and demands for excessive amounts of money (yes, there are exceptions). It so happens that plenty of session musicians can sing, plenty of them can play guitar, and they are capable of generating far more in the way of recorded music in a year than most rockstars would manage in their careers.
My advice, therefore, is that aspiring software developers looking to the world of music for role models should aim to be part of The Wrecking Crew rather than Guns N’ Roses.