The Dunning–Kruger effect is a cognitive bias in which unskilled individuals suffer from illusory superiority, mistakenly rating their ability much higher than average. This bias is attributed to a metacognitive inability of the unskilled to recognize their mistakes.
Yesterday I wrote an article in which I claimed I was a great engineer in the title. I wasn’t expecting it to become quite as big as it did, especially after it was submitted to Hacker News at 3am, hardly prime news hour.
The actual point of the article was that technical interviews based on puzzles suck, but with a title like “Facebook Lost a Great Engineer”, I’m not entirely surprised to see people take issue with my classification of myself.
I’m not really surprised at the extent of that response, either, but it is disappointing. I avoided the comments on Hacker News, which tend to attack the simplest parts of an article, to avoid getting into stupid arguments. Less avoidable, however, was the few people who sent me tweets and emails, the emails, understandably, being nastier than what I’d expect to find in any public discussion forum.
This article isn’t a follow-up to the prior article, or any sort of defense of it. I just take issue with the tech industry’s expectation of extreme modesty.
It’s easy to understand why so many in tech have imposter syndrome.
Like many others, I was remarkably deficient in confidence in high school. It would be hard to imagine calling myself a good developer, but it would also be hard to imagine a whole host of things some people take for granted.
In my sophomore year, I suggested to a girl that maybe if neither of us had a date to a dance, we could go together. That was the closest I’d ever gotten to asking someone out. (And, despite my crush on her, she got a date to the dance.)
I even went to prom with a group of friends (and for that matter, prom was the only dance to which I’d ever gone), and of course I didn’t dance.
This extended to my professional life. When I got an internship my junior year of high school, I was fairly aware of my inferiority to the other developers there and, despite my ideas, I pretty much just implemented what was asked of me exactly.
I was somewhat aware of the things at which I seemed to be good. People would always ask me for computer advice, and I’d made some pretty cool apps which many people used. I seemed to be good at public speaking - I’d run for the vice-president of my school somewhat ironically, and since I’d done no other promotion and no one knew me, the fact that I won seemed to be entirely because of my speech.
The impostor syndrome is a psychological phenomenon in which people are unable to internalize their accomplishments. Despite external evidence of their competence, those with the syndrome remain convinced that they are frauds and do not deserve the success they have achieved.
Near the time I was set to graduate, I had finally become somewhat confident in my code. Not only had I passed the AP CS test (not exactly a measure of excellent programming, sure, but it was something objective), but I’d also helped several others who took the test to do well. Plus, I’d landed an internship doing machine learning at Microsoft Research for that summer.
At this point, my computer science teacher decided to send out an email to me, and several of my teachers, saying that I’d gotten far too arrogant. (I think this was specifically in response to turning in an assignment based on a re-compiled version of Java I’d made in which Shiny was a valid member of java.awt.color.)
This caused me to once again return to my previous mode of thinking. I wasn’t actually a good programmer. The good programmers I’d heard of were making things like Facebook, I could never do something that amazing. I didn’t even really understand computer science. Asymmetric encryption? Machine learning? There were so many fields I’d never understand.
At some point after high school, I began to realize I was really quite an okay programmer, and that believing otherwise was actually fairly harmful. Much like the girl I had tried to ask to a dance, success was not attracted to people who presented themselves to be not really that great.
I’m not really that great at many things I do. Dancing. Creating music. Drumming and singing. Longboarding. I’m quite bad at many of these things, really, and I’m happy to admit it. I am quite good at programming.
When I graduated high school, I was an okay programmer. Last year, I was a good programmer. After a lot of work, I’m a pretty good programmer, or at least pretty close to it. I don’t think I’ll ever become an amazing programmer or any other superlative; I’m not that talented. This classification is somewhat relative, but I apply it to myself in the same way I apply it to others.
While my computer science teacher’s email had been devastating to me, at least it was a somewhat more honest assessment than the response I’ve been receiving from the programming community. Not a single person so far has given any evidence that they’ve looked at anything I’ve created in the past.
Being unable to make an honest assessment of yourself is remarkably damaging to our community. The most obviously lacking characteristics of many programmers in the industry are an ability to estimate time required, and to know when to defer to someone else, both of which rely on knowing your skills.
How many times have you heard this conversation?
Oh, you’re an awesome programmer!
Thanks, but I’m not really very good.
I’ve had this conversation with others who are absolutely great programmers since yesterday. Why is this okay? Why aren’t we allowed to be proud of our achievements.
I called myself a great programmer, because I would call anyone else who is able to accomplish this a great programmer. I know many people I would consider better programmers than me. It’s no mark of honor, just a way of quickly representing skills.
But beyond this all, it’s disappointing to me that, even with all the complaints of pop-culture putting down programmers unfairly, we’re so willing to do it to ourselves, and with such hate.
I’m confident, after having worked with so many programmers, in my ability to estimate my own skills. Newer members of our community won’t have that benefit. Reasonable, based negativity is excellent. Reinforcing imposter syndrome is not okay.
Vehement criticism, without support or real reason, is a massive drain on our industry, and the individuals involved in this have no respect from me. And I can promise this, bullies will never have a place in any company I’m involved in.