There is always someone better than you.
People who had solved a problem in the past, will look like genius when face the problem again and solve it faster than anyone else.
Those two sentences are useful when you think you are the dumbest person in a group. Although not as useful as they should be, because our brain is not a prefect rational machine. Otherwise, the impostor syndrome would not be a thing. In any case, this text will be more like a rant or a way for me to clear my thoughts. Which may be the only real reason I write, but that’s another story, I guess.
The main reason I am writing this is that in software engineering (it sounds more serious than software development, but I always thought it is the same) that feeling of being below the level is very common. At least, I had that feeling in more than one project. But thinking about it, I also remember not having that feeling at all in some jobs in the past, that I left because I was learning nothing. Quite the opposite, losing skills and practice. And that made me think.
Two opposing sides
This has two parts, or better yet, it can be analysed from two point of views. The negative one is the consequence of thinking you are the idiot or the less intelligent of the group. There can be a lot of reasons for this apparent difference between the intelligence of your colleagues and yourself. It could be a lack of experience on your side, some impostor syndrome or knowledge that your colleagues acquired over the years. Some people invest a lot of personal time in programming, side projects, etc. and that gives them an edge (and very well earned). Others are particularly good at understanding the logic behind different technologies and sometimes is just a matter of confidence: some people investigate a problem to the deep end before asking for help, or ask a lot of questions without the fear of being perceived as an incompetent or someone not very bright.
And sometimes, they are actually more intelligent than you. It’s a fact of life.
There is the other way of looking at it, though, that is positive. You learn. A lot. Or at least you can do that if you take the right approach, put your ego aside and open your ears to whatever they will explain, talk or write regarding the project.
It is a good sign that you are in a good project, surrounded by people that is smart and know the trade. If you don’t have that feeling at least once, it may mean you are not in such a place… or that you are the smartest one and may consider moving somewhere else to keep growing. Because if you are always confident, never have questions or doubts about how to do something or what is going on with the code… you are probably not learning anything at all and you are going on auto mode. This depends on your stage in life, but in general if you are at the beginning of your career, you may want to move somewhere else where you can keep learning new things, improving your skills, etc.
The effect to your self esteem
The first step is probably to leave your ego aside and get open to learn from your team mates. Even if you are supposed to be a senior or experienced developer, there will be always someone better than you. And that is great. Learning from the best ones will motivated you to be better yourself. How can this be bad?
Well, sometimes it can affect your mindset. In my case, I had situations where I was working in some feature and I started having unexpected problems, or getting in a situation in which the progress was sluggish, jumping from one blocker to the next one… And the development started getting longer and longer.
Unsurprisingly, this started taking a toll in my confidence. And seeing how your colleagues keep releasing new features while you’re fighting with your task, makes you reconsider your proficiency or your capabilities. Even if there are reasons to explain why you are hitting those problems (bad design or a design that didn’t consider some potential problems, miscommunication between teams that forces you to reconsider the whole implementation after long time…), you start doubting about your ability and the task itself becomes something your brain wants to avoid. It is a tough situation.
A secondary effect that can happens is that, while you’ve been working on the feature, things were evolving in the system, and the way tests are performed, functionalities and other details may change. So once you’re finish, there are a lot of unknowns in places where you knew how they worked.
If that happens, you may feel ashamed to ask how to do something. Because you are a senior and you should knew it!
Obviously the real problem is the task you were stuck with should’ve been better estimated or designed. But shit happens.
Now what
Well, it is not easy but the best way to deal with this is to adopt the junior mentality: you have to learn and that means you have to ask. Forget about feelings. Ask and try to document it, even if it is for yourself. In some cases you will discover that some documentation was out of date, and your colleagues, instead of resent you for asking “such a questions that you should know already” will thank you for pointing out an error in the docs.
Even if that’s not the case, it will be easier to learn the new details faster than a newbie. And very likely, you will know the system or the codebase in a deeper way than before. Why is that? Because you will have to revise your knowledge about it, and rethink some assumptions you had that are not valid anymore with the new changes. So, unless the problem comes from a lack of interest, it is a net positive.
The conclusion I gathered from this experience is that, it will be tough to get back to your game, you will need to let aside your professional pride and ask questions that make you feel like an idiot. Sometimes you may even doubt about your capabilities to perform.
But this job is difficult, every code is evolving and you have to adapt constantly. Open yourself to learn from your colleagues, even if it make you feel like an idiot, because learning from people that know more than you, or are smarter than you is great. And that is one of the things I like about it.