I was talking with my good friend Evan, discussing our philosophies of making things. Evan, a classically trained pianist, recalled an aphorism of one of his mentors:
Practice doesn’t make perfect, perfect practice makes perfect.
This makes sense in some fields. In playing a piano, if one practices sloppily, one will perform sloppily – incorrect finger positions practiced over and over again will be nearly impossible to correct. I worry about this when I play StarCraft 2: Without guidance from a professional, are the keystrokes I make a thousand times going to be so ingrained that I won’t be able to adjust myself to the practices that will take my skill to the next level?
Attempting to apply this method to creative works fails miserably! A writer cannot write perfectly every time, nor a painter control to the molecule what their paint will do. Designers cannot always know what the user is going to want.
A programmer attempting to make a thousand perfect programs will leave themselves mired in a death by a thousand cuts – they will have no code reach and no output. Which is why I strongly argued that Facebook’s old motto was better for any artist:
Move fast and break things.
What better way to learn the intricacies of impossibly large and complex systems? Even experienced programmers write bugs all the time, and better to do so at some speed which allows progress to be made.
What I was missing during this conversation with Evan was a distinction between Art and Craft. Art being the ability to create works (move fast and break things) and craft the skill that it takes to create art (practice perfectly).
A writer who does not take the time to practice sentence structure and when to break it will find themselves unable to write coherently. A painter who does not attempt to make each brush stroke perfectly will be left frustrated when their paint seems to disobey their hand. A designer who does not use their knowledge of color and proportion will be unable to guide users effectively. A programmer who does not use the right data structures and algorithms will find their code slow and unusable. All of these are separate from the actual “pieces” that each creates.
I think then my goal is to create lots of imperfect art, but practice my craft with skill each time so that I can avoid ingraining bad habits. Perfectionism in craft is important; perfectionism in art leads to procrastination.
Edit: Hacker School facilitator Allison Kaptur points out an excellent article that puts this very clearly (pun intended) at http://jamesclear.com/repetitions