Imposter Syndrome is a common topic in the tech world, especially in the Software Development world. It’s also a very personal topic, arising to each person for different reasons and impacting each person differently. Here is an exploration of the topic from two points of view: Amanda’s and Scott’s.
Hi, my name is Amanda, and I am a software developer that is floating in a constant state of self-doubt, fear, and feelings of inadequacy - aka Imposter Syndrome.
I never knew what computer science was until I got to college and felt lost in my business major. My dad is a software developer, so I switched to a Computer Science major because I didn’t know what else to do - and then became so intimidated by the know-it-all-been-coding-since-I-was-4 guys in my classes that I switched to the easier “sister” major of Information Systems (IS). Looking back, this is definitely where my Imposter Syndrome issues began and was the first time in my life that I really felt this kind of inadequacy.
Despite changing to the less machine language heavy major and sticking with IS (still had development but also a focus on project management), I landed a software development role out of college. The feelings of being not good enough for the field lessened in some ways when I got more comfortable in the tech stack, but amplified again when I learned I was on a losing side of a gender wage gap. I later moved on to Michigan Software Labs where I’ve really been able to acknowledge my struggles with Imposter Syndrome and have been encouraged to shed the fear that I hold and receive affirmation that I do belong in the tech world.
Hi, my name is Scott, and I’ve been a full-time software developer for about 3 years.
In my life I’ve worked many jobs, been on many teams, learned many new skills, and tried many new activities. And none have produced the feeling we label as Imposter Syndrome as software development. Why is that?
I played organized baseball for twelve years. I’ve been on teams where I was among the worst players and teams where I was among the best. I was always aware of my ability and contribution. By the time I stopped playing organized baseball I recognized my contribution had been on a negative relative trend for many years, and the enjoyment wasn’t there for me anymore. But I was never made to feel bad, even if I was among the worst players on a team. When I was among the youngest players I knew that I wasn’t supposed to be among the best at this age.
I took the Chartered Financial Analyst exam a handful of times, doing better each time, but never passing it. But I never felt I was an imposter, that I shouldn’t be taking the test. I just felt I hadn’t worked hard enough or didn’t have enough passion.
I’ve started new jobs where no prior knowledge or skills were needed and excelled immediately.
I’ve started jobs where prior knowledge and skills would have helped, and while I was nervous initially, I had no feeling that I didn’t belong or shouldn’t be there. Just that I was starting on a path.
But at almost every step on my software development journey, I wonder if I can do it, if I’m cut out for it, if I belong.
Why is Imposter Syndrome MORE prevalent in Software Development?
I think there are 2 main reasons Imposter Syndrome seems to be especially pervasive in the software development profession.
Pop culture, film, tv, etc all seem to portray software developers to be nerdy men with little social skills, but have a strong knowledge of all things of the micro-electronic nature. There is absolutely nothing wrong being that, but it’s not all that exists in the software industry.
I don’t feel like I fit into the tech world outside of actual development. I am a woman, I don’t have a clear concept of how much 1 GB is compared to 1 TB, I do not understand Pokemon, I’m not entirely sure I know what a Raspberry Pi is, etc.
It feels silly to list all things that I think make me different, because despite me not fitting into the generic mold of “software developer” that has been defined by tv shows, movies, and “revenge of the nerds” culture - I still have good relationships with my coworkers and I don’t struggle to find commonalities, and I’ve learned that all my coworkers have hobbies or quirks that don’t necessarily align with the media portrayed role.
I actually do fit in, but the stereotype kicks me and many others right back out.
Spinning Reel of “New”
The second reason Imposter Syndrome can be extra difficult to move forward from in software development is because of the vast amount of languages, platforms, and data storage that there is to learn, and they are changing and expanding at such a rapid speed. It can feel like you can never keep up and that you don’t know that much about the field - and you probably don’t.
Accepting not that you don’t know everything, but that you can’t know everything is crucial.
Software development is a unique collection of infinite knowledge, mixed with conceptually difficult topics, mixed with non-tangible concepts, all engulfed by the fact that little replaces pure time spent developing software.
Take a conceptually difficult subject like astrophysics. Not all people can cognitively do it. Effort, passion, time spent—may not be enough.
Take subjects of giant breadth, like biology or religion or law. Any single thing may not be conceptually difficult (there are of course, but relatively less), but personal attributes like determination, effort, passion, significantly affect whether you’ll grasp the subject.
Software has some of both.
Software is also a non-tangible world, so when someone types ~/projects/enter_narnia.bash || grep “Mr. Tumnus” -r we have no mental model or context to begin understanding what is going on. It is pure witchcraft.
Software also has a steep learning curve, so the skills and abilities of someone even five years our senior appear like sorcery.
Mix breadth, with occasional conceptual difficulty, with non-tangibility, with a steep learning curve, surrounded by wizards and sorcerers, and I’m not surprised I feel like an imposter.
Software development “progression” is not linear. There’s no universally accepted road map. No one can ever say, “I’m 73% of the way there.” And in the absence of those sorts of mental models, we assume that we’re 2.74% of the way there. Or that we’ll never get there.
What are the biggest manifestations of Imposter Syndrome to you?
Fear is the first thing that comes to mind for me when I think about Imposter Syndrome. Fear of failure, fear of not knowing enough, fear that no one will resonate with what I’m writing right now - I too often let fear dictate my life.
Fear of failure drives me to do better, fear of not knowing something often slows me down. Fear of rejection can stop me completely.
I’ve been afraid to write a tech related blog post because I think that I don’t know enough, or that someone is going to tell me that what I wrote was stupid. And to be honest, I don’t know enough and someone probably would think what I wrote is stupid - but should that stop me from trying? I tend to assume that anything that I know is not of value to anyone else or that what I know is wrong and someone else has a better idea. I’ve gotten better at controlling it, but if there is tech that is foreign to me I will spiral into thinking that everyone else knows this but me and panic that I need to learn it all, when really I just need to stop, breathe, and remember that you can’t and shouldn’t know everything.
Imposter Syndrome affects me most significantly, by causing me to assume the worst, when I don’t have the information or experience to assume otherwise.
When I come across something I don’t know how to do, I assume:
that everyone else already knows how to do it
I will have a hard time learning it.
When I push a commit that has lint errors, or submit a Merge Request without unit tests, or completely overthink a feature implementation, overlooking a simple way to do it, I assume that no other developer has ever done this.
How can we Handle That / Respond to That / Combat That?
This feeling of inadequacy and fear of failure have faded a little more with every day that passes because I’ve learned more about my trade and I’ve also learned that with the things I don’t know, I’ll be able to figure out. It’s still easy to get wrapped up in fear when people start talking about some new technology that you haven’t learned yet and they are using new terminology, but I have learned that instead of either pretending to know what everyone is talking about or letting myself get stressed about not knowing something I “should” know, I’ll take 5-10 minutes to find and read a couple articles about the topic, and oftentimes it’s no longer scary or intimidating after that.
No one is expecting you to be knowledgeable in every facet of software development, it’s not possible and those who say they are knowledgeable are either anomalies or lying. My advice? Drop the “fake it until you make it” attitude and embrace humility. Focus on lifting your ability to learn something - so that when there is new tech that you don’t know anything about, instead of feeling scattered because you don’t know what it is, you can have the confidence to say “I don’t know what that is, but I can learn it”. This isn’t going to come overnight, but if you can chip away the protective layer it will make you a better coworker, developer, interviewee, and person.
I think knowing that a significant amount of people around you are probably suffering from the same thing can be a great step forward to starting to shed the fear and move forward. I know I just talked about the things you don’t know, but when you do know something, have confidence but openness when talking about it.
I think that more than most activities I have undertaken in my life, software development requires tons of affirmation along the way.
“you understand that the tilde means the root of your file system, and that forward slashes separate directories (just a coder term for Folders), and that dot files are just files like anything else, and that in coding land files don’t always need file extensions like you’re used to? Here is why knowing all that is important and here is also why you have accomplished something.”
“you understand what a class is, what instantiating means, how you can access and use methods and properties on that class? Here is why knowing all that is important and here is also why you have accomplished something.”
Otherwise we don’t have the mental models to conceptualize what we have learned and why it is important. We don’t know if we have learned the fundamental theorem of calculus, or learned what a pencil is.
Recently during a coaching meeting I was expressing how I felt more confident and able picking up tickets, now that I needed to ask fewer questions, and was getting to MR and merged quicker. I received affirmation, but much more importantly, (my paraphrase), “when the time inevitably arrives that you don’t feel that way about work you’re doing, DO NOT assume that you’ve regressed.” That framing helps stave off feelings of inadequacy and imposter syndrome.
When I worked at Potbelly I didn’t spend 90 minutes stuck making a sandwich because of a typo, being in the wrong directory, or not being connected to the VPN. Software is a different world!
Sometimes you have to just let time and experience do its thing and you will eventually feel a little more comfortable the more you are immersed in the software world
You aren’t the only one that feels like you’re faking it ‘till you make it
Buzzwords are just buzzwords, don’t let them scare you.
You do not have to conform to the “nerd” stereotype that media places on software developers, most of us don’t.
When teaching, always be looking for ways to contextualize / benchmark / quantify what you’re teaching.
When you’re learning, do the same.
Do not observe impressive, unfamiliar, and mysterious abilities of others in a vacuum, assuming that you: (1) should be able to do that now, (2) would not be able to learn how.