4 ms·
> A former manager once described me as a “purist”. Can we talk for a second about how useless this type of language is? When people repeat phrases like "don't
by godelski 10mo ago
> A former manager once described me as a “purist”.
Can we talk for a second about how useless this type of language is? When people repeat phrases like "don't let perfection be the enemy of 'good enough'" and such?
The problem is they're used predominantly as thought terminating cliches. Perfection doesn't exist and frankly if someone thinks it does it really suggests they're very junior. The problem with those phrases is that they sidestep the needed conversation of "what is good enough" and instead implicitly state "what I think is good enough is the answer and what you think is unreasonable". It kills the needed conversation and just annoys the person you're saying it too.
Working in teams is all about communication and we often do a really poor job at it. Let's be honest, the soft skills matter. Just say something different like "why are those features needed?" or "what's wrong with the current implementation?" and follow up with "how critical are these issues?" You can always triage and come back. Maybe there's something you don't see and the "perfectionist" does because they're in the weeds. Maybe there's a disagreement on the specs. Maybe the "perfection" is useful but low priority given current conditions so you log up a feature request or make some note and move on, coming back later.
It's just a pet peeve of mine, as someone who's heard this a lot. Sometimes it is me, but more often than not it is the person not working on the thing that is missing the scope of the problem (almost always when a manager is nontechnical or disconnected). A simple conversation usually clears that all up and every party tends to move their position a bit.
- danaris 10mo agoBut many people do let perfect be the enemy of the good. Sometimes they're even right. If you think we shouldn't push a quick & dirty fix for this issue that's affecting 20% of your users, because a good fix will take much more time, but also take care of an entire class of bugs that are otherwise likely to crop up... That's letting perfect be the enemy of the good. And there's no way to know, just from that scenario, which side is really correct. Maybe the bug will cost your company $1 million/hour until it's fixed. Maybe letting the quick & dirty fix go in means that you'll annoy users enough that you'll lose 10% of them permanently.
- godelski 10mo agoI think we're in agreement. Though I want to expand on something a bit subtle. Perfect doesn't exist. There's no perfectly written code. If there were it wouldn't be perfect for long because the environment is constantly changing. After all, code rots. I want to make that clear because it is why I said only a real novice gets roadblocked by perfection. They might have an idea of a perfect solution but anyone with any meaningful experience knows the real world is full of unknown unknowns. (Even with perfect information it's usually not traceable) What's the old joke? Theres two types of software: those with bugs and those nobody uses. So given that, everything else is actually an argument of "what is good enough." Take perfection off the table, it isn't useful here [0] In other words, we're looking for locally optimal solutions, not global. Because global likely doesn't exist[1]. My interpretation of what you said here is the same. We could write down all the (known) conditions of that problem and still not get a perfect solution that works every time. There are good practices, but those aren't bulletproof algorithms to success. They still require interpretation[2]. So the job of the engineer isn't to be a robot that follows instructions to the letter. It is the job you interpret, explore, and discover. It's to implement suboptimal solutions and iterate on them to find better suboptimal solutions. You have to balance short term and long term benefits, such as your hot patch scenario. There's always some trade being made. And that's why the thought terminating cliché is so detrimental, because it at best sidesteps the trade-off conversation and at worst creates willful ignorance of them. [0] perfection is a good target to help align but it is also fundamentally unobtainable. We could say that same thing about utopias. But similarly the inverse (e.g. shit code/dystopia) is easily obtainable. This, I think, is a subtle difference in how we're using the term "perfection". I think you're using it as a guide rather than a literal objective that can be achieved in finite time. Do I have that right? [1] real world problems are very high dimensional and we usually project them into lower dimensions to make solving more tractable. [2] no rule can be so well written that there are no exceptions. (Including this rule)
- Yokohiii 10mo agoI disagree with most of the article, but your response to that quote is quite a lot. "Purist" doesn't say much without context, but you imply perfection and to a wider degree excessive escalation of not-good-enough. I don't read that at all from it. I also see the other side quite a lot. People read tickets half assed, quickly write some code and move on. Their first thought is good enough. Which is usually not. That mindset was born in the VC startup world. Of course it makes sense to shorten the time of burning money and bringing new features to beat the competition. But that doesn't makes it always justified. The tech world has more and more visible problems with security and quality. Good enough plays a part in it.
- godelski 10mo ago> I don't read that at all from it. That's totally fair. I was contemplating that myself but the fact that they specifically mentioned their manager saying it combined with how the article focuses on being detail oriented (defending that behavior (something I agree with, but needs context)) I felt the inference was justified. But hard to tell without the OP coming in. > I also see the other side quite a lot. This bugs me A TON. But it also feels like these are the ones using these clichés. From my personal experience, my first thought is always shit. I really internalize the non-existence of perfection. It is equivalent to "I'm always wrong." I find this helps because I no longer think "am I right or am I wrong" but "how wrong am I?". I tend to think this also makes me more agreeable, as I'm open to changing my mind (I'll often explicitly state what will do that). If you want to be "right" and you know you're always some amount of wrong, it becomes natural to do that and it is hard to have your ego hurt when someone points out an error in your logic. They likely just helped you find an unknown unknown :) > That mindset was born in the VC startup world. I think I see what you're saying. Are you referring to 'The Silicon Valley model': "run at a loss, corner the market, then raise prices with your (near or effective) monopoly power"? Setting aside that this feels like metric hacking the economy, I do agree that it incentivizes myopic thinking. "Move fast and break things" is a great strategy when working on tough problems and you're just starting. But it is also a terrible strategy when established. I mean... you just broke a bunch of things and the garbage is laying around all over the place, right? We need the addendum "then clean up, everybody do their share." If this is what you're talking about, I'm in full agreement. The myopia makes sense for startups, you shouldn't prioritize long term business strategies when you're worrying about your business existing next week. But the momentum of that strategy persisting in established businesses is definitely detrimental. I mean that's one of the biggest downfalls of monopolies. You can make shittier and shittier products because the fewer competitors you have the lower the bar is for "good enough." I won't be surprised if we see these established players be disrupted. It's pretty hard to do so, but every day average people are getting fed up with the enshitification. It is entirely their battle to lose. I mean we're seeing a big uptick in linux users. As a long time daily driver, I do think linux has gotten better, but I still think the major factor is people just getting pissed at Microsoft. I mean if you're going to be constantly fighting your computer might as well do it on a system that actually lets you control it and doesn't randomly revert your settings, right?