Taro Logo
3

Fighting Perfectionism as a Software Engineer (and getting important stuff done).

Profile picture
Data Engineer at Financial Companya year ago

I’ve come to realize more and more that the greatest thing holding me back by far as a software engineer has been perfectionism. By perfectionism, I mean the mental attitude that says that what I have done isn’t good enough so I need to spend more time on it, or that I’m not ready to do something. This attitude is pretty much the opposite of Meta’s “Move fast and break things”.

Here are a few of the ways that this mindset has hobbled me throughout my career:

  • University (I studied Engineering): thinking I had to read the textbook and do all the assigned questions. My GPA suffered. In reality, my time would have been better spent doing past tests/exams and forming better friendships and study groups with other students to learn what was most valuable to know. I’m speaking from both a GPA-maximizing viewpoint, but also from a long-term viewpoint in the case of better relationships with classmates.
  • Immediate Post-University: Thinking that my coding skills weren’t good enough and that I needed to do a 6-month bootcamp which I did. Hindsight is 20/20, but getting my first job and working from there would probably have been better.
  • First job: Struggling with moving fast. I was at a tiny (<10 people) start-up and they wanted speed. I struggled with the pace they wanted because of things like writing formulaic unit tests that didn’t add much value and needing to constantly walk through my code with a debugger. I do believe that this particular company had unrealistic, unhealthy expectations for a newbie, but I also believe I could have moved faster.
  • General learning: Prioritizing online courses over side projects.
  • Job Hunting: Aiming to get done 150 interview questions before applying, rather than applying and doing mock interviews from the get-go.

I believe perfectionism is particularly harmful in tech compared to other industries since things change so fast.

Maybe this is better answered by a life coach or therapist, but what are some things I can do to limit the pernicious effects of this mindset?

253
3

Discussion

(3 comments)
  • 5
    Profile picture
    Staff SWE at Google, ex-Meta, ex-Amazon
    a year ago

    What do you think will happen if you try something before you’re absolutely ready? Submit a code review with imperfect testing and be asked to correct it?

    I am not a psychologist, but one may be able to help. It could be the case that there is anxiety about being seen as vulnerable, or showing flaws. It may not be safe for some reason, and as such you’d rather “fail” doing “all the right things” than take risks and be judged for your authentic self.

    It may help to enunciate to a manager you want to try to stretch outside of your comfort zone, but want a net. Can you try to push on a non-critical, but greatly impactful project if delivered? Can you timebox a prototype to see if there’s promise, and if not this is useful data to have collected and you won’t be penalized? Something like that, taking measured risks, may be easier.

  • 2
    Profile picture
    Robinhood, Meta, Course Hero, PayPal
    a year ago

    Great question, and I really appreciate you sharing all that context. It seems like you've done the first step (and done it well) in realizing that you should really improve here. The challenge now is to convert this mental clarity into action.

    I have 2 large trains of thought here, so I'll split this up into separate comments.

    Talk To People

    • This is the most impactful line-of-action you can take. Talking to a life coach or therapist can help (I recommend doing that if you have the resources to do that), but I feel like you can achieve a substantial amount of the positive effect talking with peers. Rahul and I made a video about the power of accountability partners to convert your paralysis into action.
    • In this more remote post-pandemic era, it's much easier for you to become your own worst enemy, and I've noticed this a lot with people in tech who tend to be more introverted. When left alone, your mind will often start creating problems for you. Of course, this is only natural (the brain wants to be proactive assessing threats to your well-being), but if you give this behavior too much space, it will become too much.
    • By having someone to talk to, especially a peer who cares about you, you'll have a source reassuring you that you're doing just fine alongside a "distraction" as your brain will now be focused on not letting this person down (best accomplished by actually getting stuff done) instead of inventing imaginary problems.
    • The great part is that Taro Premium gives you access to one of the best tech communities in the world. Respond to people in #member-matching, pair up with people to mock interview, and just build up relationships. Strive to add value to others' lives, and they will strive to do the same for you, which will often result in a recurring 1 on 1 where you can talk about what's top of mind (and listen to them do the same).
  • 5
    Profile picture
    Robinhood, Meta, Course Hero, PayPal
    a year ago

    It's A Leap Of Faith

    • At the end of the day, the best way to overcome this mental block is to just blast your way through it and have the results speak for themselves. And the results are an inevitability if you have the proper system - It's not a question of "if" you will achieve those great results but "when".
    • I don't know if you have watched "Into the Spider-Verse" (if you haven't, I highly recommend it), but the concept is pretty much the same - The difference is that the stakes are far lower than leaping off a building, which makes things a lot easier for you.
    • To make the block easier to run through, it's really important to embrace being a n00b, which I talk more about here. Perfectionism can be stated as, "I need to be super duper amazing before I do anything." The idea is to flip it into, "I know that I suck now, but I'm going to keep getting better and better until I am super duper amazing." In the former, you have set the bar extremely high for yourself from the beginning, so you never start. In the latter, you have set the bar extremely low for yourself (just have to be n00b to start), so it's super easy to begin your journey. And you still have that ambition (as you should) to eventually raise your bar to that super high standard. It's effectively a much healthier version of perfectionism.
    • For a concrete example, let's take interviews. Here's how I would tackle this problem:
      • Start applying to jobs - If they turn you down, figure out why and get better. Polish your resume, build more relationships to get referrals, and build up side projects. There's not much to lose as there's so many companies out there, and you can always apply again. Eventually, you will start getting opportunities.
      • Do interviews with easier places - This will be a mix of mock interviews (the easiest place as it's not even real) and companies that are lower on your wish list. You are probably going to bomb some initially, but that's okay. Maximize the learning from each one, both from your introspection and asking them for feedback (this will fail a lot, but some companies will honor this request). Eventually, you will start doing well in these interviews and be ready for the final step.
      • Do interviews with harder places - This will be FAANG, Big Tech, and hyper-growth startups. Same process applies. You will eventually get that offer if you have the proper humility and self-improvement system (a common failure mode I see is that people get discouraged and wallow in their sadness/interview unfairness).

    Almost all of the best engineers I know (these are the kinds of people who were rockstars everywhere they went) had this deep humility where they were extremely comfortable with sucking at something (and even poking fun at themselves for it), but they were also very hungry for knowledge and had the excellent communication skills to extract a mountain of learning from their mistakes and everyone around them.