Theseus fighting the minotaur

The myth of the Hero developer

Luis Guerrero
3 min readNov 23, 2015

--

The world of programming is enveloped in such mystique that magic and myth are sometimes fitting metaphors.

You can think of it as a magical spirit .. that lives in the computer and does things. And the thing that directs a process is a pattern-of-rules called a » procedure. Procedures are like the ‘spells’ that control these magical spirits called processes.

Structure and Interpretation of Computer Programs

The way Aaron always saw it, is that programming is magic. You can accomplish these things that normal humans can’t, by being able to program.

The Internet’s Own Boy: The Story of Aaron Swartz

Code gives you a lot of power. It lets you abstract complex concepts in your head and directly implement them with you own hands, building prototypes in minutes that are able to do something useful. It’s the reason the whole hacking mentality was formed. Companies as successful as Facebook were founded on the premise of being able to hack a product in a night.

Drawing another metaphor a programmer that completes a product in a short period of time or takes over a team and acts as the main contributor can be seen as a hero of sorts. Joseph Campbell in his seminal treaty “The Hero with a Thousand Faces” tries to understand mythology and the heroes it depicts. He derives from all of the ancient myths a single “monomyth” with regards to heroes:

A hero ventures forth from the world of common day into a region of supernatural wonder: fabulous forces are there encountered and a decisive victory is won: the hero comes back from this mysterious adventure with the power to bestow boons on his fellow man.

You can directly see the parallels of the hero of yore with the so called hero developer of today. These hero developers are generally ambitious, highly commited and highly performing individuals. Who wouldn’t want a person like that working with them?

Well I wouldn’t want to for one. I think every developer has been a hero developer at one point or another in his or her life. I know I was on several occasions. Now that I’ve matured a bit I’ve seen the obvious problems with hero developers or what some people call heroic programming. Being a hero developer makes you develop some nasty developer habits. You become a quick thinker, someone who wants to solve problems quickly and hack a solution on the spot. Quick thinking gives you a feeling of satisfaction and competency but is generally undesirable. It traps you into biases instead of making you take the time to really analyze problems and come up with the right solutions. You become driven by ego, thinking that you are indispensable. You undervalue the contributions of your fellow teammates and could try to undermine their position. In your mind your teammates are ok as long as they see that you are the most important person on the team. You start centralizing all decisions effectively becoming a bottleneck for your organization.

It sometimes has been hard for me to shed the old hero developer habits. One of the things that has helped change my mindset is whenever I’ve worked with extremely competent individuals. The more excellent people you surround yourself with the more you understand your own shortcomings and the myth of the hero developer starts to die and shrivel by the light given off by your brilliant companions. Working with competent people also means working with dependable people. If you are surrounded with people you can depend on then, if you are a smart individual, you won’t be bothered with spreading the decision making power around to your teammates.

In short, hero developers are bad for teams. There will be situations in your life where you will end up being the ‘designated’ hero developer but if you end up in too many of those situations it probably means you are in the wrong team or in the wrong company. Strive to surround yourself with better people and try to kill any old ‘hero’ habits you may have formed. Your teammates will definitely thank you for it.

--

--

Luis Guerrero

Software Engineer, interested in machine learning, distributed systems and the Web.