My struggle with impostor syndrome. Or how I manage to stay sane in this emotional rollercoaster that is called 'being a software engineer'.
I sometimes feel like I'm a pretty damn good programmer.
I might build a cool feature that took me hours or even days to figure out how to build.
Or maybe I learn a new feature of TypeScript/Solidity that I think is awesome.
Or I come up with a design for a solution that I think is particularly smart.
Or I refactor old code others have written and turn it from what I thought is a mess with potential bugs (because it didn't use TS strict) to something that is actually quite readable and probably doesn't have bugs.
And I feel really good about myself. 🌞
Like "wow, I'm really smart. Look at what I've done. And I don't even have 3 years of experience... I must be a damn genius". 🧠
But it's not always like that ⛈
Almost always before I open a PR, I test my code, read it again, use the linter and just generally try to do anything in my powers to spot anything bad before somebody else does it for me in a code review (or worse, the CI fails).
After I open the PR I'm literally just waiting there, looking at the CI process happening before my eyes. Scared that maybe I missed something.
And sometimes it turns out alright. CI passes, the code review suggest some changes, but nothing major. I feel relieved, I feel good. 😮💨
But sometiems, the CI fails for some reason or the code review finds a mistake so big and (in hindsight) so obvious that I feel my whole world crashing down. 📉
It feels to me that I have not only dissapointed someone, but also that I have wasted the precious time of this senior engineer.
"They have better shit to do than to spot my mistakes. I should be self-reliant!" or so I think.
The real problem stems from me comparing myself to them.
I look at their PRs when they ask me to review and I almost never have any real changes to suggest.
It makes me feel like a useless moron. Like I don't deserve my job.
But I recently read a reddit post and one of the commenters said:
Well of course CTO writes better code than junior dev
And he's right. And it's completely obvious.
Of course the engineer that has 6+ years of professional experience is better than *you*. You have less than a half of his experience.
It'd be crazy if he didn't write better code than you. It'd be crazy if he didn't make any suggestions on your PRs. It'd be crazy if he couldn't get you unstuck. 🤯
Do your best, but don't beat yourself down 🙏🏻
My point is (and this is as much for you the reader, as it is for me the writer): understand that it's fine, expected even, to make mistakes.
That's why CI processes and code reviews are there. To keep mistakes from reaching production.
And even though you do need support, you're probably still productive to a good enough degree that they'll keep you around.
The reality is that, unless you lied to them on the interview, they probably knew what they were getting when they hired you, right? 😅
Lastly, even though seniors may not make as many mistakes as juniors, they still make mistakes themselves. Aaand, they were juniors at one point too. 😉