"How did I get to this point in my career? I don't belong here."
"Oh, it was just pure luck landing this promotion."
"Eventually someone is going to call me out for the fraud that I am."
When is the last time a similar thought has crossed your mind? My guess would be at least once in the past year, maybe even the past 1-3 months. Why? Say hello to your new favorite inner enemy: impostor syndrome.
What is impostor syndrome?
It's the shadow living in the corner of your office, judging you. Except that shadow is yourself. It's that little feeling inside of you that says you're not good enough to do what you're doing. A persistent feeling of inadequacy and insecurity, like someone's going to call you out as a fraud.
Certainly not everyone feels this way, right? It's just me, right?
Wrong. Everyone feels like an impostor at times. Some may feel totally comfortable speaking with a group of junior devs but freeze up around their peers. Others are fine speaking with their peers, but feel they don't have the authority to speak to junior devs.
Regardless of how many years you are into your career, the feeling of inadequacy hits you out of nowhere. Nobody is immune to it. I've been coding for over 15 years now and it still strikes me, especially as I continue to grow my business. Impostor syndrome just pokes its head into new situations that I maybe didn't encounter before.
Okay, but what can I do about it?
Create a folder on your computer. Or if you're more of the "pen and paper" type, find a physical folder. Every time you do something cool - whether it's a project you're proud of, an achievement, an award, a nice email from your boss or a colleague, save it. Put it all in that folder.
Whenever you're feeling down on yourself, go through that folder. This is work YOU did, awards YOU received, kind words sent directly your way. This is all you.
Whether you're just getting started in your career or you're moving on up, just remember when you start feeling that bout of impostor syndrome creeping in:
- You are here for a reason.
- You are smarter than you think you are.
- You are more capable than you think you are.
- You earned this position in your career. You worked hard to be here. You deserve it.
Let's hear from you.
Impostor syndrome is an ongoing battle for many -- it's very common everyone regardless of career experience. When's the last time you felt like an impostor? What methods to do you take to overcome it when it shows up in your life?
Top comments (14)
I'm very surprised that it ever started to fade. I still remember being at a meetup or something and knowing I'm a perfectly fine coder, but I have no idea how to talk code in these environments.
I still don't have the kind of textbook knowledge of software concepts to always do well in these in-person environments, but over time I've become okay with knowing what I know, and being able to acknowledge when I don't know something and ask for clarification.
This is absolutely fantastic! I've read a lot of articles on Imposter Syndrome, and even written a bit about it, but I think this was the single best article on the topic I've seen so far. Be sure to add this to your folder!
P.S. What an absolutely perfect cover image.
Here's one of my more recent stories...
I was recently going through a strong bout of imposter syndrome. Dealing with chronic depression and an anxiety disorder does not make it any easier, let me tell you. I'd been away from code for a few months, as I had been working on another project, so I was just getting back into technical work and feeling like a complete fraud.
Then, on a technical help chatroom I frequent, someone asked for help regarding a segmentation fault in his C code. I started helping him, and found that his professor (of all people) had been defining a two-dimensional, 1000x1000 array of integers - over 7.6 MiB - on the stack. This had triggered a catastrophic stack overflow. Two other technical friends of mine confirmed my theory right then.
Since his professor wouldn't tolerate anyone pointing out errors in his own code, I helped the student write the dynamically allocated version so he could get his own code right, and instructed him to restore the original stack-allocation before turning it in.
The student thanked me profusely, and that's when I realized I couldn't be an imposter, because...
I am a verified expert in C and C++ manual memory management, as well as in debugging undefined behavior, segmentation faults, and odd memory glitches.
I actually knew more than a college professor teaching C about some topic. (You never allocate a 1000x1000 integer array on the stack, people.)
I was good enough at reading code and explaining things that I was able to help someone with a very difficult problem in their code.
There is always more I can learn, even in terms of my areas of expertise, but it meant a lot to realize that I do know something well.
I got into Toastmasters (public speaking) to improve my communication skills and after a couple years an interesting side effect developed. I've mentally started turning my list of accomplishments into a "self" speech that I tell myself when impostor syndrome hits and I sell myself to myself. By the time I'm done, I'm thinking "darn straight I belong here!" - a variant on your suggestion.
I'm not an expert on combating impostor syndrome, but some things that have helped me
Impostor syndrome is a reflection of how you measure yourself. If you measure yourself by how far from zero your knowledge is (or even, how much more knowledge you have than those around you), you tend not to suffer imposter syndrome. If, on the other hand, you measure yourself against some nebulous "know everything about ", you're going to end up with the symptoms of imposter syndrome.
Personally, I prefer to err on the side of "there's more to know" than "I know all I need."
I think the main reason is because the stack is a stack. It is LIFO structure, and very tightly controlled by the CPU. It's for local variables only; when, say, a function goes out of scope, its variables are popped off and removed.
It is also designed to (hopefully) remain entirely in CPU cache, so the variables can be accessed very quickly. It's supposed to be efficient, with little risk of memory fragmentation.
Heap memory, on the other hand, it vastly larger. It is better suited for random access, and won't necessarily stay in the cache.
Thus, the stack should not be larger. It is best suited for temporary variables that will be used and destroyed, especially those that will be accessed frequently. The heap is for everything else. Large data structures should always, always, always be in heap space, not stack space! That's just how the two memory spaces were designed.
In our company we have 360 review every half of the year. And it is a very good practice to keep impostor syndrome in place. You taking a feedback from your peers and managers to asses where you stand and where can you improve. But most of the time they remind you of things that you done and done good. Even if you already forgot about them or haven't thought it's significant enough. You can be surprised. I totally recommend it
No, it's just that a 1000x1000 integer array is really large.
Assuming the
int
is 4 bytes (which it usually is), then a 1000-element array would be 4 B * 1000 = 4000 B = 4 KB. That would probably be fine. However, you actually have an array of arrays, 1000 of them to be exact. So, you have 4 KB * 1000 = 4000 KB = 4 MB. That's a bit excessive for the stack to begin with.I had actually forgotten to mention, however, the professor had actually declared TWO of those 1000x1000 arrays. So, 4 MB * 2 = 8 MB. That's quite a lot of data to be cramming into the stack at once, and it overflowed.
It never really goes away. 18 years experience here and it still comes up.
I wrote about it too here on Dev.
The advice you give is solid. I created my impostor flash card based on the same principle!
In software development, I think this is especially prevalent because most often you are working on things that you have never done before. It's also not like school or taking a test where things have a defined right answer. When there are so many options and technologies out there, figuring out the best way to do something is almost impossible.
For me it was learning to accept that some of my decisions will be sub-optimal, and that's okay. Coding experience doesn't give you the right answer, it just gives you a less bad answer quicker.
I find that imposter syndrome always kicks when I write my blog posts despite having done my research and playing around with stuff related to the article.
Since when I was young, I was really bad in English to the point that I learnt to read at age of 7, thus writing was a challenge and frustration to me.
Luckily I just learnt from the school of hard knocks. By learning to get better as I went along to get use to being in uncomfortable situations by doing things that I dreaded so to challenge myself to do slightly better with each iteration instead of striving for perfection.