On impostor syndrome

I’m feeling pretty good about my skills lately. Maybe I’m realizing I didn’t have quite so much “catching up” to do as I thought. The theory stuff I’m learning in my classes is useful, but not as complicated as it looks.

(Well, most of it. Some of it is. Though I’m starting to pick up on the idea that if I don’t understand a recursive algorithm, it probably wasn’t efficient anyway–and if I don’t understand it [I’m usually good at this sort of thing] then it better be a darn good optimization hack for me to use such an unreadable piece of code. My standards may change as I’m learning Clojure, though.)

I dislike the whole “impostor syndrome” craze. If you read tech articles on Medium and Quora and so on, everyone and their dog has impostor syndrome. Saying you have impostor syndrome is like this big, socially-acceptable, self-contradictory humble-brag: “I’m actually a genius but I don’t think I am.”

It makes about as much sense as the girls who listen to “You Don’t Know You’re Beautiful” on repeat:

“You don’t know you’re beautiful, oh oh, / That’s what makes you beautiful”

and then say, “Omigosh, 1D just totally gets me.

First off, the point is that you don’t know, so if you acknowledge the song as something you relate to then you’re canceling out your own point. Second, this song is about how the singer finds it super attractive that you have no self-esteem. Catchy.

When you’re a beginner, of course you’re looking around and thinking, “Wow, everyone else knows so much more than me.” Because they do, duh, you’re a beginner. And you’re going to be a beginner for at least a few months. If you start calling your thoughts “impostor syndrome” at this point, you’re deluding yourself. On the other hand, you need to trust your ability to learn. Just don’t underestimate that it’s going to take some work and you’re not there already.

Impostor syndrome is when you’ve still got this mindset, but you’ve also got concrete evidence that your mindset is flawed, which you then brush off by thinking that everyone else is some kind of idiot you’ve fooled into believing you have way more technical knowledge than you do.

Listen, you have respect for the other techies around you, right? Anyone you talk to on forums, StackOverflow, GitHub, your school/bootcamp/job. (If you’re roughing it alone, try to connect with someone. It helps.) If any of them are actually worthy of that respect, they can smell technical BS from a mile off. That’s a skill we all develop. If they were going to suddenly find out you’re not as skilled as they thought you were, it’d have happened a long time ago.

It’s hard to feel like you’re making progress when you can’t measure your own skill. I get it. Nobody in tech knows how good they are at what they do; we can estimate, or take the judgment of those around us. And the problem with the latter is that most everyone else is as insecure as you are, and some of them will lowball you to feel better about their own skills, while others will try to flatter you so you’ll like them.

Listen. There’s a solution to this. Not a perfect one, but one all the same.

You have to build stuff. You have to solve problems. You have to read code. You have to write code.

Empirical evidence of your own skill grounds you. It puts a lower boundary on where you are. It gives other people something tangible to assess you on. Working on something real will tell you very quickly whether you’re out of your depth or just underestimating yourself.

Here’s how you tell the difference: If you’re super confused and have to look everything up before you can do any real work, you’re just underestimating yourself. If you’re actually out of your depth, you don’t even know where to start. Misleading, I know.

The problem with the advice “just build stuff!” is that it’s really freaking hard to start. You don’t know what to make. The things you want to make are complicated. You don’t have the syntax memorized. You don’t know how to split things up sensibly into different methods or files. That’s a big problem with programmers who are just past the point of doing lots of tutorials. You don’t know where to start, and it seems like you should go back to the tutorials and learn more, because that’s usually how it works. But in this case, it’s doubly misleading. The bigness of open-source and the complexity of many of its projects are also terribly confusing.

In practice, impostor syndrome is a lack of information about your own ability. So do the scientific thing and experiment. Run some tests. And remember that, with more practice, you can change the results.

Related sidenote

Listen, I’ve been thinking about writing some more how-tos. Programming how-tos, not the Linux ones from before.

And I wonder if I might also accept some… I guess students? Mentees? Just informally. If you try to do one of my programming tutorials and you post your code on GitHub, and then drop a line here, I could look at it and help you get unstuck or suggest improvements or that kind of thing.

I can’t promise a specific response time or anything that formal. And I know some of you don’t really qualify to be my students, because you’re legitimately better programmers than I am. But otherwise, I might help you learn something new, and/or feel a little more confident about your skills.

Is that something you might be interested in?



3 thoughts on “On impostor syndrome

  1. Interesting. I disagree with a chunk of your reasoning, but agree with your conclusion.

    This kind of thing isn’t just about having no confidence in your own abilities as they are. Most people I’ve spoken to who feel imposter-syndrome-type things this actually know their own abilities pretty well – they can reel off long lists of things they do know and things they still want to learn.

    The shortfall is their assessment of other people’s skill. I think programming is particularly susceptible to this, because looking at code in a language you don’t know can be about as comprehensible as, well, reading a language you don’t know.

    (Well, not quite, a lot of control constructions and so on are common to many languages, but still. I know I’ve looked at Perl programs and thought “that’s not code, that’s a cartoon character swearing”.)

    So people look at the programmers around them, in school or at work or whatever, and think, gosh, I’ll never know all that stuff. And they haven’t even see me try to do it! They don’t realise I can’t, and it looks like everyone else knows how to do it, and *runs screaming off to the mountains of imposter syndrome.*

    No matter how much respect you have for the people around you, if you’ve never tried to do something in front of them that they can do in their sleep, why should they assume you can’t do it? Except that everyone should try to remember they were beginners, once – but I think a lot of experienced people have trouble with that.

    But in the end, the solution is the same. Build stuff. Learn how to do the stuff you think looks hard, and realise how much of it is actually common to things you already know, how much is just memorising syntax. How easy it is for something you don’t know at all to seem insurmountable, and how it isn’t, really. So I guess we do agree 🙂

    As for the tutorials – depends what they were on. Maybe not Python, I think I’m giving that a break except for ongoing projects. But I’d be interested to see/review whatever you came up with.


    • Good point, well put; however, there’s still a sort-of hole. If the people you respect have so little empathy that they’d assume everyone has the same skill set they do, maybe you need to choose a different role model. Or at least if they’re the kind of person who would follow it up with a loud cry of “You don’t know how to insert a table in SQL? For Shame!”*

      I mean, I’ve been guilty of this. For instance, in the past I’ve assumed people know basic web design (because it’s such a common programmer’s gateway drug, and it’s also something many non-programmers can do) and command line commands (because they’re so useful, and also since I tend not to use IDEs, and without one you really do need the console to program).

      But the discovery of one’s own bias when it comes to this sort of thing should not warrant accusations of fraud; the correct response is, “Really? Let me show you how to do this thing I find so valuable that I can’t imagine working without it.” Those people are the ones who are worthy of your respect. But I suppose if you’re already in an insecure panic, this kind of rational response isn’t what you’re expecting from your peers.

      As for the howtos, I’m thinking both theory and the kind of practical stuff that usually you have to kind of muddle through until you pick it up by reading other people’s code. Python already has loads of tutorials on general stuff, but mostly the people who teach theory seem really intimidating, and I like to think I am not.

      Also, you’re one of the people I was referring to as not qualifying… I probably know some stuff you don’t, and vice versa, but I haven’t settled on exactly what I’m going to write about and I can’t imagine you needing about half of what I was planning.

      Like, I saw this guy on StackOverflow who was really confused about how def: worked in Python, and I realized maybe splitting up code into methods is something that doesn’t come intuitively to some people, and might be something I should address, royal benevolent teacher-person that I am. 😉

      WordPress’s PHP monster must have swallowed your faux-tags… they’re not showing up behind the scenes for me either. *shrug*

      *note: this is not something “everyone” knows how to do. It’s something database designers probably know how to do, /if/ they’re using SQL and not one of the increasingly many tools out there which are developed because SQL is ancient and not the friendliest. If you actually hear someone say something like this, they’re just a jerk.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s