I’ll never forget the time I spent a summer at Facebook. I had an opportunity most people can only dream of. I stepped into a robust Software Engineering culture and a community of mission-driven people. The perks were everything you’ve heard of and more. I ate at gourmet cafeterias, rode free commuter buses with Wi-Fi, and had all the free tech gear I wanted.
That said, I remember my first week being the toughest week of the summer. The people who ran the intern program decided to gather several of the summer interns and set up a happy hour for us. During the happy hour, all the interns were asked to mention which school we attended, which team we were working on, and what we wanted to accomplish by the end of the summer.
The first intern:
“Stanford University. I’ll be working on the Android team for Facebook marketplace. I want to completely revamp how sellers display their items and help them sell faster.”
Then the second:
“Brown University. I’ll be working on the Marketing Data Science team. I want to create new algorithms that will help us reach new demographics.”
Then there was me:
“Uh, I went to, I mean, I go to Baylor University. I’ll be working on the Data Center Infrastructure team, and I’m not sure what I want to do yet.”
There was a deafening silence.
“Harvard University. I’ll be working on …” The rest of the interns continued their introductions.
I felt so many emotions. I didn’t feel I belonged among such accomplished individuals. I didn’t deserve to be put in the same group. I felt intimidated by their robust skill sets and extraordinary visions to change the world. When I looked at what I had to offer, I paled in comparison.
You may not have had a Software Engineering internship or job yet, but you’ve felt the same exact emotions I just described. Maybe you’ve written “Hello World” and thought “Who am I kidding? I’m not a programmer.” Maybe you’ve talked to a seasoned software engineer and felt intimidated by their robust knowledge of programming. Maybe someone asked you a programming question, and you felt like a phony because you couldn’t answer it.
These feelings of uncertainty, intimidation, and illegitimacy aren’t isolated occurrences — they are a part of a larger experience many have come to know as “impostor syndrome.” Impostor syndrome is any feeling of professional inadequacy. You feel you don’t belong because everyone else has “it” figured out.
Impostor syndrome can plague programmers of all levels. The number of proficient programmers who still feel like they’re not good enough will surprise you. You’re not hurting yourself if you experience the feelings that come with impostor syndrome. But you are in trouble if you give into those feelings.
The rest of this article covers two things: how to recognize if you’re giving in to impostor syndrome and how to overcome it. I’ll share personal stories of how I experienced feelings of uncertainty, intimidation, and illegitimacy throughout my programming journey.
I’ll also share the ways I overcame those feelings. By the end, you’ll walk away with proven strategies and approaches to help you push through impostor syndrome and make unbelievable progress in your own programming journey. Sound good? Let’s get started.
Are You Giving In to Impostor Syndrome?
Almost anyone can recognize when they’re scared or uncertain, but recognizing when you’ve given in to that fear and uncertainty can be difficult. The crazy thing? Two programmers can both experience the feelings that come along with impostor syndrome, but produce vastly different results.
Several years ago I attended a two-hour coding workshop. The instructor was going to take us through nuanced programming principles like recursion and classes. As I made my way to the entrance, I could feel my stomach tighten up. I thought of all the coding concepts I didn’t know and how I struggled to even write a simple function. I walked in and sat down at a table by myself.
I was scared to talk to anybody because I was convinced every person knew more than I did. My worst fear would soon be confirmed. The person facilitating the meetup asked everyone who was comfortable with a programming language to raise their hands. Everyone’s hand went up — except mine. Talk about intimidating.
The instructor encouraged people to ask questions as he went along. He wanted the workshop to be interactive. You know what I did? I stayed silent the entire time. Within the first five minutes of the workshop I was lost, but I was too scared to ask questions because I wanted to look confident. Other people spoke up and worked through their problems while I wallowed in my uncertainty.
I left the workshop and felt a deep regret. I learned nothing. I wasted two hours of my time.
Looking back, I can recognize that I gave in to impostor’s syndrome. I know I gave in because I allowed my uncertainty and fear to hold me back from growing.
That’s what giving in to impostor syndrome for programmers looks like. You not only experience feelings of being a fraudulent programmer, but you allow those feelings to hold you back from developing your programming skills.
When you look back at your programming journey, in what ways have you given in to impostor syndrome? How have you allowed feelings of uncertainty or being a fraud prevent you from learning? Maybe you lost confidence in your learning direction because someone asked you a random coding question you couldn’t answer. Maybe you avoided a coding meetup because you felt judged by the established engineers at your last one.
Whenever you code or do anything related to programming, I encourage you to ask yourself, “How did I get better today?” I ask this question anytime I get done working on a project, attending a coding meetup, or trying to learn a new coding concept. If I can answer “yes,” I know I conquered impostor syndrome for that day. If the answer was “no,” I know I can do better to manage my impostor syndrome next time.
As you find ways to get better, you’ll overcome impostor syndrome, which takes us to our next question.
How Can You Overcome Impostor Syndrome?
When you look at established programmers, you may feel like a phony compared to them. When you’ve realized your coding skills aren’t where they should be, you may think of other programmers who are ahead of you.
Impostor syndrome tries to make programming all about the other person. If you want to overcome those feelings of intimidation, uncertainty, and illegitimacy, you need to focus on you. That’s where we’ll start.
Strategy #1: Focus On What You Produce
Before going into any endeavor where you’ll code or learn about coding, do your best to focus on your results. Impostor syndrome will tempt you to look at other people’s progress and what they’re accomplishing. Then you’ll feel bad because you’ll lose in comparison.
If you want to beat impostor syndrome, you should concentrate on your past results and the results you expect to produce. That way, you never lose because you’re comparing your results against what you’ve already done. If your results are better, you’ve improved. If not, you can further refine your workflow and find a way to improve for next time.
Strategy #2: Put On Your Learner’s Hat
When I went to my first coding meetup, I felt nervous. I was scared I’d be the worst programmer in the room. Instead of letting other people’s competency throw me into analysis paralysis, I decided to put on a learner’s hat. I did this by being upfront about where I was at as a programmer. I told people I didn’t know what to work on, but that I was there to learn.
To my surprise, people responded with kindness and openness. They showed me what projects they were working on. I’d ask a question about their problem-solving approach, and they took time to explain what their code was doing.
When you position yourself as a learner, people tend to open up and make themselves available to you. In most cases, people are even more inclined to help you along your programming journey. The best part about positioning yourself as a learner? They won’t (and shouldn’t) judge you.
Strategy #3: Find People of Peace
Throughout the night the meetup’s facilitator went around to each person and asked what they were working on. I dreaded the moment he would come to me and I’d have to tell him I was working on nothing. With 30 minutes left to go, he approached me. He asked what I was working on, and I said, “I have no idea, but I’m learning from watching.” His face went blank, and then he smiled. He sat down next to me and encouraged me. He said to never stop learning and that I was doing exactly what I should be doing at my stage of programming. He was my person of peace.
People of peace are anybody who’s willing to show you the programming ropes. The facilitator was an unexpected person of peace but was much needed nonetheless. He provided pivotal encouragement and pointed me in the right direction. Be on the lookout for people of peace. They’ll make your programming journey a lot easier.
Strategy #4: Fixate on Growth
Like I mentioned earlier, growth is the best indicator that you didn’t give in to impostor syndrome. It’s also a great way to overcome impostor syndrome.
If you want to overcome those feelings of uncertainty and intimidation, you should focus on how you can get better — even if that progress seems minute or incremental. Keep a book on hand so you can always have something to keep your nose in. Run through mock interviews so that you can refine your interview skills, but also learn how to anticipate potential interview questions.
If you’re looking for a great programming book to help you grow, I recommend checking out Grokking Algorithms, which is an illustrated guide for teaching algorithms! If you’re looking to get into interview questions, try reading Cracking the Coding Interview.
Strategy #5: Ask Thoughtful Questions
This strategy should be #1 because it has never failed me. I love asking thoughtful questions. Questions are disarming, even for the snobbiest of programmers, if you ask them the right way. Asking thoughtful questions ties in with positioning yourself as a learner, but it takes the learner’s hat strategy a step further. When you ask a question, you’re also asking for advice. People love to give advice. I suggest you take advantage of that.
The one caveat is don’t be gimmicky or demand answers. Put yourself in the other person’s shoes. Maybe you’re talking to a more experienced programmer. Maybe you’re talking to a peer who you think has made more progress than you.
If you want to make sure your questions are thoughtful, I encourage you to allow your curiosity to form your questions.
If you’re talking to more experienced engineers, ask them questions about their most recent project. Try to understand what makes them great engineers and how you can follow suit. I’ve used this tactic before and, to my surprise, came out with a coding mentor.
If you’re talking to peers who’ve made great progress, ask them what encouraged their most recent progress. Celebrate them. Their response will surprise you. They’ll point you to the same resources that have helped them. They’ll want to help you experience the same success they achieved.
Strategy #6: Master Google Search
If you find yourself coding by yourself and doubting your skills, start Googling questions. When I did this I searched for phrases like “how to become a better coder,” “coding problems for beginners,” and “simple coding exercises.” Those Google searches not only led me to discover problems I could solve with ease but also to problems where I was in over my head. In the end, my programming skills improved because I had a better understanding of where I stood as a programmer.
The best part about Google search is that it’s always within reach. You don’t have to leave your workspace, and you have a wealth of resources at your disposal. Whether you’re with people or by yourself, you always have the ability to grow.
Strategy #7: Listen, Listen, Listen
Finally, when in doubt, listen. When I was at the Python meetup, I took time to listen. When I wasn’t asking questions, I paid attention to what the other coders were saying. I also watched how they approached problems. I was able to understand how great programmers communicated and that writing problems on a whiteboard was a helpful visual for solving problems.
Everybody Doubts, But You Can Learn From It
All in all, it’s OK to experience intimidation or a lack of belonging. It’s OK to experience impostor syndrome. Your programming journey is your own. It’s not about other people and how much better — or worse — their skill sets are but about finding ways to grow your own skills. If you find yourself becoming weary, check out a great article on emotional self-care for programmers.
We discussed the surefire methods for how to recognize when you’ve given in to impostor syndrome. We also talked about seven effective strategies for overcoming feelings of intimidation and uncertainty. The journey is long, but worth it. I guarantee you will encounter impostor syndrome again at some point in the future. The biggest encouragement I have for you is that even expert coders still experience doubt, uncertainty, and illegitimacy. The goal is to learn how to manage it—that’s how you overcome it.
Keep learning and keeping coding. I’m rooting for you!