The dark side of perfectionism
Having a growth mindset is crucial for reinventing ourselves in different realities. However, this can also lead us toward the darker side of perfectionism.
As with many aspects of life, it is impossible to have something perfect in software development. Therefore, I try to maintain the sense of living in what some people call a beta version, acknowledging that there will always be something to improve.
One of the main processes affected by perfectionism is delivery. How many times have you waited until everything is ready to be pushed to production, instead of admitting that some things don't work as expected? From a different perspective, if we can let go of perfectionism, we can start delivering value incrementally.
Without going any further, something like this happened to me while developing this website I wanted it to be “perfect”.
I started to work on things that weren’t necessary, and at some point, a friend of mine told me just to put it there and that I will eventually evolve into something better for my expected audience. I must admit he was right, my fears and perfectionism were holding me down, and then nothing bad happened.
Waiting for the ideal moment and the perfect product is one of the main reasons behind procrastination. As a side effect, we can also encounter the named analysis paralysis, which is the result of making a decision due to overthinking a problem, where analysis of the pro and cons, basically leads to procrastination.
Keeping this in balance is probably one of the underestimated skills that I have developed and improved more over the years.
Not too many shortcuts
From my personal perspective, as a practical or pragmatic person, I tend to avoid getting myself trapped in processes and endless discussions. Not saying they are pointless, but sometimes we rely on this resource to fix doubts that include more than one person.
The drawback of this characteristic is that I sometimes overuse the ability to take shortcuts.
It’s difficult to draw the line between going fully practical and covering everything at once. The clue is that we can iterate, but that shouldn’t be an excuse for skipping the plans or procedures.
One thing that I try to remember to avoid going super pragmatic mode is to keep what I consider high standards before I consider something ready or done.
Clinical and critical eyes to analyze the details is a very good skill to have, but not if you are using it all the time. Not every decision needs to be deeply discussed. Otherwise, getting into the rabbit hole of a problem would be the norm.
One of the things that experience gives you, rather than technical skills, is the ability to pick your battles on getting deeper into a subject that in the end has zero impact on the end goal.
To put it into an example, Imagine that we are refining a new feature to be released, but we keep on postponing the release due to different challenges we get from a team member pretending to be ready and preventing every edge case. In the long haul, this will translate into demotivation and a lack of value delivered.
Turn the wasting time about possible scenarios or users’ behaviors based on assumptions, into investing time in matters such as the way of delivering, analyzing, and deciding on actual data.