Overcoming Imposter Syndrome
Imposter syndrome is a psychological phenomenon in which people are unable to see their own accomplishments, dismissing them as luck, timing, or as a result of deceiving others into thinking they are more intelligent and competent than they believe themselves to be.
Whether you’ve just begun your journey to learn how to code or you’ve been paid to code for many years, you can and (likely) will face imposter syndrome. I’ve been working in the software industry for more than four years now and I still face imposter syndrome often!
The nature of software development is fast-paced, fluid, and always in flux. It’s what makes building software so challenging, interesting, and fun. But that also means that you’re constantly faced with things you don’t know. And even the things that you don’t know (and everyone says you “need to know ASAP”) are changing before you can even start to know them.
So, you’ll need some ways to overcome that feeling of being an imposter. Here are a few ways that help me:
Find a Mentor
This one ain’t easy but it’s one of the things that most helped me get through my early days as a Developer. Preferably, your mentor is someone who is more experienced than you in software development or has worked on various software teams, i.e. in QA, Product, Design, Development etc. A mentor can really help you get over the many humps you face early on. They don’t necessarily have to help you get over those humps by coding with you, but they can help give you perspective and guidance on your progress.
Find Your Peer Pairs
Form a “peer pair” with someone who is going through what you’re going through. It can be immensely helpful to be able to communicate your frustrations, failures, victories, or even just the day-to-day. With a peer, I have found that you can be more open without worrying about how they may view you. And more importantly, you can listen and learn from what they’re going through.
There’s a lot of fellow “newbies” out there in the developer community (check out the appropriately-titled CodeNewbies community) and everyone is a newbie in something. There’s a lot to learn about the different ways we all approach learning. So, find someone with whom you can share your learnings.
Surround Yourself with Smarter People and Take Advantage of it
Company of intelligent people is like a vast ocean, there is so much to learn from them. Having them around awakens a desire to be like them. And that desire pushes us to learn new things, to improve or to be like them. In their company, our pace of growth increases, and sometimes it helps in surpassing our limits as well.
Humans have a tendency to observe others, their actions, style, behavior everything – and this tendency applies to both the situations: When we are surrounded by intelligent people, and when we are surrounded by less intelligent people.
We observe their actions, gradually start feeling comfortable in their company, and sometimes subconsciously start behaving like them. So, if we remain surrounded by intelligent people there will be a greater possibility that it will have a positive impact on our behavior as well. So where on one hand, company of more knowledgeable people provides an extension of our personalities, on the other hand company of less knowledgeable people limits our growth and places boundaries on our intellectual development.
Once you’re surrounded by smart people and challenging problems, be curious. Apprenticeship Patterns by Dave Hoover and Adewale Oshineye is a great book and a must-read for all developers. It treats software development like the craft that it is and paves your long journey from an apprentice to master with practical patterns. One of these patterns is “Exposing Your Ignorance”.
“The most obvious way to expose your ignorance is to ask questions. This is easier said than done, particularly when the person you’re asking has assumed that you already know the answer. Press on! Sure, you could protect your pride and take less direct routes to obtain the required knowledge, but remember that your road to journeyman will be shortened by taking the most direct route available.
With practice and time, you will find that asking direct questions to the most knowledgeable people on your team will become second nature. While you are exposing your ignorance, you are also exposing your team to your learning ability. And sometimes they will gain a new clarity about their own knowledge in the process of answering your question.”— Chapter 2: Emptying the Cup, Apprenticeship Patterns
Pick Something and Practice it, Regularly
Earlier this year, I started learning Robotic Process Automation. So, I spent my free time learning about the concepts, tools, doing research, following blogs & meeting experienced people in the RPA industry. I could see my own conversations around RPA evolve over the course of my learning period (which is still ongoing). By the end of 4 months, I had delivered a talk on RPA within the company, built some complex bots using various tools & had written a blog post on RPA
I was fascinated by software robots and the new set of capabilities it provides to solve real life challenges. So I picked it, stuck with it, and deliberately practiced it.
Make Decisions Consciously
Oftentimes, when faced with an overwhelming codebase, it can be easy to fall into the trap of programming by copy-pasting code, following existing patterns, and “making it work” without thinking through your choices. Try not to fall into this trap.
When you’re writing code, make sure you understand how your code works and why it’s structured in the way that it is. Remember, I’m not saying that you shouldn’t ever copy-paste code. I’m saying that, if you are copying code, it’s important to understand the code that you’re copying because you are implicitly making all the decisions that were made by the original author(s) of that code. And you are also making an explicit decision not to refactor the code so that you don’t have to write it.
Basically, when someone asks you, “Why did you build it this way?” — try not to respond with, “Well, this other code was written that way.” This may mean that you won’t write a solution as elegant or reusable as a more experienced colleague but, if it meets the requirements of the task, that’s okay! Over time, each decision you consciously make, articulate, and learn from will help you make better decisions in the future.
Be Aware When You’re Experiencing Imposter Syndrome
Awareness is a big step in actively combating imposter syndrome. For me, self-doubt creeps in as I’m implementing a feature and it starts to take longer than it “should.” As this happens, I start to stress about how I’m being viewed by my co-workers and managers and this usually further delays the feature. It’s a vicious cycle and the only way to get out of it is to realize that I am stuck in this circle. I remind myself:
- The feature will take as long as it takes me.
- I work hard and care about the quality of the code I produce.
- I have asked for help when I’m stuck. If not, I can and should.
- I have communicated my current status to the stakeholders of my feature.
- Remind yourself of your accomplishments or a moment in the past how you tackled a similar situation
Read – The Imposter’s Handbook
Now go forth and fight those battles against self-doubt, insecurity, and imposter syndrome. Remember, there’s a big difference in how you perceive yourself and what is reality.