My bad habit of trying to obsessively optimize everything has recently reared its ugly head at work. Lately, I’ve been working on fine-tuning the development tools that I use each day. At first, it was glorious; faster text editing and amazing shortcuts. But it quickly became an obsession, and the changes weren’t really making me more productive. I’d find myself adjusting my text editor more than I was actually coding. I was messing around with new web frameworks instead of actually implementing my idea.
At the apex of this insanity, I stumbled upon this quote:
Eventually what helped me get past [obsessive optimization] is learning to be OK with the idea that your tools are sub-optimal, because they will always be sub-optimal, no matter how much time you spend bikeshedding them. There’s always one more font, one more plugin, one more color scheme. You’re always one step away from perfection, no matter how many steps you take.
Now I realize that this probably sounds ridiculous. ”Dude just stop worrying about this and write some code!” But for me, it’s easy to get lost in this vortex. It’s essentially a form of procrastination with a bit of self-doubt sprinkled on top. Instead of working on solving a hard problem with a probably-crappy solution, I’ll fiddle around with settings so that I can choose a font with better readability. I’ll subconsciously convince myself that my solution won’t be perfect, and therefore it must be my tools that are the problem. Rinse, repeat.
But why the fuck am I calling my solution crappy when I haven’t even written it yet?! This doesn’t make sense, and needs to stop. Maybe I can try and introduce some zen? On a forum discussing this topic, one user cited the Tao te Ching:
Keep sharpening your knife and it will blunt. Chase after money and security and your heart will never unclench. Care about people’s approval and you will be their prisoner. Do your work, then step back. The only path to serenity.
Do the work, and step back. Going for the perfect solution on the first try is a valiant effort, but probably unrealistic. Get something down and worry about fixing it when it becomes a problem.
What I find most interesting is how with my other hobby, photography, I don’t run into this problem at all. I have a Canon 5DmkII, that’s been out since 2008. It’s a camera that has been retired from the market for two years, yet it can still take beautiful images. It’s a little slow to take burst shots, and is sometimes grainy in low light, but I really don’t mind. I’m able to completely ignore the weaknesses of my tools and concentrate on actually taking photos rather than obsessing over gear.
Time Ferris said it better than I can in one of his podcasts (episode 63, minute 28):
Effectiveness over efficiently. It’s easy to conflate the two if you are constantly hit with propaganda about using the latest tools. But the principles are more important. If you’re a good artist you can use the crayon or the brush. It’s exaggerated in the startup world. Every little problem gets magnified because of the velocity at which these [tech] companies are growing.
Vim will always be able to edit text, and a 5DmkII will always be able to snap a pic. In their respective fields, these two tools have been boiled down to their essence. They stay out of your way and allow you to create. The latest and greatest tools may be shinier, they may have more bells and whistles, but if you’re too busy fooling around with nobs and plugins you’re not making anything. Do the work, and step back.