July 28th, 2024

Perfectionism – one of the biggest productivity killers in the eng industry

Perfectionism hinders productivity in engineering, causing stress and burnout. Engineers advocate for prioritizing progress over perfection, emphasizing that accepting imperfection enhances mental health and efficiency in projects.

Read original articleLink Icon
Perfectionism – one of the biggest productivity killers in the eng industry

Perfectionism is identified as a significant productivity hindrance in the engineering sector, leading to stress and burnout. Engineers Gregor Ojstersek and Jordan Cutler share their experiences, emphasizing that striving for perfection often results in unfinished projects and wasted time. Cutler reflects on his early career, where he prioritized perfecting code over delivering value, realizing that focusing on progress would have been more beneficial. He now emphasizes shipping smaller, functional units and seeking early feedback to enhance productivity. Ojstersek recounts his struggles with perfectionism, noting that his desire for flawless outcomes in learning, design, and coding hindered his progress. He learned that aiming for "good enough" is often more effective and less stressful. Both engineers advocate for prioritizing progress over perfection, suggesting that accepting imperfection can lead to better mental health and productivity. They conclude that recognizing the non-existence of perfection can significantly improve efficiency and output in engineering tasks.

Link Icon 40 comments
By @jsiepkes - 6 months
Last week half of civilization came to a grinding halt because of the crappy engineering practices of a single company. I don't know if now is the right time to complain about perfectionism in IT.
By @PaulKeeble - 6 months
I have very rarely run into the situation where I have put too much polishing into a piece of software to the point where its had a material impact on the project. However the opposite where there is pressure to rush and push out something that isn't really ready has been a very common problem to have to manage.

I think we see the results of rushing in all the software around us much more than we see the delays of perfectionism.

By @candiddevmike - 6 months
This is just the "engineers are ADHD children and need an adult (manager) to keep them on task" schtick.

Give the engineers clear requirements and let them interact with the stakeholders. Get rid of the intermediaries and knowledge brokers.

By @llmblockchain - 6 months
My favorite quote on perfectionism and one I often think about,

"You know, the whole thing about perfectionism — The perfectionism is very dangerous, because of course if your fidelity to perfectionism is too high, you never do anything. Because doing anything results in … It’s actually kind of tragic because it means you sacrifice how gorgeous and perfect it is in your head for what it really is." - David Foster Wallace

Anyone that has built and shipped something has likely struggled with it. You have a great idea. You build it and it's never as great as it was in your head. You need to ship it anyway, but doing so means getting over that perfectionism. Some can. Most can't.

By @rectang - 6 months
Classic problem: management hits workers for “perfectionism”… and then hits them again when things aren’t perfect.
By @chewbacha - 6 months
This feels a little like confusing early career learning with perfectionism. The stories involve their own junior career where they were learning what good code should be and trying to apply it. Later, as they write better code without needing to learn they are shipping higher quality code faster.
By @shmerl - 6 months
That depends. Shipping too much too fast without making the base that can handle it properly results in a ton of tech debt that will bite you in the end one way or another. So there must be some balance about it.

The "we'll fix it later" turning into "no one ever fixed it" is way too common of a pitfall.

By @fefe23 - 6 months
Also the reason we can cross rivers without the bridges collapsing, why we have skyscrapers that withstand earthquakes in Japan, and we were able to launch an international space station into orbit.

Now that the prevailing school of thought is that shipping crap is OK we have a checks notes Boeing Starliner.

By @sigotirandolas - 6 months
Something to consider is that if you cut quality to the point that your colleagues believe you are pushing a half-baked product, or they have to spend even a small amount of time fixing what they know could have never been a problem in the first place, their morale is going to tank - and the brightest are going to leave first.
By @tracerbulletx - 6 months
Corporate disdain for quality of craft is the death of humanity.
By @thelastparadise - 6 months
I vehemently disagree...

The thing that's killing productivity is the pushing out of half baked garbage.

There's simply no solid foundation to build upon.

OK short game but horrible long game.

By @happytoexplain - 6 months
On an individual level, if you are prone to perfectionism, take heed of its dangers to your mental health and productivity.

On an organizational level, perfectionism is a red herring. Yes, there is such thing as debilitating perfectionism, but 95% of "perfectionists" are really just people who care a lot about doing things properly (providing all the benefits that begets), but who aren't 10x greybeards, so they take longer to do it than a cheap dev would to shit out what looks like the same product at first glance.

(You can say the same thing about "premature optimization", perhaps to a lesser extent.)

By @xyst - 6 months
I’m more of a 75-80% perfect guy at most Fortune 500 companies. That 90-95% perfectionism is very hard to achieve and honestly not worth the effort.

Nothing wrong with “perfectionism” but it should be achieved as a team and that requires getting good people around you. Unfortunately, in my experience, that’s where it usually falls apart.

Clueless management continues to think hiring at the bottom of the barrel and “training” them is the right way to go. There’s a reason why they are taking the lowest possible bid…

By @jackblemming - 6 months
My experience with software is 80% or more is slop that could have used more perfectionism. Most engineers couldn’t create a perfect piece of software even if they wanted to. Get to the point where you have that ability and then dial it back as needed. Don’t spend your entire life writing slop that users hate but makes your managers look good because they hit some arbitrary shipping KPI.
By @dexwiz - 6 months
Jordan says that a high volume of changes early in their career was a waste. Maybe for the team, but I would argue the experience gained from many low impact changes was probably better in the long run. It’s better to overshoot and dial back than be lacking, especially early on in a career.
By @dgeiser13 - 6 months
People who complain about perfectionism typically don't provide the proper software requirements.
By @Buttons840 - 6 months
Is there any cliche in this industry that sets up a strawman faster than "productivity over perfection"?

Half the nation's personal data is breached every week and we're over here talking about how we need more productivity and less perfection.

By @tamimio - 6 months
Absolutely guilty of that! Although the article mainly focuses on software that I also assume isn’t critical, sometimes you have to get the work done perfectly, or it’s a major risk or an overall issue for the project success. For example, if you are designing, building, and programming a drone, the margin for error is slim. A single issue that you are not even directly responsible for can jeopardize the whole project, like if a cellular drone control link (C2) is down. Or you are working on an ICS that controls utilities or nuclear plants. So, you have to perfect all scenarios and outcomes, plus all possible testing too.
By @simonw - 6 months
"Perfect is the enemy of shipped" is one of my favourite aphorisms.
By @ath3nd - 6 months
Don't even want to read this, especially considering software nowadays is not nearly as good or even close to perfection.

Last year's CrowdStrike crapware incident made critical infrastructure crash, flights delayed, hospital appointments delayed.

I'd say to the business people to f*ck off and leave the engineering to us, the engineers. Stop trying to squeeze every drop of "productivity" from everything.

It's done when we say so, and it's good enough when we say so. Go sit in some Zoom meetings or something, and leave us to work.

By @kennu - 6 months
Article resonates with me a lot. I've worked on countless projects where I put a lot of effort in designing things cleanly and correctly, only to find out afterwards that it wasn't really necessary. In many cases they were R&D projects that might have turned into concrete products but didn't. It's hard to design software systems and architectures in such a way that perfection is added incrementally as needed. But I think it's in the core of being productive.
By @js8 - 6 months
I think optimal level of perfectionism depends on impact of the decision and how hard it will be to change in the future. I think it's worth to be perfectionist when it comes to architecture, which is hard to change. So you want to make sure you do things right (or extensibly), and consistently. However, in minor things like method names or code structure, it's OK not to be consistent.

I would also say being able to identify where you should be consistent can be itself a huge productivity enabler.

By @rileymat2 - 6 months
Back of the napkin graphs that are not based on any collected data have grown to aggravate me. Although it shows the mental model of the author, it adds an air of empiricism that gives it more authority.

In this case, how do we know it is an exponential chart at all or there is not discontinuous jumps in value at “perfect”?

By @gchamonlive - 6 months
Why do we call overzealousness perfectionism? If perfectionism disregards context it is arguably NOT perfect.
By @aristofun - 6 months
There is only a handful of software products in the whole world that you can sincerely call “almost perfect”.

We are not even close to having any noticeable perfectionism in the industry.

Over-engineering is not a form of perfectionism, it is a lack of empathy and lack of professionalism.

By @surfingdino - 6 months
It's kind of needed, see this problem... https://news.ycombinator.com/item?id=41095279
By @scott_w - 6 months
Strange article. The three things listed near the top:

- Write down your priorities

- Deliver small units of value

- Seek feedback early

Are solid bits of advice. I felt the rest can be skipped.

By @j45 - 6 months
Pursuing excellence by shipping and doing a little beater each time is the antidote to hiding behind perfectionism
By @mupuff1234 - 6 months
Perfectionism or just anxiety?
By @nine_zeros - 6 months
Seeking perfection via automated systems - yes

Blaming people for not being perfect - no.

By @grobbyy - 6 months
Yeah, no. Most software is cludged together with little design and grows organically. Overall, putting on the time to do it right -- if possible -- parts give dividends.

Software done right from 30+ years ago is still in broad use. There is huge value in that

Doing things right involves prototypes, iterations, and experiments, so high velocity is good. However, if a prototype ships, you often get on trouble.

By @lo_zamoyski - 6 months
The tyranny of the nitpicker comes to mind.
By @andsoitis - 6 months
Don’t let perfect be the enemy of good.
By @slavapestov - 6 months
This “Jordan Cutler” guy has a nice grift going, makes money writing a newsletter about career advice when according to his resume, he only has five years of programming experience at best: https://jordancutler.net/assets/images/JordanResume.pdf
By @dbg31415 - 6 months
Bad requirements are the biggest productive killer.
By @godelski - 6 months
I HATE articles like this and I think they are counterproductive.

While perfectionism is not good, I've rarely seen this be an issue except in maybe young engineers. But part of the problem with perfectionism in them is that they don't even know enough to understand the whole picture and the reality is that "perfect" doesn't actually exist. Solution spaces are too complex so recognize global optima are rare.

Instead, what I see far more of is not understanding what "good enough" is. Not paying attention to details. AND dismissing details with some comment about how you shouldn't be a perfectionist. This is a much more nefarious problem because shittiness builds over time. But the damage it does is incredibly costly. The temporal component and the fact that you yourself are often not impacted by your own actions make this much harder to recognize. Worse, people often get rewarded for short term shortcuts that lead to catastrophic failure in the future. But I hope we all know that a little maintenance is far cheaper than repair. It's why insurance companies want you to do a yearly checkup and get your teeth clean. They know its cheaper.[0]

What really matters is a very difficult balancing act. You need to balance your short term progress with your long term progress but humans are bad at long term planning. You need to move fast enough to meet your short term goals and deadlines but you cannot forget what the end goals are. This is hard because the end goals are fuzzy, change, and only come into resolution as you progress. So you should "move fast and break things" BUT you also need to slow down and fix things. This is part of why the software world is ruled by the lovecraftian god of spaghetti and duct tape[1].

I'll give a quick example: You can write sloppy code to get something working, but spending a bit of time to clean it up and add a few comments is always worth the effort. The problem is you might not feel the pain from the lack of cleanup or comments. What's the worst thing that happens? You spend an extra hr because you realize there's a logic flaw when writing up the doc? Or if no problems, 10 minutes to write words? We've all been stuck trying to understand what something does and why (sometimes we wrote that code[2]), especially when onboarding to a new codebase (think about the connection to the 80/20 rule). Which takes more time? Doing cleanup and commenting as you code or the time lost by every person who gets stuck on that line? If you've ever onboarded into a codebase that is well documented I know you know. And you can probably see how the costs are outsources from you, but not necessarily your company. It's the inverse side of what makes software so powerful: scale.

Perfectionism is rarely a problem and is a junior problem that's about not realizing there's no global optima. But (not)-goodenoughism is common and rampant at all levels. If it wasn't, we wouldn't have daily comments on HN about enshitification[3]. But if we were better at understanding the latter I'm sure the former would also be less common. Move fast, but also make sure you slow down. Never forget details, especially when you need to disregard them to move forward.

[0] I have one example at a company where I worked where I was told I was being a perfectionist and then months later our product literally exploded. An engineer wanted to extrapolate data, I said he was extrapolating too far to be reliable, boss overrode because he was more stressed over the timeline.

[1] Duct tape is a terrible tape and you have no reason to own it. Fight me.

[2] At the time of writing only god and I knew what this code does. Now only god knows.

[3] Enshitification is not happening because people are being malicious. It is because "good" exists in unstable equilibria and part of long interacting chains that all have to go right.