Throughout my career I have worked with some extremely talented and intelligent developers. I have also, unfortunately, worked with some boneheaded developers who were barely able to create “Hello World” applications. I have worked with all kinds of developers. There are pure developers who have no skills at analysis. There are analysts who tinker enough to be considered programmers. There are front-end developers, back-end developers, web-service developer, database developers, and more. What I want to talk about today is the type of developer I have always had a love-hate relationship with. The Superhero Developer.
What is a Superhero Developer?
Superhero developers can be both the savior and nemesis of any software project. Contrary to what the name sounds like, a superhero developer is not necessarily the best coder, or the fastest developer, or the developer with the fewest amount of bugs. It can be quite the contrary. A superhero developer is usually a good communicator and is viewed with some measure of respect among peers and among management. But none of this defines a superhero developer. So, a definition:
A superhero developer is a developer who swoops in to save the day when an emergency arises and then flies away after the crisis, leaving the rest of the team to clean up the mess that the “rescue” created.
How a Superhero Developer Works
It’s quite simple, really. A superhero developer craves the attention and recognition they get when they save the day. Like the superman image above, they are the developers who will step up and work late, take leadership positions to solve a problem in a crisis, and will use sheer willpower to quickly resolve a crisis so business continuity is not affected. He will be as subtle as a bull in a china shop, and may cause about as much collateral damage, but he will, literally, save the day and keep the train on the tracks. (talk about a mixed metaphor, that!) For a short period of time, that is.
The Problem with Superhero Developers
Superhero developers are both a blessing and a curse. Gifted with exceptional problem solving skills, the ability to dismiss irrelevancy and get right to the heart of the problem, and use those skills in high-pressure situations is an absolute plus when the proverbial feces hits the fan. Unfortunately, most Superhero developers are also willing to take dangerous shortcuts, or just alleviate the symptoms without solving the problem. In effect, they give you an aspirin for the headache, but don’t see the tumor causing the headache.
Consider the image above. Superman saves the day by flying in and using his body as an extension of the train track. The train safely rolls over the damaged section of the track, Superman smiles, waves, and flies away. And so the day is saved. Until the next train comes down the track.
That’s the problem. Superhero developers tend to fix the immediate symptom and not the underlying problem. After Superman flies away, the engineers who are not super heroes need to come in, assess the damage, re-route traffic, fix the track, test it for structural integrity, and finally open it back up. Superman does none of this and, in fact, can easily lull the population into a false sense of security. After all – why fix the broken track is Superman can come in and fling his body over the problem every time a train comes?
That works if there is one track. But what if there are multiple tracks, many trains, and many breaks in the tracks? Superman can’t be in two paces at once, so one has to be sacrificed. Also, as long as we rely on Superman, Superman can’t take a vacation. Just so with the superhero developer.
It gets worse though. A superhero developer creates a feedback loop on themselves. They crave the attention and adoration they get when they save the day. As a result, unconsciously, they tend to write code in their day-to-day development that will likely require a super hero at some point to handle a problem.
In short, superhero developers may develop code that is correct, but rarely is it robust and almost never is it extensible.
How to spot a Superhero Developer
A superhero developer is almost always a coder who is also a subject matter expert in one or more areas. They are often seen as indispensable to management because they have their fingers in so many aspects of the code and, sometimes, the business. There are a few traits that almost all superhero developers exhibit:
- They are always swamped by more work than they can handle, and they let you know.
- They insist on being part of design and construction, but are usually poor finishers and don’t want to participate in validation or deployments.
- They complain regularly that they can’t take a vacation or that they have to stay in touch or the world will fall apart.
- They shy away from documentation.
Are Superhero Developers Worth It?
This is the crux of my love-hate relationship with superhero developers. They ARE worth it in an emergency. They can save a company immeasurable dollars and other intangible costs. The problem is, though, a superhero developer also has to go back to work after the crisis and they tend to be fairly sloppy developers who sabotage themselves and create a greater need for superhero developers later.
If only we could call on superhero developers when a crisis arises and not keep them on full-time staff.
Hi Ron,
There’s also another problem with SuperHero developers, ego, and a lot of it (see: this article on the programmer’s ego). You can’t tell them that they’re wrong, you can’t even tell them that there is a better way of doing things, you can’t tell them to document, you can’t tell them to write “better” code, and they always threaten to leave…