I’m an Impostor

This is the hardest thing I've ever had to write, much less admit to myself. I've written resignation letters from jobs I've loved, I've ended relationships, I've failed at a host of tasks, and let myself down in my life. All of those feelings were very temporary -- they would be heart-breaking temporarily but within months I'd have moved on. There's one feeling, however, that I've not been able to conquer during my professional career: Impostor Syndrome.

I'm an Impostor

"Impostor" is a powerful word but that's how I have felt during all of my career as a professional web developer. I feel like I've learned every day of the ride but I feel like I'm way behind. I feel like people see me as something of an expert where I see myself as an accident waiting to happen. I'm a complete impostor. A fraud.

It's hard to qualify all of that without knowing the road I've traveled to get where I am.

My Road

Dear diary, I won't bore you with my life story so I'll put it in bullet format:

I taught myself HTML/CSS/JS starting at age 14

I went to a technical college to get an Associate's Degree, a further two years for my Bachelor's Degree

I got my first "professional" job before I finished my Bachelor's degree

I started this blog in year two of first job

I was invited to the MooTools project team a year later

I stayed at the first job almost five years

I interviewed at Mozilla during first job, didn't get the role

I left for SitePen, a Dojo Toolkit and prestigious workshop, asking for little money just to get the gig (thank you Rey Bango and Dylan Schiemann)

I left SitePen two years later after Mozilla came calling again (thank you Mike Morgan)

I've been at Mozilla three years now

I've kept this blog up the whole time, obviously

I've keynoted conferences

I've spoken in Brazil, London, Austin, and Paris

At first glance, that's kind of impressive. A midwest American boy gone from nothing to the "big show" of Mozilla, an international organization, in less than a decade. Not to mention SitePen and MooTools -- the top of the JavaScript framework chain. Honestly though...I've never felt like more of an impostor.

Why I've Convinced Myself I'm an Impostor

What's funny is I have a really hard time explaining why I'm an impostor; I just know I am. Whether it's getting any feedback on the code in a pull request, the internal cowardice of asking a colleague for their opinion, or the feeling of being paralyzed when confronted with an intimidating task, there's always the voice in my head telling me "you need to be better than this; no other developer freezes like this."

I've always fought with low self-confidence when it comes to this industry. Always. It started with being self-taught as a high schooler, when you could argue the turbulence of that time in my life was already rough enough, as it is for all teens. My first college programming class was COBOL, a language I likened to ancient hieroglyphics, which I actually struggled with. My first job was at a traditionally design and print company which was just opening a web department, where I met every limitation and tight situation you could imagine: overly demanding customers, short-balled estimates, limited hosting providers, lack of desire by those around me, etc. It was a nightmare, one I'm glad I went through, but I learned way too much in way too short a time.

During that time I started this blog, where even when I wrote about something simple, I was told there was a better way. I was asked to join the MooTools team but was always known as "David in Marketing." I interviewed at Mozilla and didn't get the job. jQuery legend Rey Bango introduced me to Dylan Schiemann, who after a few interviews (and the feeling that I blew them), gave me a job offer. I asked to Skype my would-be manager at SitePen and begged him to tell me and convince me to take the job -- I didn't think I was good enough (thank you Eric Brown).

When I joined SitePen I knew just enough Dojo (and JavaScript, I guess, for that matter) to get me through the interview process. I was immediately thrust into Perforce, advanced Dojo charting, and Dijit UI creation, for which I couldn't have felt more out of my league (I'm thankful for this -- "baptism by fire" is where I thrive.) While feeling like a noob, I started teaching on-site training courses about Dojo, where I felt comfortable but like I didn't have every answer. I worked with other developers who emitted an attitude that I didn't belong. Sometimes asking questions to colleagues or even via an IRC room felt like it was a trade-off between not getting an answer or getting stabbed with the answer.

Mozilla poached me and the fraud feeling doubled. Some of it was because I had failed the first time and some of it was because I wasn't just working with JavaScript experts, I was working with people who created some JavaScript APIs. And for the love of God, my employment and salary needed to be approved by Mozilla CTO Brendan Eich, the man that created the fucking language.

During each new job, I made mistakes. Someone with a level head would forgive that as nerves but I felt that as I leveled up, despite the leap in difficulty, it's somehow my job to make fewer (no) mistakes. That as a "Mozilla level" developer I should never, ever submitted a pull request with so much as a console.log statement.

You know what that led to? More mistakes, more self-pressure, and more feelings that I was an absolute fraud waiting to be flown to Mountain View and burned at the stake. The less I thought of myself and the harder I tried the more I would make the most obvious of mistakes. Every comment on my pull requests felt like a HR performance warning for my file. I once approved a pull request to MDN which inadvertently would lead to a JavaScript-powered DDOS on the site (pst, DO NOT TRIGGER REAL EVENT NAMES WITH JQUERY!); I told my wife what I wanted as my last meal, for I had finally been exposed as the fraud I was.

Three years into my Mozilla career I still struggle with these feelings. Still. It's like a singer going from their local community center to Madison Square Garden, you'd think they'd feel like "You've made it"...but I don't. I still deeply struggle with these feelings that I'm Vincent Kompany a fraud, an impostor.

Why We Feel Like Impostors

Our industry lends itself perfectly to Impostor Syndrome and it's not difficult to explain why:

Our competition isn't the next local guy -- web development is a profession where our colleagues and competition are anyone with a computer and internet connection, all around the world

Every programming task's efficiency is measurable, meaning our colleague can write a routine to complete the same task and it may be 1300% more efficient, making us feel that much worse

APIs change so often that we need to keep a keen eye or fall behind

We're in that "in between stage" where we (1) know how we've bastardized APIs in the past and (2) are trying to perfect new ones, so we need to feature test for everything

We forget we're pushing the limits of the web, its APIs, its browsers, and its devices

Promises and async are just hard

Users can be very dumb but it's still the developer's fault for not making something easy enough

We forget that our job is just a fraction of our lives and there's a real world outside of this hateful, illuminated screen

We probably stay on our computers after the "day job" which leads to intense feelings of being burnt out

We're more than likely on the introverted side, so asking for help or outwardly celebrating a victory is difficult

There are more reasons but these were the most obvious to me. The reality is that our profession tends to encounter on-the-job problems that many other professions simply don't. They just don't.

Why You Aren't an Impostor

That list was some pretty heavy shit and we all know it's probably true, at least most of it. But there is hope. If you're reading this post, you probably aren't an impostor, because...

You believe you might be an impostor -- those who think they're experts are anything but, those who know they aren't experts know how much they don't know

You read blogs -- you get new opinions and see new techniques

You get work -- whether it's a big company job or enough to pay the bills, you can make money punching keys on a computer (have you seen people who aren't tech savvy try to do anything on a computer?)

You know what responsive design is, and why it's important

That's a much shorter list than the impostor list but we can always think of more ways to cut ourselves down than build ourselves up.

How to Not Feel Like an Impostor (Easy Wins)

Feeling like an impostor is a hopeless feeling but one that even the most depressed developer can overcome. Here are a few ways I can snap out of it, at least temporarily:

Look at your (hopefully decent) employment history and know that, on a basic level, you're much more wanted than you're wanted gone

Log onto the IRC channel of a skill you feel comfortable with and answer questions of those asking

Realize that people who consider themselves "experts", and don't go through waves of self doubt, are idiots that are so arrogant to not know what they don't know

Remember the last time a non-developer friend asked you the most basic of computer-related questions

Perform any simple exercise in the JavaScript console

BLOG! The worst thing that can happen is someone corrects you and you learn something out of it

Review your code and find little nits to fix

Shaking off impostor syndrome isn't simple but you can give yourself even the most brief moments of relief by gaining a simple win. What qualifies as a simple win for you will differ but you must find something.

Moving Forward

It's hard to look at my impostor syndrome as the worst thing in the world -- it has spurred me on to do better, work harder, and aim higher. On an emotional and mental level, however, it has been debilitating and difficult to get past. I've gone entire days without writing a meaningful line of code due to my lack of confidence. Other times I take that feeling and crush it by overcoming development obstacles.

I don't know what more to say. I don't even know if this post made sense; it was incredibly hard to write and the worst part is that I don't have an answer for all of you. If you have experience with impostor syndrome and have something to share, please do. We're all in this together.

Also remember that development is only a small percentage of our lives. Find a way to smile. :)