How often do you meet programmers who think that they need to do everything themselves? People who don't take days off because, in their opinion, the team is not going to survive without them. People who come to the office when they are sick. If someone forces them to take days off, they attend the meeting remotely while being on vacations.
Some people think that without them the project is going to fail, the code quality will degrade, and the tasks won't get done.
Clearly, it looks like the IT equivalent of the Messiah complex.
Fortunately, I met only one such person many years ago, but I still remember it.
How does it look from the team's perspective? They have to work with a person who wants to control everything and be involved in every action. The "Superhero" wants to do all of the important stuff. Usually, the most critical tasks are also the most interesting, so the rest of the team works only on tedious tasks. That does not help to build trust and motivation in a team.
The "Superheroes" usually give up when their actions are not appreciated. It should not surprise anybody that when a person does some extra work, and the effort is ignored or punished, they feel betrayed and abused. Even if that additional work is not welcomed and not wanted.
Imagine the following situation. You worked extra hours to finish a task. You postponed your vacation to help the team reach the goal. You even worked remotely from home while you were sick.
Obviously, you expect gratitude, but instead of that your effort gets ignored, and people start complaining about your control issues and negative attitude.
What would you think about such a situation?
Let me tell you what the "Superheros" think. In their mind, the team is just a bunch of lazy idiots who don't care about the company. The "Superhero" thinks that people who complain do it only because they are envious of the Superhero's achievements. In the Superhero's mind, the team complains because they don't want anybody to expect similar effort from them.
At this point, the Superhero becomes cynical and hostile. The Superhero starts to see the team as yet another obstacle in their journey to become The Greatest Programmer. What happens next? Either the Superhero quits and goes no a new company (probably the one which hires only the "Rockstars") or makes the workplace so unbearable that everyone else stars looking for a new job.
Pathetic? Yes. Surprising? Not at all.
There is nothing we can do about Superheros. For them, it is already too late, but it may be not too late for us. Maybe there is something we can do, at any point in our career, we start to think that it is better when we do everything ourselves without the team.
At the end of the talk "Beyond developer," Dan North talks about making yourself redundant. Not only by automation but mostly by empowering the team (or the whole organization).
In his opinion, it is a way to be "available again." You make yourself redundant in one area, which means that you can start working on something else. You have a bigger and bigger impact, but at the same time, you make sure that you don't become the infamous "Superhero" because you help others do your job well.
I highly recommend watching that talk even though he did not give advice on how to make yourself redundant. He does not tell that we should write documentation, use tests as the method of documenting the code, do pair-programming, give talks, write manuals, or implement libraries for tedious tasks.
Perhaps, every one of us should find a way that works best in their case. For me, it is writing. For you, it may be recording screencasts or mob programming. It does not matter what method you choose, as long as you get the results you wanted.
Now, I wonder what if writing such a blog post is a symptom of trying to be an "IT Superhero"? One may say that awareness of the problem is the first step to fix it. What if the person experiencing the issue does not think that it is a problem?
It is knowledge-sharing, and I really enjoy writing articles which, in my opinion, are helpful. At which point being helpful becomes a problem? Does it happen when we no longer see the other side of the issue or when we start giving unsolicited advice?
What do you think?
(open source and trusted by devs everywhere ❤️)