Do we really need them?

Listen to the audio version!

The world is full of problems: diseases, corruption, violence, disasters…. There are some professions in this world whose practitioners can be considered heroes that help to treat those problems: They can be doctors, police, fire brigades, NGOs

In software development, there could also be "heroes", but they might not be what it looks like.

Basically, if there's a problem: they are there.

Saving the day.

That’s the reason they have the title of “heroes”. And despite first impressions, it may not be a good thing to have that title because "fixing" the surface of a burning problem temporarily is not the same as fixing it's root cause.

In software development, "hero" is the name given to those individuals who are always there. Ready to save the day.

A hero have many attributes and there's no authoritative definition, although there are some people who use the same term to describe someone who "treats the symptoms of the project, like lateness or defects, but ignores the disease".

The term should not be confused with Heroic Programming which describes the "expenditure of huge amounts of (coding) effort by talented people to overcome shortcomings in process, project management, scheduling, architecture or any other shortfalls in the execution of a software development project in order to complete it".

In this post, "hero" will be the term used to those who are inefficient but can be seen as efficient by non-technical people, not Heroic Programming which treat "heroes" the ones who are efficient but can be seen as inefficient.

So what is a “hero” in software development exactly?

The hero can have many attributes. Some of them can be to be the oldest team member, carry a lot of specific domain knowledge, have a weaker programming skill, avoid certain meetings or work long hours

One thing in common is that they are always seen by other people as "saviors" while doing a bad job. What matters for some people that don't understand software is always the end result. And they know that.

That doesn't mean they do it out of arrogance or bad faith. It could be just something the environment forced them to become or believe in.

It also doesn't mean acting as a hero is always bad. Being a hero is. Anyone can act as the "hero" and step up to save a burning project temporarily, as long as they understand the implications of what they are doing and how to do it right. What they shouldn't do is act out of inexperience and take actions to fix the real cause.

Being a hero is not just bad for the company. It’s bad for themselves as professionals.

The "hero" status can cause a negative impact on the company or project, including to themselves and their team

There's also an interesting type of hero: The Syntax Hero.

A lot of people knows the JavaScript specification, including the intricacies of the with statement, typeof and the subtle differences between null and undefined.

A lot of people also know that:

However, despite knowing or not about the tradeoffs of the syntax (which can increase or decrease the chances of them be acting by malice or ignorance), the Syntax Hero is the one who uses a lot of complicated features of the language in the code and ignores the common programming conventions. That will turn them into the heroes who can understand those parts of the system because of their specific programming language knowledge and their mental map of what was done, so others will have a hard time maintaining that code.

The Syntax Hero is the one who uses a lot of complicated features of the language and ignores the common programming conventions, this way he or she will become the only one who can understand it

The first step preventing a hero from being created is to prepare or adjust the environment of the project to remove the characteristics which can make them thrive.

It’s imperative to look for strategies aimed to prevent a hero from being created in the first place. After they are created, it becomes very hard and expensive to dismantle them.

The world is the same for everybody, the only thing that changes is how you see it.

It’s better to start seeing heroes as what they are, instead of treating them as benevolent gods, because they are not.

As Tina Turner puts it:

We don’t need another hero.

We don’t need to know the way home

All we want is life beyond the Thunderdome

See you on the other side 👋

Thanks for reading. If you have some feedback, reach out to me on Twitter, Facebook or Github.