The unbelievable developers ego
I heard a lot about impostor syndrome. But there’s something bigger than that. The size of the developers ego. It’s unbelievable. Let’s talk about it.
By the end of summer 2013, my head was so big I couldn’t get through doors. At that point, I only have two years of experience behind me. So I’m just coming out of the “junior period”. And above all, in the previous episode of this story(french version), I was doing a complete burn-out because of a project that came straight from hell. It was basically a trap. Not enough time and a monstrous scope.
After almost two months of work, like a maniac, I shipped a huge app for a big client. I’ve done it ! I did this alone. I did this on time. And i really felt that I had gained expertise.
After a period of post-burnout depression, I came back angry. So angry. This prowess made my head swell up like crazy. I really thought I was an important person. I would arrive in the morning and walk across the open space without saying hello to anyone.
I would sit at my desk and start my day by complaining about totally stupid customer requests. Then, I would go into meetings and make monologues about how stuff should be made. I didn’t give a fuck what anybody else was saying. I was in a special situation. One of the most experienced dev in this little organization. And, in my head, everything I touched turned to gold.
I used to do the same thing all the time. Same technology, same projects, same issues, same context, same load, again and again. In a situation like that, without any challenge, it’s easy to produce fast and well. It galvanized me in my feeling of being the best. I told myself that everything was so simple. And if anyone wasn’t keeping pace, I would immediately point the finger at them in the most toxic way possible.
This situation lasted for months. It was bad. And since I was relying only on my past exploits, it was impossible for me to evolve. And then one day, a major event suddenly changed my approach to everything.
Why so arrogant?
Before that, I would like to discuss why this ego overflow is relatively common in tech.
First of all, because companies are at the mercy of technology. In this context, you are the one who gives answers and really knows how the product works. Worse than that, they see what you do like black magic. Like an illusionist, most people don’t understand what you’re doing. But everybody thinks it’s extraordinary. When people tell you that you’re a magician all the time, you end up believing it. And each time you do, a dose of ego is injected into your skull.
Juniors are more affected by the phenomenon than seniors. Many companies do the same thing, the same way, all the time. And when it’s so easy, you don’t realize it anymore. When you don’t know what you don’t know, you think you know everything. And when a junior is not tutored and/or accompanied by more senior developers, it’s dangerous. You end up with an arrogant kid who thinks he’s a killer.
Also, our field is extremely competitive. Voluntarily or not, companies put developers in competition with each other. Who will be the first to solve the bug? Who has the best architecture? Who knows the most? And I’m not even talking about the competitions that are legion. And you, how high are you ranked ? In such an extreme competitive environment, egos can be spectacular.
It’s not reserved to juniors. A lot of developers with more experience are affected, too. What you do is super complicated. Solving complex problems, faster and faster, of course it flatters ego. And if you’re not careful, you can quickly fall into disdain for others who don’t keep up. Especially with the juniors. Most developers take a pedagogical and tutoring approach. Others become jerks.
What makes the two profiles quite different is the acceptance of a simple fact. You don’t know everything, anyone can teach you something, and that’s very positive. And sometimes it only takes one event to realize that.
Back to reality
After several months of nonsense, I was at the top of my bullshit. King of idiots in a world without any challenges. And since there was no one to calm me down, it could have gone on for a long time.
And one Friday night, I joined my entire company for drinks at a nearby bar. This company was working in a big co-working space with a lot of other companies. And all these companies were smaller, but their projects were technically very challenging.
I show up and yell at anyone that I’m an expert in just about everything. Oh, yeah, I do architecture and everything else. It was fucking ridiculous. Anyway, at that moment a senior developer from another company hears me talking shit in the distance and comes up to me. He needs to talk to an expert for one of his issues. And in my great kindness, I agree to give him some time.
And I’m not lying to you, I didn’t understand all the words in his problem statement. I was shocked, but I tried to follow what he was telling me as best I could. He exposed to me his problem and asked me what type of data structure, and therefore what algorithm, would be the most optimized for his problem in his existing architecture.
It was an extremely advanced problem. It dealt with concepts that I had vaguely discussed in school, but never practiced. He felt that i was confused, so he took it down a notch and asked me what I thought about this or that language for his problem. I had no idea because I was working with only one language and was not interested in anything else. And that’s when he started teaching me about life on my own language that he knocked me out.
The worst part of this story is that in reality, this dude was very nice with me. I’m the one who mistook this for violence. It was violence for my ego. I wasn’t ready, but it was exactly what I needed at the time. Pain is a great teacher. And it hurted like hell.
It’s all relative
Being efficient and productive for your team is your main goal. Once you get there, there’s something you need to keep in mind. You are efficient and productive in this context. Once you’re out of that context, you’re going to have to rethink and question yourself.
The myth of the developer who knows absolutely everything is totally false. There will always be someone to teach you something, because there’s too much to learn. The problem is that if you convince yourself you’re a god, you’ll end up believing it. The higher your ego will take you, the harder the fall.
And there are other hellish effects of having so many high ego profiles in our field. First of all, it’s intimidating for a lot of people, but more importantly, it can very quickly jeopardize entire projects.
A long time ago, in a galaxy far, far away, I saw with my own eyes computer projects blown up in mid-air because of overflowing egos.
I saw a team of big senior developers get together for an ambitious project. The idea was to go fast. When the time came to make technical decisions, no one agreed. Nobody wanted to be wrong and sit on their ego. And when the first insults appear in pull requests, the project got reboot.
I saw a lead tech forcing his homemade framework. Every developer without exception politely asked for a free and more maintainable solution. This lead tech decreed that the only choice was his homemade framework. This dude ego cost the company several developers in a matter of weeks.
I’ve seen so many times entire days of work wasted because a developer was too proud to ask for help. I’ve seen so many times developers redo code they thought was bad without asking the author why. I could go on like that for a long time.
The weekend after this big discussion with this developer, I felt bad. I finally got my head out of my ass and realized I had so much to learn that it was scary.
The more I evolve and learn in this job, the more I realize how much I don’t know. Since that day, I have approached this job with humility. This trigger tremendously helped me in my career. And I strongly advise you to do the same. Stay proud of what you’ve accomplished and what you know, but be aware of what you don’t know.
It’s the same pattern all over the place. Huge egos, immaturity and a lack of perspective in a highly competitive environment. When I see initiatives like compassionate coding or the well known 10 commandments of egoless programming, I tell myself that I’m not the only one to have noticed all this.
Ego is important
Now, be careful, ego is still important. You need confidence in yourself and your abilities. Approaching this job with humility doesn’t mean letting yourself be stepped on. It means taking the time to listen to everyone before giving your point of view. It means taking everyone’s ideas into account in an unbiased way. It means making your solution heard when you’re right. It means accepting when you’re wrong.
Understanding that no one is irreplaceable. Not you, not me, not your boss, not your CTO. Understand that calling your colleagues bad is not going to help the project go forward. Understand that just because you consider yourself a god doesn’t mean it’s true. Understand that if you make a mistake it’s not the end of the world. Besides, it’s okay if someone points it out to you. Understanding that it’s your mistakes that will make you grow faster.
If this article can even trigger a single click in someone, I would be very happy. There’s still a lot to be said on the subject, but I prefer to stick to the essentials. Your huge misplaced ego won’t get you anywhere. It’s time to keep it out of your career.