Top
Best
New

Posted by var0xyz 2 days ago

Perfection is not over-engineering(var0.xyz)
287 points | 123 commentspage 5
tombert 2 days ago|
It's rare that I so thoroughly disagree with the thesis of a post here.

> Over-engineering is solving the wrong problem. That's the whole definition.

Wholeheartedly disagree. Over-engineering already seems pretty well defined just based on the words alone without tacking on a strange arbitrary definition to suit your blog post, but I think most people most people would define it more as "spending too much time and/or resources to solve a problem more-thoroughly than necessary".

Suppose I was given the task to convert all the JPEG images in a folder to PNG.

Solution A) I could write a highly optimized program writing custom CUDA decoders and encoders and using Open MPI for CPU-based optimization, and create an elaborate plugin framework on top of this to make this modular and cool.

Solution B) I could just run `find -name "*.jpg" | parallel magick {} {.}.png`.

Both solve the "right" problem; the ask was to convert these images, and both approaches can absolutely do that, so they didn't solve the "wrong problem", but I would argue that for most people Solution A would be "over engineered". You could argue that by building custom encoders and decoders and the like we're solving the "wrong problem" by going beyond what the problem asked for, but I feel like if you're criticizing the engineering methodology then that kind of proves my point.

We generally think someone is "over engineering" primarily when we are happy with the low-effort result.

There are times when Solution A is the right way to go about it. Maybe you want something that takes advantage of custom hardware, or maybe you can make an assumption about these images that Imagemagick can't, or maybe you really just understand image encoding significantly better than the Imagemagick people. in those cases, we generally don't consider it "over-engineering".

sandeepkd 2 days ago||
In the absence of concrete examples its hard to say what is OP trying to optimize for. Optimism is good, however at the end of the day everything is a trade off, the cost has to be paid for all decisions. A good design is all about optimizing when, where and how you push those costs.
hakunin 2 days ago||
Another point that goes along with this: good engineering is not premature optimization[1].

[1]: https://max.engineer/premature-optimization

zzzeek 2 days ago||
great post but also the real thing they are talking about here is YAGNI
donpark 2 days ago||
Pefection is a fetish.
cindyllm 2 days ago|
[dead]
godelski 2 days ago||
There is no such thing as perfect.

Anyone saying "don't make perfection the enemy of good" is using a thought terminating cliché, avoiding the conversation of what is good enough. Worse, it is often used by people to drag quality down. If you're creating the "minimum viable product" you usually create a product that isn't working.

But, perfection doesn't exist. Most solutions in the world have no global optima. There are always tradeoffs. You must choose. You must argue with your peers to figure out that tradeoff. Perfection has infinite depth in detail. You must optimize. You just learn the unknown unknowns in an every moving landscape.

But you should still chase perfection. Like you chase a utopia. Like you chase your dreams. There's always something to improve on. Chasing perfection while knowing it can't exist means you will continue to search for the flaws. It means you will continue to improve. "Over engineer", because that's just engineering. Make things actually work, while recognizing they're always broken somewhere. Don't get offended when someone points out a flaw, you already know it's not perfect, so figure out if it is a tradeoff or can be fixed. Just keep improving things, because otherwise they keep getting worse

croisillon 2 days ago||
next time just post the prompt
0xbadcafebee 1 day ago||
Perfection is the enemy because the very notion of it assumes that something cannot be any better. Everything can always be better. That's the problem. Whatever solution you make, will eventually be "not good enough". Follow that path long enough and you will never be done with anything. So not only do you need to realize perfection is impossible, but you also need to accept "the bad" and live with it, or become Sisyphus.
mateuszingano 1 day ago||
[flagged]
shoggi 2 days ago|
[flagged]
More comments...