Perfectionism – one of the biggest productivity killers in the eng industry - 8 minutes read
Perfectionism is one of these things that hurt us without even realizing it. We may think it’s great to put so much effort into ensuring the result is “perfect”, but at the end of the day, we never finish it and it becomes an endless “work in progress”, which is a big problem.
This article is done in collaboration with Jordan Cutler, Senior Software Engineer at Pinterest and the author of the newsletter High Growth Engineer.
We both made a lot of mistakes thinking that perfecting is the way to go and after some time we realized that progress is so much better!
And today, we are sharing our stories with you! Let’s start with Jordan’s first.
Early in my career, I spent a lot of time writing code. In fact, I shipped over 1200 pull requests (PRs) in my first 3 years as an engineer, averaging ~1-2 PRs per day.
While the code velocity was high, I was focusing on the wrong things. Most of the PRs were dedicated to “perfecting” our codebase.
At the time, I thought I was doing great things. Who wouldn’t love the code to be spruced up? But looking back, I realized how I could have spent my time so much better.
Instead of perfecting code, often code that hadn’t been touched in years and didn’t need to be touched, I could have been adding value for the team.
Things like:
Reducing the plate of my teammates, rather than adding to it with more code reviews to give themShipping the current feature faster and getting ahead on the next oneAsking my manager how I can help them moreSo, even though I shipped all those PRs early in my career, today I realize how meaningless it is.
If I had spent less time perfecting code, I could have shipped 50% fewer PRs and added 2x more value to the team.
Today, I’m lucky if I ship more than 3 PRs in a week. That’s because my focus is on working on the right things, which often means helping the team, creating partnerships, writing proposals, and scaling myself through docs. When I do ship code, it’s with clear intent to move value for the team or business.
Outside of this example, I avoid perfectionism by doing 3 things:
Writing down my priorities at the start of the week, which helps me know what’s most important to accomplish. Hint: It’s usually not perfecting something.Shipping the smallest unit of value I can, either to internal or external customers. For example, shipping an 80% working prototype behind a feature flag to get early feedback internally.Seeking early feedback. I set up 4-hour focus time blocks at the start of my day and make as much progress as I can. Then, I ask myself, “Based on what I accomplished, is there anything I should share or request feedback on?” I do this all the time with technical docs. I ask my team, “Am I going in a completely wrong direction here, or should I continue on this path?” Sometimes, I find there’s a simpler solution than my proposal, it’s already explored, or not valuable. That saves me hours of time from perfecting the doc.Less perfection. More progress.
Perfectionism has been a problem for me starting from an early age. I’ve always wanted to make things the best quality possible, especially things that matter a lot to me.
It took a long time for me to realize it’s actually counter-productive. Here are the most prominent things that I wanted to perfect as a Software Engineer and a manager:
I wanted to learn “perfectly” from tutorials
In my early days as a self-taught engineer, I did SO much learning from tutorials.
Looking back at that time, I could see how I could have progressed much faster if I hadn’t wanted to always make sure that I finished every single tutorial 100%, plus with the mindset of “I shouldn’t miss any second of it”.
What I know now, the best way to learn from tutorials is to get what you need and apply that to your own project. Building your own project is the best way to learn. You can find more details about this here: Become a better engineer by working on side projects (paid article).
I wanted to design “perfect” things
In one of my student jobs as a Software Engineer, I was also doing a lot of design related things like designing banners, websites also doing some graphic design. I saw a repeating pattern when designing.
That pattern was that I would create a draft quite quickly, but then spend the 2-4x amount of time applying finishing touches. Which was quite counter-productive and also stressful for me.
I spent so much time trying to make sure it’s “pixel perfect”: right colors, right fonts, right spacing, etc. I would make so much more progress if I would just be fine with it. The funny thing is that the end result wasn’t much better than the first draft (maybe a tad more).
I wanted to create “perfect” code
Especially early on in my career as a Software Engineer, I would feel that I need to write perfect code, before showing it to others.
I spent so much time refactoring functions, renaming variables, rethinking the approach and overall looking for ways to optimize it. It was my impostor syndrome telling me that I was not good enough to do this.
That got me to the place where my overall progression was hurting and similar with designing → it caused additional stress to me.
I would be making SO much more progress if I would be focusing on good enough code and getting feedback early on! So much wasted time trying to “perfect”.
As a manager, I wanted to wait for “perfect” timings and make “perfect” decisions
I thought that my timing to give feedback needed to be perfect. Well, the outcome of waiting was that things got a lot worse.
I said to myself: “Maybe things will get better if I wait for a bit more time”. Well, the reality was that things didn’t. And my waiting for perfect timing made it a LOT worse.
Similar to making decisions. “They need to be perfect”, I said to myself. And that got me to the place, where I didn’t make the decisions fast enough, which actually blocked my team from progressing.
And I realized over time, that not all the decisions will be the absolute right ones, but it’s much better to make a decision and reverse it later if needed, instead of not making it at all.
Here are my top 3 learnings:
Focusing on progression instead of perfecting will make you SO much more productive + it’s so much better for your mental health.Perfect moments do not exist and waiting for them will just cause a lot more issues. Doing things now or as soon as you can is the way to go when you are dealing with important things.Whenever I feel like I am trying to “perfect”, I think of this: 100% does not exist and 95% is good enough in the majority of the cases. That shifts my mind into making progress instead of perfecting.Thanks to Jordan for sharing his story and his insights on this very important topic. Make sure to check him out on LinkedIn and also check out his newsletter!
Let’s end this article with this important message:
There is no such thing as “perfection” and the faster we realize it, the better our progress is going to be and the more things we’ll get done!We are not over yet!
After months of testing and especially trying so many different T-shirts, the store is now officially available to all of you!
You can get the same Progress over Perfection T-shirt that both me and Jordan are wearing. Or others available. I wear these shirts proudly almost every day. I especially love to wear them when doing exercise!
I want to check it out!
Paid subscribers, you are getting 20% off on everything in the store!
You can find the discount code here: 💰 Special Deals for paid subscribers
Liked this article? Make sure to 💙 click the like button.
Feedback or addition? Make sure to 💬 comment.
Know someone that would find this helpful? Make sure to 🔁 share this post.
Join the Cohort course Senior Engineer to Lead: Grow and thrive in the role here.Book a Coaching and Mentoring or Consulting and Advising call with me here.Interested in sponsoring this newsletter? Check the sponsorship options here.You can find me on LinkedIn or Twitter.
If you wish to make a request on particular topic you would like to read, you can send me an email to info.com.
This newsletter is funded by paid subscriptions from readers like yourself.
If you aren’t already, consider becoming a paid subscriber to receive the full experience!
Check the benefits of the paid plan
You are more than welcome to find whatever interests you here and try it out in your particular case. Let me know how it went! Topics are normally about all things engineering related, leadership, management, developing scalable products, building teams etc.
Source: Eng-leadership.com
Powered by NewsAPI.org