Imposter syndrome ain't always on you
Tags: impostersyndrome, code, codequality
Published: 2021-03-12 19:11:00

I stared at my IDE, my brain contorting in more painful poses than I imagine I would if I did yoga. I'd been in front end for years, and I had never seen such a convoluted means to create a simple functional React component.

I swapped my window over to Slack, and made a group DM with the other three people on the team that I'd seen had touched that particular file. "Hey, why are our components like.. three levels deep?" I'm serious - it looked like to create a very simple container component, a series of template components had been made over a function that then called the actual design library itself.

"I have no idea," one coworker replied. "Honestly, if you don't want it written that way, please fix it."

We went back-and-forth for a few minutes, and I finally vented out, "I cannot stand code bases like this. I just don't see why this was written so over-the-top convoluted. It's beautiful, but how are we supposed to maintain this?"

"I'm so glad you said that," another coworker replied. "Seriously. Seeing this code made me feel like I didn't deserve to be a front-end engineer here."

My jaw dropped. A lightbulb went off somewhere in the goopy carbonara my brain had become over the last some-odd hours of work.

## It's not just about you
Imposter syndrome isn't just because of some flaw in our brain chemistry. It's not just from how we speak to each other as engineers, or because we spend five hours debugging broken code that turned out to have a variable mistyped. It's because we lead ourselves to believe that extremely complex code somehow trumps the more simplistic code that gets the same job done.

I've been reading and even tweeting on imposter syndrome for years - in particular, relating my experiences as a femme-presenting human in tech for the last 12 years. For an embarrassing large amount of that (at least 11 years), I thought myself somehow unworthy for my pay grade, title, and position at a big company. Sure, the other factors certainly don't help - my horrid, autism-driven anxiety, the way that past managers or coworkers have treated me, and of course, the society that we live in. But it just hadn't hit me that complex code isn't just a pain to maintain: it hits you (general you) right in the metaphorical Achille's.

## We gotta fix this

As with everything discussing mental health or our industry's inherent imposter syndrome, we have to work on ourselves to encourage ourselves to not just do better, but to also "fix" this. Because, look at it like this: imposter syndrome isn't about our pride or ego as developers. It's a very real issue that drives people from our field, and that inflicts extremely real harm on our community as a whole.

Going back to this specific topic, I don't perceive all complex code negatively. For example, I have no prior knowledge or experience with RxJS, and much of the code I'm now working with uses that. At first, I felt pretty resistant to using it because I didn't see why we wouldn't just use Promises. This would have caused me to simply not learn that library out of my own idiot pride, and that would have been a mistake because I didn't know the reasoning behind RxJS. In addition, having layers over your components - as per my earlier example - isn't always an issue if it means that you're making those components much easier to reuse.

However, complex code leads to a myriad of other issues. If you leave the team, you probably didn't document it well, and now your team's shot in the foot trying to maintain your brain zombie. In the case of RxJS or Promises, you likely don't even need an additional library for simple ajax calls. Adding that not only adds weight to your application, but another, additional learning curve for future developers to work on it.

And what about bugs? I'm sure plenty of people on here love video games as much as I do. The more complex your code happens to be, the harder to change it. Video games are notorious for this - adding one inventory slot can go as far as to suddenly make certain characters game-breakingly powerful.

## Nobody should think less of you if you keep it simple

I hate the phrase "Keep it simple, stupid." Okay, really, I just hate the word "stupid." Having worked in UX alongside front-end, there's nothing stupid about simplicity. I find it much easier to over-engineer a solution than to make something shorter and with elegant purpose.

So if your solutions are simple? Great. You're doing the Lord's work, as my mother would have said.