Software development is no stranger to impostor syndrome. Because tech stacks and languages are evolving constantly, it’s easy for developers to feel like we’re falling behind. Over winter break this past December, my aunt, before even saying hello, said, “Matthew, I read an interesting article about how everything you learned in college will be obsolete in two years.” Not exactly what you want to hear on vacation, but there's some truth to it. We’ve chosen a field that’s always changing and the pressure to keep up with tech, and our peers, manifests itself into this belief that we’re not good enough.
Even though I’ve read a lot about this and why impostor syndrome is so common in developers, for awhile I thought I was one of the few who had ever actually felt this way. So I recently sent a survey to software developers (both at HubSpot and external) simply asking “Have you ever experienced impostor syndrome?” Here's what they said:
That's an insane amount of yeses. Keep in mind the sample size wasn't huge, but still: 88% of developers said they’ve experienced impostor syndrome. Even developers with over 10 years of experience shared feedback that they worry about keeping up with technology, their co-workers, and the pace of development. For a 22-year-old developer with just 14 months of “real world” experience, this was (selfishly) good news. It meant I wasn’t alone; feeling like an impostor from time to time was actually “normal”.
For me, self-doubt didn’t really kick in until I had the opportunity to make mistakes. I worked closely with an engineer during my first internship at HubSpot who has over 3700 answers on StackOverflow and is frequently referred to as the resident Java guru. By my second day, I was given complete control over the project I would be working on. I was architect, implementer, and builder - I shipped my code as soon as it was ready. Today, these are the things that make our development process engaging and rewarding. But at first, that level of autonomy was scary. Having my code reviewed by one of the smartest people I’ve ever met was, too.
I started to wonder if I had somehow fooled my tech lead into thinking I was smarter than I actually was. I waited for everyone to discover that I had gotten here by accident. But that didn’t happen. No one ever pulled me aside to say they were onto me because it was all in my head. Instead, I made a ton of mistakes, quickly learned from them, and slowly started to realize something that’s helped put me at ease over time. And that’s that being uncomfortable can be a good thing because when you’re complacent, you probably aren’t growing.
I’ve interned with companies in the past where there was separation of state for the product. There were QA teams, there were architects, and there were two week iteration cycles. As an intern, I was constantly monitored and given mundane tasks that other engineers had passed on. I never really doubted myself as a developer because I never had to leave my comfort zone or collaborate with experienced engineers.
The problem with that is that you have to be challenged if you’re ever going to get better at something. That’s as true of development as it is of tennis or playing the piano. Staying in your comfort zone won’t change the way you develop code. But challenging things, which for me were autonomy and smart people, will because you want to make sure your code is perfect before it’s in production. I now review my PRs four or five times before submitting them and pay closer attention to my code. That doesn’t mean I don’t still feel like an impostor from time to time; there will always be tons to learn and smarter people in the room. It’s just that I try to think of my internal doubts as growing pains.
Getting comfortable with discomfort has helped me deal with self-doubt. But on a day-to-day, that’s a lot easier said than done. So, here are concrete ways that have been key in building my confidence over time:
When I first started writing this post, I felt (fittingly) nervous about putting myself out there. But then last week, during our annual INBOUND conference, our VP of Culture tweeted a quote from Seth Godin that resonated with me. During his talk he said: “The story you are telling yourself about your competence or incompetence, it’s all invented.” Instead of letting self-doubt craft elaborate stories in our heads, developers should remember that it’s okay to feel uncomfortable sometimes as long as it's not stopping us from taking on new challenges or eating a bowl of Cinnamon Toast Crunch.