How I Manage Impostor Syndrome, Fear of Failure, and Other Common Programmer Problems
Sometimes your own bugs are much harder to fix.
However, some other thing I also realized is that with a little bit of work and self-reflection you can handle the inner side of programming just like you handle your codebase.
You just need to approach these issues like optimization opportunities instead of bugs to fix once and for all.
So let's talk about how to deal with those kinds of issues.
Check out this neat table of contents:
- Impostor syndrome
- Dealing with failure
- Comparing yourself to others
- "There's too much to learn"
Impostor syndrome 😥
I had plenty of episodes of impostor syndrome in my career, the biggest one was when I accepted my first leadership position at a big payment company.
See, I had some tech lead experience under my shoulders already but never at a big company, my previous leadership role was more a matter of necessity than hierarchy. And to make things worse, a was a complete newbie in the payment industry.
So, for the first time ever, I was a tech lead among other tech leads, and all of them looked so much smarter and capable than me. I'll tell you, my friend, I felt like a fraud.
"What the hell am I even doing here?" was a common thought.
Fortunately, during that time, I found a few pieces of advice that helped me shake off that feeling. Nowadays, whenever insecurity strikes, I make a conscient effort to remind myself of these tips, it helps a lot.
Here they are:
The people that hired you are not stupid. Seriously, they would not have hired you if they didn't think you were capable of doing the job. Hiring good people is literally their job description. They probably even picked you among a handful of other very good people. You're good.
You're not a manipulative mastermind. Fooling people is hard work. Your coworkers are aware of your flaws, it's okay. They are also full of them and can be more supportive than you imagine.
Help people. Helping people instantly stave off impostor feelings. By being helpful you are able to see instantly how what you know can make people's life easier. It is a very rewarding feeling.
Use social media wisely. It is a petty feeling, but nothing triggers my impostor syndrome so much like scrolling through twenty tweets of people doing an amazing job in this industry. It makes me feel like "how can they even do all of it?".
One thing that helps (other than quitting Twitter for a couple of hours) is following people that are still learning and can benefit from your insights.
What I'm trying to say here is, by all means, follow the masters, but also follow some newbies.
Not being the smartest person in the room is actually a very good thing. Try to see the knowledge gap between you and your peers not as a flaw but as learning potential. We all learn from each others experience and it is a privilege to work with people that can teach you a lot.
Know what you don't know. Sometimes the impostor syndrome hits and it feels like you don't know shit. When it happens, try and make a realistic list of everything you should learn to stop feeling like an impostor and compare it with everything that you know already.
This exercise gives you clarity and, even if you still feel like an impostor, you'll find a new focus to learn what you should learn.
Dealing with failure 👎
I hate failing.
Not up to a point of stopping me from embarking on new, bold endeavors but, truth be told, failing fucking sucks.
I see a lot of advice around the internet like "you should love to fail, yadda-yadda" but, let's be honest for a moment, if it didn't hurt when you failed it means you didn't put enough effort.
You'd need to be an ultimate-zen-monk-master-of-emotional-intelligence to not feel bad after giving your absolute best and failing. It's natural, feel free to hate failing, hate it with passion. 😡
But learn to love feedback and the lessons that each failure teaches you. 😌
Be humble and accept your responsibility for the failure. This is the first step, the only way to learn from your failures is to own your mistakes and find a way to prevent them in the future.
You can do everything right and still fail. You can be the perfect candidate, master all the algorithms, and ace the whiteboard interview, only for the company to hire a friend of the CTO. Life is an unpredictable crazy ride that's far from fair. Understanding it makes some failures easier to swallow.
Understand that every failure teaches you something. Give yourself some time to think about a failure. Try to write down what you could've done differently. Heck, write a damn incident report about your failure as a blog post, sharing what you learned through failure is a big act of generosity.
Failing is better than "what if-ing". I've failed quite a lot during these years and I can say that the pain of failing fades much quicker than the bitter taste of "I should have at least tried it...".
Comparing yourself to others 👀
This one is a cousin of impostor syndrome and a bad habit I'm particularly guilty of.
There are a lot of brilliant, talented people in this industry and I'm grateful for their contributions. Prolific programmers make my life so much easier!
Sometimes, however, it gets hard to shake off the "this person is 10 years younger and much more successful than I'll ever be" feeling.
Whenever I feel that way I try to remind myself of a few things:
Am I doing my best to make progress without harming my mental health? Every person has their own limit. Working 80 hour weeks while maintaining 16 open source repositories might make a person's career skyrocket, but at what cost?
It is much better to make consistent progress at a slower rate than wreck your health trying to maintain a rhythm that is not your own.
Hard work pays off, but luck plays a huge role. And I'm not the one saying it. Here's a very interesting article from Scientific American on the matter.
Try remembering that next time you find yourself comparing your work to another person's. You'll never be able to know for certain because–sorry for being repetitive here–life is an unpredictable crazy ride, but it could have been luck. Plain simple luck.
Everyone has their own set of personal challenges and privileges. One final reason to put you back on track when this kind of thought pops in: it is a whole different race for everyone. No other person had the same start nor has the same finish line. Stay focused on your lane and strive for greatness at your own speed.
"There's too much to learn" 😫📚
I was lucky to start working exactly when Flash was being discontinued on the web and jQuery was rising to stardom.
I consider myself so lucky because I was able to witness the state of front-end development becoming increasingly more complex while I was an active member of this industry. So I had the privilege to learn new stuff as they were coming up.
That being said, if I saw a roadmap of "How to become a front-end developer" as a beginner nowadays I'd feel scared, overwhelmed, and consider a career as a long-haul driver. I mean it!
But here are some words of encouragement my fellow beginner, for there is no other way than the way of knowledge!
Seriously, there is no other way. You have to be okay with the fact that you'll be studying your whole life. Such is the blessing and curse of the programmer.
Things change, new languages and frameworks are created every year, you don't have to learn everything but it is very important to stay curious and find joy in learning new nerdy programming stuff.
Learn how to learn. You have a lot on your plate, mate, so be sure to make good use of your study time and efficiently. There are plenty of tools to help you so, a nice one is called the VARK Questionnaire and helps you identify how you learn better.
Personally, I like watching hour-long introductions to new tools before moving to articles, docs, and tutorials. And only then I move to the more practical stuff.
Pick a path. Try to learn everything and you'll suck at a lot of stuff. One of the best things I did career-wise was to give up on being a mediocre full-stack developer and focus on being a really good front-end engineer.
Narrowing down your focus reduces the amount of stuff you need to learn and gives you time to really develop a skill. Just be sure to pick a path that's viable and have enough job openings.
Apply what you learn. Cramming a bunch of theory with no practice is a surefire way to burn-out. Try tinkering with the stuff you just learned. See if that library works as nice as it's docs says.
Break stuff! You're the sole responsible for your learning, so make it fun!
Start with the basics. I'm ending with the most important one. Even if you have a lot to learn and are in a hurry, learning the basics will make your journey much smoother.
If you're starting as a front-end developer, give yourself plenty of time to learning the basics of HTML, CSS, JS, and how browsers work before moving into harder stuff like React and bundlers.
The same applies to other areas. You can't build a strong house without well-laid foundations!
Aaand that's a wrap. I covered every single one of my learnings about these classic problems.
If you just scrolled to the conclusion, here's a quick summary:
- Being an actual impostor is hard and you're probably doing fine.
- It is ok to feel bad about failure as long as you learn (and teach!) from it.
- People’s stories are different and comparing yourself to them is a bit dumb.
- Yes, there is a lot to learn. Pick an area and try to improve consistently.
And as a final takeaway. Don't worry about fixing any of these issues, they come and go.
Instead, use your energy to learn how to deal with them and you'll make your career a more enjoyable race to run.
Please let me know your thoughts on this article, share your tips in the comments!
I still have a lot to learn and will certainly publish an updated edition of this article in the future. So stay tuned and follow me on Twitter for takes on front-end, career, soft-skills, and the occasional shitpost.
Oh, and if you found this article genuinely helpful, please share it with your friends and peers. 😄
Photo by Max van den Oetelaar on Unsplash
"Working 80 hour weeks while maintaining 16 open source repositories might make a person's career skyrocket, but at what cost..."
For me the cost was a constant panic attacks and very painful recovery.
You can not know everything and you do not need to. This is a marathon not a sprint.
Thanks for the feedback, Dimityr.
I've also been to a similar scenario and agree that no amount of progress is worth if your mental health gets wrecked.
Unfortunately, we work in an industry that romanticizes that kind of behavior with the said "10x developers" and productivity fads.