Hacker News new | ask | show | jobs
Impostor Syndrome in Programming (medium.com)
55 points by Edward9 2224 days ago
13 comments

I get an imposter feeling not because I feel I know nothing but because I feel like the tech world is closing its gates to me in particular.

When I am told by my software developer friends how quickly I've learned in the last year and when I get lots of users using my projects that reinforces the idea that I would be a great developer. But then when I apply for jobs and just keep getting rejection after rejection, it wears me down and makes me feel like an imposter who isn't cool enough to join the club you know?

Lots of users using your projects, and this is a little perplexing but true, is not the most indicative thing with regards to being a good or great software developer in industry. One of the unfortunate realities of our industry is that we have allowed "developers" to, not always but quite often, be reduced to checkbox-checking, acceptance-criteria-filling bolt turners. It is Taylorism[0] writ large, and while scientific management has some undeniable benefits it is all too easy to turn craftspeople into...well, like I said, bolt turners.

Being good at shipping products doesn't make you a good bolt turner. It's something to be proud of, to be sure. But it's not something that translates into interview success at most places.

I would advise some mock interviews, etc. with those friends (assuming you have friends who have the insight of a hiring manager in whatever you're looking at) and see where you fall.

[0] - https://en.wikipedia.org/wiki/Scientific_management

I agree and disagree with this. I agree that in many environments their definition of a "great software developer" is a bolt turner.

However I think that in many other environments, especially early stage, a "great software developer" is someone that makes sure the user's problems are met and that is definitely measured by usage.

These places certainly still exist! I'm fortunate to work in one. But they're also more rare and the requirements to land those jobs tend to be more stringent. The OP sounds like a relatively junior developer, albeit a highly motivated one; that's often a tough fit for such roles.
Just keep at it. If you really learn quickly, then in a year or two you'll know enough for that to make any difference to a potential employer. Just continue what you're doing, write code, build projects, look out for opportunities to build your personal brand, but above all else, continue to learn. You'll see that, as the saying (Japanese, I think) goes, "even the top has a top" - what you consider a large amount of knowledge today will seem like a drop in a bucket in a year, not to mention in two. By 2025 you'll be, for better or worse, spammed by recruiters on Linkedin just like the rest of us.

You can expand your knowledge and hone your skills practically without limits, and there's no reason to stop just because you're out of school/landed a job. Most good developers never stop, and have been doing this for their whole careers, some for decades - while you've been at it for a year. I don't want to discourage you - it's a good start, but it's just a start.

My problem is that I feel what I need the most now is real world real job experience working with a team of developers. One year of actual software developer experience working in a team will do me more good in improving my skills than 3 years working on side projects.

I feel like I've done enough side projects to prove I'm at least not a complete hopeless case.

>But then when I apply for jobs and just keep getting rejection after rejection, it wears me down and makes me feel like an imposter who isn't cool enough to join the club you know?

I've concluded that we aren't going to fix this. When even PhD's appear to have this same experience, you know it isn't a matter of education. For a long time I thought perhaps licensing / certification like other professions including engineering, but there are too many economic forces against that happening.

So, we're going to continue to bifurcate into companies that have the means to interview, hire, and manage software development and those that are essentially a cargo cult version of those activities. You have to basically accept that a large segment of the market for tech workers is going to belittle you, mistreat you, and it's up to you to either jump through their hoops or work really hard to find places that aren't like that.

Understanding tech but also how to build things people want, and get them to use them, is more valuable (higher status, better pay, and especially a better pay ceiling) than knowing how to write code at most companies that aren't FAANG and such, or finance. So, most of the software world. Maybe look at product management?
That's not Imposter Syndrome that's lack of confidence.
Sometimes I wonder how much of imposter syndrome comes from “knowing” something but being unable to clearly articulate what you know and the underlying information to others.

Like the old exercise where you have to write instructions for making PB&J. I know how to make a peanut butter and jelly sandwich but when I have to explain it, clearly, and in minute detail I’m forced to acknowledge the gaps - the steps my brain just skips over and takes as a given. But PB&J is easy so even when I might struggle with articulating the mechanics of it to someone else I don’t doubt my ability. That changes quickly though as complexity increases.

I’ve baked a lot of bread and I’m intimately familiar with how my bread dough rises differently depending on lighting, the temperature of my house, and even the material I cover the dough with while it proofs. But a lot of that happens without too much active thought - I just kind of know how to adjust my mental math for these factors. I’m not sure I could clearly and succinctly articulate this knowledge to someone else. And even now I’m having imposter syndrome wondering if someone here will tell me it’s clear I have no idea how yeast actually works... and maybe I don’t!

Like the old exercise where you have to write instructions for making PB&J. I know how to make a peanut butter and jelly sandwich but when I have to explain it, clearly, and in minute detail I’m forced to acknowledge the gaps - the steps my brain just skips over and takes as a given. But PB&J is easy so even when I might struggle with articulating the mechanics of it to someone else I don’t doubt my ability. That changes quickly though as complexity increases.

That's fundamentally a trap question. It's like when you keep asking "why?" until the answerer runs out of explanations because we've inevitably reduced things to quantum mechanics. I think the exercise is a useful demonstration of why the code you write doesn't necessarily do what you think you wrote, but as an exercise (or, god forbid, an interview question) I don't think it's that useful.

These days, my answer (after the usual contextual questions if this were a PM/dev interview) would be "I would tape a GoPro to my head and record a video of me making PB&J. If there's any ambiguity, I think 99% of people would be able to fill in the blanks."

Some information such as the making of a sandwich, is not conductive to be conveyed through text. So the correct answer for me would be, "I would use a different medium to convey the info, like video."
I think actually teaching people is a great way of getting mastery at something. If you teach people and they get good results you can be confidant you know enough about the subject.
Yes! I’ve heard of the “plus-minus-equal” learning concept. You need someone with more knowledge to learn from (your plus), someone at the same knowledge to work through problems with together (your equal), and then someone to teach (your minus) so that you can be sure you’ve truly mastered the material.
I agree, but it's something that under-emphasized in education.
I see the opposite almost exclusively... people that can talk a great game but can't actually write a line of code.
In my experience these people do not suffer from impostor syndrome. Although I have to admit that it could be a coping mechanism, it sounds more like Dunning-Kruger. I guess there are different symptoms of impostor syndrome. For me the comment of OP definitely resonated a lot. Not being able to express the things you know and don't know clearly blurs the lines for me to accurately value the knowledge I actually do possess or have mastered. :-)
That's fair. I guess for me OP's description of imposter syndrome seems more like Generalized Anxiety Disorder.
I feel this pretty regularly, and I've settled on an approach where I feel like I can be helpful without too much risk of giving bad information. I bucket the statements I make into three categories:

1. 95%+ confidence, usually meaning I've done it before, or I've seen it with my own eyes, or I am experienced in this space to the level of depth that matters for this conversation. I won't qualify my level of confidence. If I'm wrong, then I'll investigate and confirm, admit that I was wrong, and we all learn something new.

2. 80% confidence, I'll say "I think it's ____, but you should verify."

3. 60% or lower confidence, I just leave it at "I don't know, let me look it up".

I think the other key is not to try to go into more depth than you know. For the example in the blog post, if someone said "So, how does React Native works? How does one write Javascript and then magically turn that into Java and Objective-C?" my response would be "Well, not quite, it adapts the native OS API's so that your JavaScript can manipulate native UI components." If they ask further, I would say "Honestly I haven't dug much further because I never needed it."

I don't know if I should be worried or not because I've never felt like an "impostor": I'm sure I know what I'm doing, because I spent a lot of time making sure I understand everything from the ground up, and working form first-principles to more complicated topics. If it's on a computer, I can figure out how it works because I know how computers work. What I do fear is that everybody else is judging me when I don't know the answer immediately, without spending any time researching, to every question. If I'm faced with something new - let's say, React, which I don't know anything about - my inclination is to start reading about it. But I find myself surrounded be people who imply that it should take about a half hour to read everything a programmer should ever need to read about React (or Swift, or Spark, or Kafka, or Gradle, or whatever the hell else people have decided is the flavor of the day today).
I don't know if I should be worried or not because I've never felt like an "impostor"

You don't need to be worried.

What I do fear is that everybody else is judging me when I don't know the answer immediately, without spending any time researching, to every question.

I think there's little to fear here. Most people's judgement of you doesn't matter that much. Hopefully you have a good enough relationship with the rest that you can communicate realistic expectations with them.

But I find myself surrounded be people who imply that it should take about a half hour to read everything...

I think this comes down to communication as well. Are they implying this? Are you inferring this? And, on the other hand, do these people really know how long it should take? In my experience, they often don't.

> Are they implying this? Are you inferring this?

It's usually more along the lines of anxious, concerned looks coupled with phrases like, "how long will it take you to learn it", or "well, what part don't you understand", or "Have you tried asking Bob, he knows that".

I’ve been programming since I was 12. I saw “real programmers” and was convinced their feats were nothing short of magic.

And it stuck with me. I worked for a startup that got acquired by Atlassian last week, wrote their Jira Server integration which helped land Uber as a customer. But I still wasn’t a “real programmer”.

This sounds stupid, but I never became a “real programmer” in my head until I developed a Minecraft mod. I got into programming because of Minecraft and I was always amazed by the modding wizards. I tried and failed when I was 13-15 to make mods.

I recently took a crack at it 6 years later and it came easily. I realized that the modders weren’t wizards because I could do it now too.

I beat imposter syndrome by going back and doing the things I couldn’t when I started programming. Makes you realize how far you’ve come and less like a fraud.

What really helped me was meeting with other people in similar field. Looked at their work and was surprised that they weren't as good as I thought or even people sitting at higher position.

On the other hand, I got to know that I'm not as bad as I thought. Instead I'm good. But, still even after all this. There are times when the Imposter Syndrome kicks in.

The opening description resonates with me. I would say I'm pretty experienced in what I do, but do I know the detail of being accurate with everything? No. This is why I don't blog nearly enough because it takes a lot more time explaining details that I filter out in my day-to-day work.

Experience can come from knowing enough concepts to make stuff work, but also knowing where to look to fill in the gaps should you need to do. It's also knowing when to fill in those gaps, and when to leave them because it's not important right now.

I would say imposter syndrome is the anxious feel not knowing all the gaps and questioning yourself. Some people are impacted by this, others are not.

If you adopt a growth mindset, you see these gaps as advances in your craft, and not a measurement of your inexperience.

The real question to ask is what about that trigger is causing your to feel uneasy and become anxious. This is usually a more complex question to answer. If you can get to a point of exploring that question objectively and without judgment of yourself, you can path the way to overcoming imposter syndrome.

I felt this. Pair programming can be taxing in that you don't know if you come across to your partner as knowledgeable, or, as my friend recently put it, "a wind bag." My main weapon against impostor syndrome is to turn everything into a learning experience. The way I deal with it is to explain my thought process as deeply as possible, laying out all my cards on the table. This way, the other person/people can help me tweak my understanding as I speak, so I'll emerge from the experience better equipped to speak about the topic at hand. I feel that impostor syndrome will never go away, and in some ways this is a blessing because with it comes an everlasting desire to keep learning and stay humble.
Why is impostor syndrome seemingly more common- or discussed more frequently- in software engineering compared to other STEM disciplines and other white collar professions in general?
While imposter syndrome might be uncomfortable, I think its generally trait that helps someone become a good developer. By realizing you don't know everything you are more inclined to continually improve your knowledge.

I think teaching and writing are also good ways of getting over it. Once you explain a concept to people you will know you don't have gaps in your knowledge to arrive at a working understanding.

I think of it as a feeling everyone feels at some point if they care about doing a good job. If you never feel it, you are probably playing it too safe and aren't growing as fast as you could be as a result.

How do you know whether you need to fix Impostor Syndrome or Dunning-Kruger?
1/4 glib, 3/4 honest prediction: if you are asking the question about yourself, it's probably Impostor Syndrome at work.
Equally glib/honest response: Or Dunning-Kruger, because you are attempting to diagnose cognitive/psychological biases without formal training.
My answer to that would be down to whether you're judging yourself (imposter syndrome and self worth and competency) or judging the amount you don't know (objective assessment of the field and what's left to learn).

For those not familiar with Dunning-Kruger, it's the cognitive bias where people overestimate their ability when they have little knowledge. But on the flip side, the more knowledge you have, you can end up underestimating your ability. Which, in this case, can look like imposter syndrome.

If you ever start to feel comfortable, to feel like you are a genius and you have a handle on everything that's when you need to worry. Imposter syndrome will drive you motivate you and spur you to continue to improve. However Dunning-Kruger will turn you into an intolerable a-hole that everyone wants to avoid and will ruin things.

To paraphrase Paul Graham, great hackers don't seem to wonder why they are so smart, but rather wonder why everyone else seems so incompetent.

The trick is just to not tie, your identity, who you are, your sense of self worth to how good you are as a programmer. As long as you can avoid that embrace the imposter syndrome and let it drive you to improve, for knowledge is like compound interest, a little bit more now will result in a substantial return on investment in the future.

I don't agree with this view because it assumes that all developers receive more positive feedback and attention than they deserve.

If nobody is giving someone good feedback about their work, then it's impossible for them to feel like an impostor. There are many great developers out there who rarely get positive feedback about their work and they have no idea what people are talking about when they mention 'impostor syndrome'.

You'd be surprised by how many people fall through the cracks of the system; these people will never understand this idea of 'impostor syndrome'. I've been coding for over 15 years, both in my spare time and full time job. I've worked 7 days a week on open source. I've build several significant, scalable systems. In addition to my open source side projects, I've worked for at least a dozen different companies of all sizes in different industries and different countries.

The main theme of my career has been one of feeling constantly undervalued. I'm confident today precisely because I've been constantly undervalued in the past and this adverse environment has been the main driver for me to improve.

Recently, I started getting excellent feedback for my work, but it's not because I suddenly became a better developer, it's just that I changed companies too often to get noticed before and also I got very lucky that the people I work with now are smart enough to notice and have enough money in their pockets such that their opinions are taken seriously.

On first reading, this all makes sense. On rereading it and applying to myself, I don't know what to think. I do always feel comfortable even in new jobs/roles and think everything will work out, not because I think I'm so great but because historically it always has. I experienced imposter syndrome for about 1 week once, can't even recall when or where as it wasn't a significant event--it passed. Beginning to suspect that I'm a bit of a what's the correct term? narcissist, sociopath? Basically I trust my own self assessment strongly enough not to be brought down by external factors. Maybe I have my own mental "Trello board" (as mentioned in another comment) in my head of past accomplishments. I probably do have a bit of Dunning-Kruger which I think is a good thing--if you knew all the things you didn't know, you'd be paralyzed from doing. I believe my success is from finding hacky/pragmatic ways of getting things done, resourcefulness, not building the perfect thing.

Don't know if this will be of any help to anyone, but I thought I'd share a different perspective.

The fact that there's a medium paywall preventing from me reading this article serves as "imposter syndrome" in itself.