This month’s IndieWeb Carnival is being hosted by RisingThumb, and the topic is
“Good Enough – The Drop in Quality’s siren call.” The carnival is a month-long event in which bloggers are given a theme and encouraged to write about their thoughts and feelings on it. At the end of the month, all posts will be collected and posted over at RisingThumb’s blog and then a new theme will be chosen for May.
I’m going to take a different approach to this topic than RisingThumb here. While I do think the rise in complexity in software in web development is a negative thing, I don’t think that means “good enough” as a goal is a bad one. In fact I don’t even think that complexity and “good enough” are mutually exclusive. An unfortunate side effect of complexity is that it leads potential creators to believe that perfectly serviceable “good enough” solutions aren’t in fact good enough at all.
This often leads to an urge among programmers to make their code “beautiful,” and it makes me think of the old diaper commercial slogan that they would play on TV: “Live, learn, then get [out product],” as in, you try to do your best as a new parent, and make everything perfect. Then you go with what works. This is an adage that resonates with me, and I’ve lived by it for a very long time. It’s served me well.
As an example, recently I picked up The Recursive Book of Recursion and Eloquent Javascript from the library in an effort to expand my already existing JS knowledge, and it’s been eye-opening. I’m loving all of the clarification I’m getting and the new techniques I’m picking up, but the recursion book had a bit that’s really stuck with me. No one ever *has* to use recursion. In fact, every recursive algorithm can be serviced by a for loop, and vice versa. That’s not to say that recursion should never be used, because sometimes it’s the most efficient method. But you can get by perfectly using low-level structures in most programming languages and never incorporating more complex libraries and more complex logic.
For a long time, thinking I needed to use more “complex” code was keeping me from actually making things. I’ve always wanted to make games, but for the longest time I didn’t even try, because I would think things like “you can’t make an entire game only using for loops!” Well, actually you can, and many people have, and I’ve written a ton of butt-ugly code since I made that realization. But I’ve also made more games, toys, tools, and web pages over the past few years than I ever had the gumption to do before I let that quest for perfection go.
If you’re still hesitant, I’d like to mention a thought that I always keep close by, and tell myself often: You can always make better things. Always. I know you may feel like you need to give birth to the single best thing you’ve ever made, and you need to hold on to it because it’s precious, and it will never be topped. But this is a toxic attitude, because it doesn’t let you move forward and keep creating. You’ll learn something every time you create again, and even if it isn’t up to your best standards right now, it will be in the future. Keep creating, getting better, and learning.
There are a lot of artists who never learn this. Artists who created something amazing long ago and then spend the rest of their careers in litigation to wrestle it back from others who want to use it and expand on it. It’s sad, because all that time could have been spent making more art. Instead it’s wasted on trying to control something you gave to the world. This is the reason for why I chose not to charge for most of the art I make. I am aware that this is a somewhat privileged position, as I have other sources of income that others don’t, but it is easier for me to simply let go than try in vain to protect my creative children.
You know what they say, “if you love it, let it go. If it doesn’t come back, it was never really yours in the first place.” It’s true for more than just relationships.