The truth about impostor syndrome

Kelly Vaughn on December 28, 2018

"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 goi... [Read Full]
markdown guide
 

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.

 

Create a folder on your computer.

I have a bit of better advice. Create a github profile and a stackoverlow profile. Seeing strangers are using your code and applying your pieces of advice pays back better than emails from mates, IMSO.

 
 

Seeing strangers are using your code [...]

Ah, but your code has to be not completely useless for this to work. Mine, unfortunately, isn't. šŸ˜¬šŸ˜¬

 

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...

  1. 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.

  2. I actually knew more than a college professor teaching C about some topic. (You never allocate a 1000x1000 integer array on the stack, people.)

  3. 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.

 

You never allocate a 1000x1000 integer array on the stack, people.

Hmmm, sounds like the stack is really, really small. Is it so?

 

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.

But, but . . . why are stacks so small? A modern computer has RAM running into GBs, so I'd imagine a stack, being a simple push-pop data structure, should be much larger (I mean, why can't we have a stack that is 200 MB, 400 MB?).

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.

 

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

  1. connecting with others - lots of people can empathize and it helps to talk it out sometimes
  2. finding a mentor - I don't know it all and that's okay
  3. asking for feedback - not for validation, there's a difference (avoid external validation)
  4. give feedback
  5. share ideas
  6. be helpful - when you're busy helping someone work through a design problem, there is no time to worry about whether you belong or not; also it's nice to help someone :D
 

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 compare myself to folks not the omniscient types, but those are capable of developing libraries and frameworks on their own, whereas I'm still struggling with the date/time API. šŸ˜‚šŸ˜‚

 

/shrug

I was brought up to believe that, when setting goals, your reach should always exceed your grasp. =)

 

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

 

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.

 

In software development, I think this is especially prevalent because most often you are working on things that you have never done before.

And as soon as you've got a handle on things, 25 new things are out and everything is writing about them on Dev.to. šŸ˜­šŸ˜­šŸ˜­šŸ˜­

 

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.

 
 

My imposter syndrome is so bad 2 days ago my boss told me if I need to pretend Iā€™m paid half as much as I am in order to bill accurately, so be it (because I usually think no one in their right mind would pay me to spend as much time as I do on things)

 

Others are fine speaking with their peers, but feel they don't have the authority to speak to junior devs.

That's me! šŸ¤Ŗ

code of conduct - report abuse