The saying "Perfect is the enemy of done" is so much BS.

The war on perfection is the enemy of artistic expression.

Look at old world architecture vs modern crap. Crafts are no longer a thing but stuff is only made as effeciently as it can be for the greedy and impatient.

The artists and craftsmen of old knew well that perfect was achievable and constantly strove to be more and more perfect in their arts and by side effect on themselves. In this mad world we've lost that to the pragmatists who see no value in the art of perfection or in those who do not value those who do.

The "doneists" can go fuck themselves. Perfectionism is where true artistic expression is at.

  • 1
    this "perfection" you talk about... is there an objective way of measuring it, or are you just talking smack?

    and if you have a definition of it - is it a positively _perfect_ definition, or did you think it's "good enough"?
  • 1
    I don’t think there’s a war on perfection at least I haven’t seen it in the arts. Now, the industry is something else, they approve of anything that gets them money asap no matter the state or scalability of it.

    I’ve developed different things and tried different areas but that phrase “perfection is the enemy of done” has never been truer than trying game development.
  • 1
    Dude, Cheap and Quick is always preferred over Expensive and Quality in the tech industry, and you know it.
  • 2
    @tosensei It's complete smack. Like seriously, look at something even as simple as street bollards.

    The modern ones that are essentially just pieces of extruded metal, are in all aspects perfect - they have precise surfaces, uniform shape, perfect coat, any markings are applied precisely to the point.

    The old ones on the other hand have all kinds of small imperfections from sand casting, uneven surface, and a bunch of poorly trimmed overflow edges, because sanding and polishing the surfaces would take way too much effort. Yet they look so much more interesting and "creative" than the modern, "prefect" ones.

    If you need a new wardrobe, do you also replace all other pieces of furniture so they match perfectly with the new wardrobe? Do you wait for years looking for a perfect one to fit the rest of your furniture? Or do you get a fucking wardrobe, because the rest of the furniture is still completely fine even if it doesn't match perfectly? Yeah. OP is just smack.
  • 3
    I get OPs point and I also get the rebuttals saying perfection is impossible. Maybe the middle ground in this discussion (pertaining to tech in particular) should be "the aim for the best that can be achieved given the circumstances". Most of the time though, many people settle for (barely) good enough; and are too lazy for better.
    Here’s the catch though. Things usually turn out ok. Why is that? Because you’ve got the handful of perfectionist who can’t settle with cheap solutions and who are there to clean up other after people’s messes. That’s how you end up a with disgruntled, burnt out bunch of devs pouring out their rage on devrant
  • 0
    @red-knot I get your point, but in my experience most of those "perfectionists" were people who only ever worked on small projects and projects that didn't require any long-term maintenance or changes. Because it's easy to find a "perfect" solution when you just have to redesign a static website with a total of 3 subpages, it's much harder when you have tens or even hundreds of subpages and the customer regularly updates the content. And it's that much harder to have a "perfect" solution when you're starting from scratch with limited or no prior experience. I've also noticed that people who like to get things done will often try out a bunch of libraries for the given task and settle on the one they find the easiest to work with, while the people who want to get everything done as best as possible will try to avoid such "trial and error" approach at all cost and choose the library based on documentation, popularity, reviews, etc.
  • 2
    The problem is that software isn't really artistic expression. Art is involved to some degree, maybe, but it's mostly software engineering. And in computer science terms, "perfect" is time-consuming, expensive, and extremely short-term because of the pace of innovation in that field. Today's "perfect" is tomorrow's "vulnerable" and next week's "broken as fuck."

    Iterative development, getting a minimum viable product and then iterating on it as needed, is the best way to keep pace.
  • 3
    @hitko I’m suspicious when I hear about devs that like to get things done. That can mean a lot of things. I’ve had to clean up after devs that worked fast and dirty. Sure they got things done but they left behind buggy and hardly maintainable solutions.
    To me getting things done means delivering what was asked in a reasonable timeframe and ensuring it’s robust and maintainable. If it means spending a bit more time getting things done, then so be it. TBH I haven’t been in the field very long but already long enough to be proven right for taking more time to reflect on what I’m doing and not always settling for the first thing that works if I know there’s probably a better way to do it
  • 2
    @red-knot Idk, it seems to me that such "quick and dirty" solutions usually come from people who either lack knowledge and experience to consider better solutions, or who believe their solution is actually the best one out there, because 10 years ago when they first had to deal with the same problem there wasn't any better way to do it. Either way, I don't think of those as the devs who "like to get things done", because in their mind, they're all doing the best they consider possible or necessary. For me, the "devs who like to get things done" means pragmatic devs who don't waste time on something that only needs to work for a month, or something that will eventually change. For me, those are the devs who, when choosing between multiple solutions with similar trafe-offs, go for one that's easier to implement and maintain even if it means giving up some "nice-to-have" features another solution might offer.
  • 2
    The real problem is when the strive for perfection leads no never getting finished.

    When you always find new things to improve without ever delivering.

    That is when perfect is the enemy.

    Perfect is more or less the equivalent of unachievable.

    You can aim for perfection but your never really going to reach it, the trick is to deliver along the way.

    Striving for perfection buy accepting excellence is a better strategy.

    Aim for perfection but deliver once its good enough. And good enough is of cause a subjective target depending on circumstances.
  • 2
    @hitko you’re right, and the key concept here is being pragmatic as you said.
    I suppose I’m the type of dev that will always spend a bit more time looking for a better solution. It doesn’t keep me from being productive and I think it’s what allows me to be a better developer than I was 6 months ago. It’s important as I don’t necessarily have time outside of work to improve my skills
  • 1
    Make it work, make it beautiful, make it fast.

    That's all I need
  • 0
    @Awlex It will cost you time though.. cuz making it work and making it fast isn't a quick process.
  • 0
    The flipside of this is what they call scope-creep.
Add Comment