The rockstar programmer or the 10x engineer is someone who is so much more productive than anyone else on the team. The initial research that created this idea has had its underlying design contested, but continuing research still supports it (see a discussion of the research here). If it is possible to be 10x as productive as other engineers how are these rockstars accomplishing it? Is it tools or languages or architecture choices? The research has shown that the answer appear to be none of the above.
Instead, the difference appeared to be the amount of learning done while working. Rockstars do very little learning, since their time is effectively too valuable to spend learning, it must be spent focused on problems within their existing comfort zone. It makes sense – if you know your tools and your domain then you start off more productive and can stamp out cookie-cutter solutions very quickly. I have worked with a guy who was a rockstar that could solve most problems we came across in the fraction of the time compared to everyone else on the team. However, he became almost helpless when presented with something outside his comfort zone. He had spent so long just stamping out similar solutions to similar problems that he became really good at it but the rest of his skills had deteriorated. More importantly for a true career in software development is the exercise of your learning muscles.
You need to be challenged with new things, not just for to learn those new things but also to practice the learning process. If you are continually learning new things you can stay in the flow channel more easily. Each time you learn something you get better at the process of learning. Concentrated learning in a single domain reinforces itself; as you learn one way to look at a domain you can leverage that knowledge to learn more about the domain faster.
This all meshes with the idea of flow. You need a problem to adequately challenge you in order to help you learn. If the problem is too easy you get bored, and don’t learn much. If the problem is too hard you get frustrated and don’t learn much.
This, combined with additive effects of learning, says that if you are a rockstar you are stuck in a lose-lose situation. You have difficulty learning new skills until you get pushed out of rockstar status, because staying in your comfort zone would prevent you from being as productive and it creates perverse incentives. Your employer is incentivized to prevent you from practicing new skills at work and concentrate you on the things you are best at, but that will slowly push you further and further into the same specialization in a way you may not be interested in. Also, you have spent so long honing the same skills that you have neglected learning new skills, making it harder to pick up new skills. This disincentive towards learning can impede your ability to move around in your career, since you would only fit in a very specific environment. There is lots more on this idea here.
There are three takeaways I see from all of this. First, some developers are much better than others. This is especially true in the sense that someone can have a negative productivity, i.e., someone can delay others more than it would have taken them to have completed a task themselves (Brooks’ Law). The second takeaway is that someone who is significantly more productive than the norm has acquired a specialization, not just in the technical sense, but the domain as well. Third, being super productive can have negative long-term aspects, in that you are tied to a technical stack and domain, which limits your control of your own career.
Having been the rockstar myself at one point I can say there is a rush from it; it feels great when others depend on you and marvel at what you can accomplish. But it becomes frustrating, since to me, I didn’t feel like I was doing anything special, and seeing the others around me struggle to keep up and follow along started to feel like they weren’t pulling their weight. And, I could feel my other skills stagnating, which brought a separate kind of frustration. In the end I chose to move to a new job, rather than being the rockstar big fish in a little pond, so that I could continue to challenge myself and have the freedom to learn new things. I can see the appeal of being the rockstar, but I think if you choose that path, you have to be very careful not to let yourself become obsolete by being too focused.