I'm currently prepping a talk called Overcoming Impostor Syndrome for a development conference, and ever since my proposal was accepted, I've had lots of devs come up to me (in person or via email / Twitter) and share their personal experiences and stories about dealing with impostor syndrome in their own careers. There are TONS of developers at every skill and experience level who have felt underqualified when they really weren't, or like they were just faking it and hadn't been caught yet.
The response I've gotten to this topic so far has really moved and inspired me (and I haven't even given the talk yet!) For this reason, I want to try and collect some of these stories, to show that this experience is VERY normal and developers who feel this way aren't alone – especially junior devs.
If this resounds with you, could you leave a comment below, sharing your experiences with impostor syndrome? Maybe a time when you felt particularly like the novice one in a group, or just the attitude / techniques you've developed to push past the feeling. I think it would be really powerful to have a ton of responses, showing just how many of us have felt this way / still feel this way.
Top comments (73)
Gosh.
I studied piano performance in college, worked in marketing for a few years, did some non-code stuff for a startup, decided to freelance 'building' squarespace sites (didn't even use custom code, just the templates they provide), threw myself into a coding bootcamp, became a product manager, and ended up co-founding this site. A site full of developers exchanging highly technical ideas and concepts. And I have zero experience as a "professional" developer.
BOY do I suffer from imposter syndrome.
How I'm dealing with it:
Since my main responsibilities are operational, I was able to subconsciously avoid the codebase. Ben confronted me about that, mostly with concern that I wasn't doing something that I actually loved doing. After we chatted, we came to the decision that I'm free to ask any question I want. Even ones that are very obviously google-able.
I needed to hear this explicitly because I spent a while believing that I shouldn't ask a questions unless I've thoroughly searched for an answer. I didn't feel comfortable asking basic questions like 'what does this gem do?' because I knew that I could find that out, on my own. But recognizing that my time is extremely valuable has helped me ask the 'dumb' questions I've been afraid to ask. And it's making me much more efficient, and less afraid to break stuff.
I started in this industry after being a hobbyist and having no formal CS background - I studied neuroscience and was well on my way to an academic career when I decided (with the assistance of a friend who from then on became my career sherpa) I should take my hobby into a fulltime job. I was speedily doing code challenges, TA'ing classes, running my thesis experiments, and writing my thesis while simultaneously applying to every job I could find.
After over 100 submissions with either rejections or no responses, I finally had an interview! Some time after, I was plopped into my first software job in a new city, and had no idea what I was doing. I struggled with imposter syndrome for almost a year - how did I conquer this? Sometimes it's hard to really think about, and sometimes I wonder if I truly did ever conquer it. A few different things, in my mind, helped me with this:
Realizing this is a very meritocratic industry, despite how HR departments treat things. This becomes most clear when other developers start coming to you with questions, and you can comfortably answer them. This comes with the next point:
PRACTICE. I always felt like (and still do) that I have to prove something because I don't have a degree. I do a lot of coding and reading about coding in my free time - it helps that it's a passion of mine, but I make sure to maintain balance with other things in my life, such as exercise, pleasure reading, etc. But this gets you the knowledge to start answering questions your teammates you have, and as you do this more and more often (it'll come as you practice, because the questions will naturally seem like easy ones to you), your own confidence will build along with the confidence others have in you. It's a nice positive feedback loop.
Work on actual projects for your practice - yes you should take online courses, yes you should do coding practice, but you should contribute to open source, build projects that are interesting to you, etc. This skill transfers over - and I actually have a story about an instance in which this happened to me just over the last week, but it's a long one that should probably be its own post.
Jump into the deep end. This is always a leap of faith - once you get past the drowning feeling, you'll find yourself swimming. Challenge yourself - take the initiative to rewrite your company's testing procedures, learn big data processing by building a big data app, deploy your first single page app, do some embedded programming - then break it all or have others break it, and fix it. And break it. And fix it. It will then become routine and old hat - then comes the knowledge, the confidence, and it starts replacing that feeling of being an imposter.
I think the key takeaway here is building confidence, and constantly pushing your limits. Failure doesn't exist - you will always learn something and become better, and as you build that understanding and the confidence I talked about above, you'll welcome 'failure' and success: failure is learning, success is demonstrating what you learned.
As for my personal example - I've been in the industry for 3 years now, am building out my own startup (remember when I said to jump into the deep end?), and am loving every minute of it.
Thank you for this thoughtful response. I also don't have a CS degree (in fact, I have a BFA), so that part especially hit home for me! Contributing to an open source project is one of those things that has been on my dev "bucket list" for a while, but I just haven't worked up the nerve to do – it's reassuring to hear it was such a positive experience for you. Your points about failure are also completely on point, although it sure can be hard to see that when you're in the middle of it! I think it's really an important perspective to have.
Best of luck with your startup!!
Thank you so much! Most OSS projects are very welcoming to people of all experience levels, so jump right in, I'm sure your PRs will sail right through review :)
These are very wise words Kyle! Best of luck :)
I’ve probably suffered from impostor syndrome throughout a large part of my personal/career endeavors (I just didn’t know it was a thing). Looking back, I suppose it’s not hard to understand why. I have a history of stretching way beyond my comfort zone and biting off way more than I can chew.
I never finished college, and at 18, went head-first into a pretty successful career that had me going from being a timid girl working in accounting, to being a VP of Marketing with a lot of responsibility and direct reports. Then I got this crazy notion to teach myself to code, and got my first “real” developer job in 2007 (a job I still work at part-time to this day). Two years ago I decided to learn an entirely new stack, which brought about entirely new waves of impostor syndrome — and now I’m about hip deep into getting my own startup off the ground and launching my first app.
Fighting impostor syndrome for me has been a consequence of either being a late starter, or choosing to go down riskier paths, and the discomfort caused by doing so. The “fake it ’til you make it” thing. Pushing outside of my edges always brings about deep self-doubt initially, and then eventually I find that perseverance overcomes, thankfully! I’ve never quite felt entirely comfortable, or entirely confident while stair-stepping my way to new places, and yet somehow I've continued to do so. I’m also someone who has spent years performing on stage in front of crowds, with terrible stage fright, too — so go figure! I mention that because the feelings are somewhat the same for me.
In addition to all of these experiences of my own, I have so many questions about this topic!
Why does impostor syndrome seem to be so prevalent among software developers in particular? Is it really experienced more by software developers compared to other professions, or are we just more aware, and talking about it more? Is it because we are confronted more with what we know or don’t know on a day to day basis compared to other professions? Is it the constantly changing, ever-morphing vast universe of things to know within the technological landscape? Is it because we BUILD things that are visible and able to be critiqued so easily, and that there are 100s of ways to solve the same problem and the “right” way is always debatable?
What about personality? Is software development a career that attracts more people who tend to have impostor syndrome tendencies for some reason? The reason I ask that is because I did feel some of the impostor syndrome feelings throughout my career, when I was not a developer. Having worked extensively as both a marketing professional and a developer, I can say that although I’ve had some moments where I felt impostor syndrome as a marketer (in the presence of those who I considered marketing geniuses, no doubt), I do feel it way more on a day to day basis as a software developer.
Isn't this impostor syndrome stuff more self-inflicted amongst ourselves as peers? I mean, do our end users care at the end of the day, if things work well, whether or not we "knew all the things"?
Is it possible to have a healthy dose of self-awareness, without the fear of being found out (whatever that means!)? I mean, it’s okay to not know everything…to not have all the answers, right? I am definitely proud of the fact that I’ve been able to Google my way to building things that work.
It helps knowing that I’m not the only one who suffers from this affliction, though, so I’m appreciating this thread a lot. It's great to hear everyone's stories. Thanks.
I'm a career switcher who was given not very challenging tasks at my first tech job. The first day of my second job, I was thrown into a new language, framework, and codebase and given (what I thought at the time) was an impossible task, and no one else worked on the project. I remember just sitting at my desk thinking I should quit. That there's no way I would be able to do this, so why not quit before I was found out. Luckily, I took a deep breath and told myself I would just try my best.
2 things have always helped me when I feel like an imposter:
Breaking things into smaller tasks. When something seems too hard, I try and make it into tasks that I can accomplish one by one, which gives me more confidence as I complete each.
Helping people. Whenever I think I know nothing, I answer someone's question and while I'm explaining something, I realize that I do know things! You can try this technique to explain things to anyone. Just talking through anything makes you realize you know more than you think.
It may be a paradox, but my biggest experience with impostor syndrome was not in a professional environment, but during the FreeCodeCamp curriculum I was following. I have never followed any college course in this field and even if I faced difficulties, I was always able to overcome them.
Until I got to the React challenges and the Game of life exercise. I can remember the feeling I had when I first looked at the requirement. This feeling of being out of place, of knowing that there was NO WAY I could do such a thing. It was a pretty awful place to be in. I procrastinated this exercise for a few weeks. Then, I just decided to break the problem in very small pieces. Just show a bunch of boxes. Good, now just make some of them red and other grey. Ok, now add a random React method to make those boxes change their color ....
Finally, before I even realised it, the exercise was completed and all the requirements were done.
This experience really taught me a lot about myself and how I should tackle this programming thing.
The voice in your head that tells you: "You are worthless, this is not you" never goes away. It comes back every time I face a challenging situation at work or during a complex side project. I believe it's just part of every complicated journey like learning to code.
Whatever knowledge I have, whatever problem I face, I always tell myself that I can always learn a little more. It's never finite, there is always something I won't know, but there is always something I can learn.
I like to think of it like infinity with numbers. Whatever number you can think of, you can always add 1. With that addition, you come closer to a solution, and before you know it, you solved the problem.
Ahhh, I've had the same experience with code tutorials – like, you've just watched the video or whatever and they set you loose to code your first "real" thing and all of a sudden it's like "oh shit, I haven't really learned anything, I can't do this." But you're right – pushing yourself thought that pain point and finishing the project is such an empowering moment. I think your outlook on learning is really inspiring – also I try to remind myself that it's okay not to know everything right away. In fact, if I already knew everything about my chosen career already, it would be pretty boring!
I had a very similar experience with that same project.
My first real software development job involved me being thrown into the deep end to build a product for a startup, with very little guidance other than some blog posts on the Internet. I was learning to code for real as I went. I constantly thought I was probably making a ton of mistakes I didn't even know I was making. In hindsight I was, but it wasn't so bad.
What really kept me up at night was when I would learn something new and feel bad if I wasn't already practicing it. And by new, I mean new to me. One path I went down for a while was that our test coverage was pretty weak and I wasn't sure what to do about it. Our pace of development and quick changes made it seem really hard to get started with more than a few basic tests.
At some point I found out that some of these issues are basically common across all startup environments. It's normal to cut a few corners. And even if it's not ideal, it's basically what everybody in similar situations was also dealing with.
I ran into a similar situation with technical debt. How am I ever going to get out from underneath this mountain of wrong turns? I was lucky enough to attend a Sandi Metz talk where she described the situation I was in and described it as normal. It wasn't just me. And while her talk offered some solid solutions, the most helpful takeaway was the acknowledgement that technical debt is natural and normal.
I still feel like I deal with imposter syndrome all the time but it gets better. I'm quicker to acknowledge that I actually do know what I'm talking about sometimes and when I feel like I don't, chances are a lot of other people feel that way too.
I'm excited about how far I have come and I am excited that in a few years I will have progressed that much more. I'm not trying to learn every new thing, I'm just trying to keep expanding my general capabilities by taking on the task at hand, and trusting that that will make me a more confident and experienced developer over time.
I know it was a bit of a minor detail in your story, but I think what you mentioned about having "very little guidance other than some blog posts on the Internet" is actually really important – from what I've seen, a lot of other devs are in the same bucket. I think a lot of folks look at that situation and use it to defend their impostor-y feelings (“I can’t really code, I have to google everything”) when it’s really just the opposite and is, in fact, empowering (“I have strong problem solving skills, and with the amazing resources available on the web, I can figure out anything and make anything work.”).
Thank you so much for sharing :)
Oh yeah. I really try to put myself in this mindset when building out dev.to. Our need to go to the Internet void for help pervades every bit of our journey, not just for strictly technical questions and answers. That time someone online told me "don't worry, all startups kind of have codebases like that" was everything I needed to plow along.
I've been working in technology before the www was invented (early 90's), and the majority was in tech support. In fact I dropped out of college to work full time in support. I was good at it, but I knew it wasn't what I wanted to do for the rest of my career.
I switched to web development in 2011 after picking it up on the side. I was the oldest in age in the agency I started at, but very junior in experience. Although I tried to learn quickly, and my support background helped with troubleshooting and debugging, I still felt behind everyone else. I never had a bad review, nor was criticized for my code, but I thought I should know more because of my advanced age.
Ok, I'm in my mid 40's now, but that is like 100 in dev years.
I'm now on small team, building cool things for a life sciences publication, and I'm still feeling I should know more. I'm amazed that I haven't been found out and have been able to fake it enough to keep my job. Again, only positive feedback from my peers, but that little devil on my shoulder digs in its claws and whispers in my ear that I should go back to support.
I feel the imp(-postor syndrome) especially when I'm at a conference. My programming focus is within the WordPress sphere and I've met several of the really smart people who have contributed to the codebase. There is kind of a hero worship kind of thing when you meet them, knowing that they built the platform your career relies on. It really puts me in my place.
I've talked twice at my local meetup. It was on subjects I have a decent-enough handle on, but Mr. Imp was riding shotgun the entire time, making me nervous.
It is a daily struggle to overcome my impostor syndrome, especially when the code I'm working on doesn't come naturally for me.
I hope this rambling helps, and good luck with your talk!
-Jim
One thing that someone recently said in a talk is that Imposter Syndrome is experienced by senior developers who do not feel adequately prepared or trained for their current position, as opposed to new developers who don't feel ready. Maybe this will be an interesting point of discussion for your talk.
In my case, I'm a career switcher as well (French Ph.D in 1998., experienced a terrible academic job market, and then caught the internet at a great time to self-train and move up). 15 years later I am quite sure I'm not the greatest developer in the history of development. I do believe, however, that I bring something else to the table, which is a diverse perspective and a willingness to learn. If you can find it within yourself to value your own perspective as something that few others might have, and share it in a spirit of helpfulness, that is a powerful gift to give. And then if you can also take your accumulated skills and experience and use them to teach others, that is a great way to rid yourself of imposter baggage. So for me, the key is - value your experience and uniqueness, and make sure to pass on your knowledge.
I'm 36 years old, and have been working in industry for a year now. I have an existing BA in Criminal Justice and Criminal Law, but couldn't go into that field because of The Great Recession, so I started doing customer service for a Bay-area tech company about 6 years ago. During that time, I realized that while the company takes very good care of me and my family, I was still 30+ years old doing what amounted to call center level customer service. If I wanted to get ahead in life, and be able to provide for my family, I had to change fields.
I started going back to school, this time for a CS degree, and I'm 3/4 of the way through that. Generously, my current company allowed me to intern for them last summer as a front-end dev, and unfortunately, that's when impostor syndrome set in. I've always been worried that, as a 35+ yr old newbie, I'm already 10-15 years behind my colleagues in terms of experience, but my first internship really cemented my fear of failure, because I felt like I had one shot at this. Ageism in this industry exists, and while my current company is great, if they go under, I'm woefully behind the curve when it comes to experience, vis-a-vis my age.
I think, as a dev, that I have a tendency to try and see the entire picture. I'm still, from school assignments, expecting to have the beginning, middle, and end of an assignment / project explained to me. Transitioning from school to real world is one of the hardest things about this process, because industry is so radically different from the finite world of school. In industry, it's rare that you get to start from scratch and design a project exactly how you want; 99% of the time you're dropped into an existing codebase, with existing quirks, and style guides, and bugs, etc etc and you're expected to just grok it all and keep the ship afloat. My personality is such that I have a hard time if I don't have an understanding of the whole flow of the entire project; I don't do well in compartmentalization. If I'm designing a new widget for the front end, I want to know where it's getting the data, how that data is being parsed, how the data is being captured, how it's being stored, and retrieved, and sanitized and and and, lol. That has definitely been exacerbated with school, and that is a huge contributing factor to my impostor syndrome. Couple all of that with the proclivity of our profession to be socially awkward, and sometimes lack social skills, and now you've got senior devs that are probably really nice people, but who don't know how to help you, so they appear stand-offish and demanding!
Fortunately, my mentor was amazing. He spent a lot of time talking to me about impostor syndrome, explaining that it was something that he dealt with on a daily basis, and helping me see the forest for the trees. He kindly took the time to explain the flow, from back to front end, and then weaned me off of that desire to know by giving me small, bite sized chunks to begin with, before moving me on into something that was more a part of the whole.
To combat impostor syndrome, as a newbie, it is crucial that you have good mentorship. The young (experience wise) coders are like little seedlings; they need support, and something to hold them up until they're ready to stand on their own. Clear, and concise expectations are key, along with a sensible, and reasonable timeline to accomplish them. Be up front with the newbies; let them know that they're going to feel this way, it's completely ok, and they have a reasonable amount of time to work on it.
I am currently revising for degree examination after which (if successful) I will get Bachelor's degree in Computer Science. This is probably the time when I feel the most like an impostor.
I don't think I will overcome this until after the examination which is in two weeks. So wish me luck and hopefully, I'm not an actual impostor.
Good luck! Hopefully your success on the exams can be a validation of your non-impostor-ness ;)