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:
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?
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.
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.
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.