The downsides of perfectionism in software development
Is perfectionism holding you back? As a part of the modern workforce, developers, more often than not, have to switch between tasks or work on multiple projects simultaneously. Taking into account the high demand of the industry, it is understandable, why multitasking is needed to piece the project together in time for the release date.
From my experience working in a Java development company, overworking your assignment to perfection before moving on to the next, can actually be detrimental to your productivity. As much as completing a task with utmost quality is needed, overworking it past that point helps neither you – the programmer, nor the product. It is true that you can potentially make the product slightly better, but it would be at the cost of taking away precious time away from your other assignments.
The risk of ruining the project by overworking it is very real. Much like an artist who adds too much detail after the piece is finished and makes the initial composition nearly unrecognizable. As a part of the creation process, the concept of overcomplication is equally as valid for developers as it is for artists.
First make it work, then make it right, and, finally, make it fast.
Personally, whenever I work on a project, I aim for any task I am assigned to be as close to perfect as possible. As someone who prides themselves on their consistently high-quality work, perfectionism is a daily aspect of my work process.
The measure for the success of the end product can usually be evaluated based on three main indicators. While this method is valid for any task in life, we will look at it through the scope of a developer.
- Functionality – Does the finished software perform as it is intended to? Is it functional? Does it have flaws that cripple its performance? Did you manage to complete all important assignments and main structures of the product so it performs the intended function without issues?
- Efficiency – How well did you manage the development time-frame and task organization? Did you have to go back and recreate a huge part of it? Is the solution one that is susceptible to bugs and mishaps? Is the end product efficient at performing its intended purpose?
- Quality – How well is the product developed? This is where it gets a little bit tricky. More often than not, the perception of a high-quality product can vary for different people. Many believe a good product is one that combines good enough functionality and efficiency. If it does the job, then the quality is good enough. Others perceive high-quality products in terms of making sure every detail that makes the product is perfect on its own. And hence – it creates an overall high-quality product.
The product should always be developed with the intent of making it as good as you can. But one thing to take into account when approaching a project is the resources you are given.
Such variables may be the time-frame you have to work with, the team of professionals you work with. Also the working conditions – do you have the hardware that the project development requires for smooth testing? Is the environment one that causes people to take sick leaves? What is the available information for the execution and the amount of time dedicated to research on the technology or algorithms you need for the project, but do not have available? Those are all factors that can affect the quota for what is considered a high-quality product.
How to approach the balance of functionality vs high quality
If you have three months available for a project and it took you one month to develop it to the point of functionality and efficiency of performance, you can use the rest of the time optimising the products’ performance. In this instance, taking your work from “good enough” to “perfect” is beneficial for your project.
But what if you only have one month at your disposal to develop the same product with the same team and overall conditions? If you start optimising the elements before making sure the product as a whole is functional you may face the following risks:
- Running out of time before creating all of the features of the projects you needed. This could easily cripple the performance of the end project – it does not matter how perfect the working functions are if they are not complete. This may force you to dedicate further time to complete the software or fully test for bugs – and then initiate the debugging process. It could also force you to submit a subpar product, gaining the wrong reputation.
- The second issue is that you may need to make a change in the architecture of the software. If the solution you have initially decided to use ends up inadequate later on. If that happens you wasted even more time perfecting code that might get scrapped because it does not fit in with the rest.
We need to mention the issues that perfectionism can cause outside of the immediate effects of software development project management. Perfectionism is a mindset that changes the way you approach your work in general. One way this happens is by influencing the way you get started with the project.
Perfectionism and Procrastination
Another reason to be wary of perfectionism and how big of an influence it has on your work is that it is actually a catalyst for procrastination. The reason behind the correlation is fear of failure coupled with unrealistic expectations and self-criticism. This leads to avoidance to start or dedicate our time and effort towards productive efforts. It is also the reason behind last-minute working habits many of us developed and a deep sense of failure that further fuels habits based on avoidance.
Ask yourself this: Have you ever been too afraid to start a passion project for reasons similar to the following…
- I do not have the needed experience to complete a high-quality project.
- The project will not be good enough because I will not have enough free time, so it will be slow and unproductive.
- I do not have the right equipment for this project. I will wait until I can upgrade my PC’s hardware, and then I will start the project.
- I need to know more about how business is run before I start investing my time and money into creating a monetized project.
Do any of those sound familiar?
Now, do not get me wrong, the preparation phase to any new endeavor is an absolute must. You need to be prepared. You need to make sure you have all of the needed conditions to set yourself up for success.
But how long do you really need to prepare for?
Chances are, you are stuck in a perpetual cycle. You put off starting because the planets are not aligned with your Zodiac sign and you can’t find the just-right music playlist to fuel your work.
If that has been the case for a while, then you are no longer preparing, you are simply procrastinating. The real reason you are putting off your passion project is you are worried you will not meet your own unrealistic expectations.
- Scrap the idea of a perfect project.
- Scrap the idea that you will have all the conditions needed to kick the project off and keep it going.
- Scrap the idea that you need to do it full time with the competence of an experienced professional who has been doing this exact thing for decades.
Allow yourself room for error and editing as a part of the creation process. Going back to change parts of the code and the solution is a needed part of development. You may even decide to take the project in a completely different direction and end up with something much different than your initial anticipation.
The hardest part of a project is taking the first step
Yet it is the best way to get rid of the paralyzing expectations is to just start. Write down every idea that pops in your head as a part of the problem-solving process. Draft up a business plan off the top of your head.
None of it has to be perfect. You can always go back the next day and make changes that fit better or restart a part of it. You can do more research once you have started. First, put down what you know and use it as a foundation to research and build your knowledge. This way you can choose only a specific aspect of the project you are struggling with and research it specifically.
Take away the abstract nature of your ideas by starting to realise them one step at a time and actively troubleshoot the process. Developing a solution one task at a time is the best thing you can do to get out of the rut that is procrastination due to perfectionism.
What is the project you want to start now? Think about it…then just start!