The amount of pressure that software engineers put on themselves is monstrous. Our view of world as a finite, discernible system causes us to aim for nothing less than perfection. With such high expectations, it's no wonder that we procrastinate, struggling to find a place to start. Thankfully, according to The Book of Life, this is a very honourable problem:
People who don’t know where to start are often perfectionists. It’s an honourable problem: you’re doing nothing not because you’re lazy but because you’re very ambitious. Perfectionism is one of the causes of procrastination – because it makes us so worried about getting things wrong.
Yet in spite of this honour, and when faced with the daunting task of creating perfection, we lay down our arms and reach for the white flag. We then compose a list of our inadequacies and view our perceived failure, and all those that came before it, as evidence of our own incompetence, rather than records of our huge ambition; our desire to create something great.
Our only mistake then is not in having the admirable goal of desiring perfection, but to assume that it would be easy, and to give up after our shitty first commits rather than work through the hardship. Nietzsche, a German philosopher who died in 1900, based much of his philosophy on the concept of suffering, seeing it not as something to be avoided, but as a requirement of pleasure:
Brave and creative men[/women] never consider pleasure and pain as ultimate values - they are epiphenomena: one must desire both if one is to achieve anything.
He compared pain and suffering to climbing a mountain: it takes a lot of energy and may even be painful to climb to the summit, but only by accepting that pain and continuing in spite of it will you be rewarded the pleasure of a breathtaking view.
When we consider pain to be part of the creative process it's easier to accept it as normal, rather than assume the difficulty is a poor reflection of one's character or ability. Then we might overcome our feeling of despair.
The Creative Process 1. This is awesome 2. This is tricky 3. This is shit 4. I am shit 5. This might be ok 6. This is awesome
— Marcus Romer (@MarcusRomer) October 23, 2013
Accepting the pain of reality is an important life lesson, and I'm reminded of a paragraph from In Bed, a moving essay by Joan Didion depicting the experience of a debilitating migraine:
And once it comes, now that I am wise in its ways, I no longer fight it. I lie down and let it happen. At first every small anxiety is magnified, every pain a pounding terror. The pain comes and I concentrate only on that. Right there is the usefulness of migraine, there is that imposed yoga, the concentration on the pain. For when the pain recedes ten or twelve hours later, everything goes with it, all the hidden resentments, all the vain anxieties. The migraine has acted as a circuit breaker, the fuses have emerged intact. There is a pleasant convalescent euphoria. I open the windows and feel the air, eat gratefully, sleep well. I notice the particular nature of a flower in a glass on the stair landing. I count my blessings.
We can also find better ways to cope with the uncomfortable feeling that makes us want to give up, such as by optimizing the process for tiny victories, instead of succumbing to despair:
We're attempting to make a freaking quadcopter and it's very possible we won't succeed. But we soldered two wires together today, and the multimeter needle moved, so we're pretty excited about that tiny victory and that's how we're telling the story.
In aiming for perfection we're aiming not just to succeed but to succeed in the most profound way. Perhaps in light of its hardships, we should focus more on the little victories than on it being perfect.