Combatting perfectionism

Link post

Background

Over the past 2 months, I’ve experienced two of my startups ending—one in euthanasia and one in sale.

During my startup that we ended, I kept my perfectionism under control by the time pressure of building for our customers. I would ask customers what they wanted; consider what they actually wanted; and then build it quickly.

This customer demand meant that I rejected unnecessary suggestions and controlled perfectionism. I focused on building what I believed the customers needed within the time constraints. Household cats would have congratulated us on our level of agile working.

The problem

Shortly afterwards, I sold my other software business (Redstone HR) to a UK company. Since then, I’ve been building software to accelerate the future businesses that I build.

Perfectionism has been rampant [1].

My perfectionism has felt like a colony of rabbits alone in a lush woodland. The rabbits spend their days happily increasing in number, without the constraints of hungry predators.

Similarly, the lack of time or financial pressure has allowed my perfectionism to expand. In this early stage of a new business, there are no constraints—such as customer demands—to restrain perfectionism.

As a side note, I think that the word ‘perfectionism’ is inaccurately self-complimentary.
Perfectionism sounds impressive: a person is so conscientious that they want every aspect of their work to be as good as possible.

Yet, in practice, perfectionism means that you are fixating on insignificant details and failing to do the most important things. Being a perfectionist is bad thing for achieving your goals. As Voltaire said, and as my friend Matty repeats as if a sacred mantra: “Perfect is the enemy of good.”

A trial solution (Adding a fox among the rabbits)

-> Add time constraints with real financial consequences.

  1. Set a deadline with specific targets

  2. Send money to a friend immediately

  3. Tell the friend to dispose of the money if you don’t meet the deadline[2]

The rationale is that a real financial penalty forces you to focus on the most important things. If you do focus on intricate and trifling details, you increase your chance of real financial loss. So you’ll avoid doing so, and instead focus on the actions that maximise achieving your targets. This counters perfectionism. By incentivising yourself to prioritise the most important, you will make greater progress.

On point 2, it is important to send the money before beginning. This is because the constraints become real once you send the money from your bank account. You have literally suffered financial loss. If you don’t meet the deadline, you will not recover the money.

My initial results were strongly positive. Throughout the day, I prioritised more significant tasks and avoided disappearing into a recursive spiral of beautiful tiny details.[3].

I recommend the method. Send your money away for the day.

(Original post at: https://​​tomdekan.com/​​combatting-perfectionism)


  1. ↩︎

    To give one example of perfectionism with picking technologies, I started by working with Supabase. I like the idea of doing as little plumbing work as possible when creating a new software product. This particularly applies to commodity tasks like user authentication, server infrastructure, transaction email, CI, CD etc. So Supabase seemed great. However, a week later, after connecting Django to Supabase with a non-tracking model to manage the backend complexity and allow for backend unit tests, the desire for a perfectly neat approach using Supabase had devolved into high complexity. I moved onto using Nuxt 3. I really like Nuxt 2 and have contributed to the project in the past. However, Nuxt 3 (RC) is not ready for my use at the time of production. There were problems with composables; Pinia failed to run with my version; and other cloying bugs slowed progress. I moved on.I decided to use Nextjs (a React framework) for my frontend. Vercel are a great company and Nextjs is their product. This would be a good choice because Nextjs is highly supported, contains many of the attractive features of Nuxt3 (such as a fast hot-reloader and file-based server middleware), and also contains its own auth, Next Auth, which I could just plugin. After a week of working with Next, I realised that I much prefer the Nuxt syntax. I returned to Nuxt 2.

  2. ↩︎

    I recommend that you don’t ask the friend to donate the money to charity. You don’t want to gain any alturistic feeling by failing to hit your target.

  3. ↩︎

    Several examples of insignificant side-tasks: Refactoring good code to excellent code; reorganising the codebase to make it neater; general tidying; adding optional configuration for code linters.

No comments.