Sharp blade

On Perfectionism

Once I asked one of my employees, an outstanding software developer named Dave, an interview question: “If I were to call your most recent manager, what would he identify as a fault in your work that I should look out for?”

He smiled. I could tell the answer came to him immediately, but he took a moment to make sure he chose his words carefully. He said, “He would say I’m too much of a perfectionist.”

His answer didn’t surprise me. I had worked with him for a while already. I knew he was a craftsman. He cared about his work, and it showed.

I smiled, and I said, “What happened?”

Dave had gotten crossways with his former boss over the classic contradiction in motives between the craftsman and the salesman. The salesman wanted to ship; the craftsman wanted more time. The conversation escalated, and eventually his boss resorted to calling him the p-word.

I had already been through this before. I had played both of the roles of perfectionist programmer and perfectionist programmer’s manager, and I was familiar with their contradictory motives.

I encouraged Dave not to regard his perfectionist tendencies as a defect he should try to suppress, but as a tool for improving the world. I told him the problem wasn’t perfectionism. It was that his perfectionism was actually incomplete.

Dave seemed receptive to a solution that called for using even more of an aspect of his personality that he already embraced.

The incompleteness, I told him, was that he wasn’t applying his perfectionism to all of the relevant constraints in the business of making software.

Of course features are important, and of course tidy, rock-solid, high-performance, highly-observable, easily-maintainable code is important. But imagine, I told my friend, what it must be like to pay a programmer’s salary. Where does the money come from? Well, it’s either from customers (in exchange for software) or from committing unspeakable unsustainable acts like borrowing money or diluting equity.

In a perfect world, your salary comes from customers, in exchange for software. And the earlier that exchange can begin, the better. Shipping software brings you cash, and earlier cash is better cash. Likewise, shipping software brings you data, and earlier data is better data. There are many benefits of shipping.

I loved Dave’s perfectionist tendencies. It’s part of what made him great. However, I see his former manager’s point if he was perfecting only upon some constraints (like how polished everything should be) but not all the constraints (like how much they should be willing to pay for polishing).

What I told Dave I’d like him to do is incorporate just one new constraint into his decision-making model: shipping date. I wanted him to regard shipping date as a constraint at the same level with which feature to create or optimize. Sometimes, for example, it’s the right decision to trade a feature for a date. I’d love for someone with perfectionist tendencies to be helping me optimize those kinds of decisions, too.

If you have perfectionist tendencies, celebrate them. Used wisely, they’re a source of inspiration and energy that makes you more valuable. But only if you point your perfectionism at the right goal. Perfect the balance of all your constraints—not just the fun ones. Try to think like an owner. It will help you maximize the value of your work at a level even more important than just being an exceptional craftsman.

Further reading that might interest you:





Leave a Reply

Your email address will not be published. Required fields are marked *