I know, you are putting the project off because you're "busy"
But now let's be honest with ourselves, are we really that busy or is this the 9th project you started but aren't intending on finishing anymore? With around 5 years of coding experience I realized that it's more often the latter than anything else.
Recently I finished version 0 of a touring machine I wrote in rust as a way of learning the language. Something I realized after finishing the project was, that I wanted to create a completely different app. Did I start the project and create the repository? Yes, I even did my "initial commit" with some libraries I needed etc. Will I ever finish it? I have no idea. Only time will tell.
In the meantime I decided to put that project off even further and write an article about why I am putting it off. Quite paradoxical.
The science behind not finishing projects
Let's first find out why we even tend to put off projects. From a psychological perspective there are multiple possible explanations or even a combination of some of those.
Self-regulation theory
The first explanation is something called "self-regulation failure", which is part of the topic "self-regulation theory". Wikipedia defines it as "...a system of conscious, personal management that involves the process of guiding one's own thoughts, behaviors and feelings to reach goals." which means as much as "how someone guides their own mood and thoughts to reach goals".
Roy Baumeister (one of the leading psychologists on self-regulation theory) claims there are four essential components to self-regulation: standards of desirable behavior, motivation to meet standards, monitoring of situations and thoughts that precede breaking said standards and lastly, willpower.
Some other psychologists gave a solution to aforementioned issue: The patient, being you, monitors themselves and checks if desired behavior has been achieved. If that is not the case, the patient changes their behavior and starts monitoring themselves again.
The topic is not very researched, but for us important is "Procrastination has been described as the quintessence of self-regulatory failure." as said by pubmed.gov
The planning fallacy
The planning fallacy is a cognitive bias, which says that humans tend to underestimate how much work there actually is when starting to work on a project. Something I have definitely felt when working on private, but also commercial projects. Underestimating how much work there actually is can heavily impact ones motivation when the point of "this is actually a lot more work than I thought" has been reached.
entrepreneur.com writes: using already existing data, so that your estimations are better, should not be underestimated. How do you make that data? I track time on how long I need for certain features and then link the PR that was made in that time period to be able to look back and see how much I did in what time. That helped me a lot in being able to decide how long I will need for something.
Novelty effect
The novelty effect describes the brains system of rewarding us when we begin learning something new but then lets that effect of gratification wear off. Virginia Commonwealth University attributes the extend of that effect to short attention spans.
From what I have found, there is no real "solution" to that feeling, but rather ways for humans to get the "new" feeling when doing something. You don't like your couch? Put it somewhere else and see if your opinion on it has changed.
The same can go for software. Have you been stuck on that one feature for the longest? Commit and push it to a branch, open up a draft PR and try working on another feature. You can also have multiple projects running at the same time and swap which one you are working on, so you always have something different to do. Don't play against human nature, but rather with it.
My personal experiences
While personal experiences may not work for everyone out there, I think it is still important when talking about psychology.
Positive reinforcement
I remember when I finished school and didn't have any exams. It quickly struck me, that the years and years of positive reinforcement by getting good grades was what kept me motivated. Not having that anymore killed my will to code on my own stuff after I got home. I solved that issue by writing articles about the stuff I am working on. Seeing the likes and comments come in was sort of a motivation to finish another project AND also properly document it.
Organization
A lot of projects didn't even go under because I didn't have any motivation to work on them, but rather because I simply forgot about them/forgot which scope they had to achieve.
As a solution to that I started a todo list, where I would write down everything I needed to do. The scope of that list would most of the times be the project, but recently I also began with one for everything including buying a new mouse, gifts for person x and so forth. That may sound very dystopian, but it has kept me organized.
Leading a well rounded life
Now coding aside. Keeping a healthy lifestyle and having hobbies outside of coding is important. For me it has always been the gym and chess. Both things that take a lot of patience to be really good at.
If you develop a healthy routine, where coding plays an important part, your motivation, productivity and mental health will all start to improve.
Conclusion
In conclusion, finishing that project or that book or going to the gym that day may be hard, but sometimes stuff is hard. It's not about constant comfort, but rather the bigger picture. Nonetheless it is important to take care of your mental health while achieving those goals.
I hope this article helps you, and happy hacking :)
If you intend to read yourself further into this topic, here is an interesting article related to this
Top comments (13)
On the "organization" point, my habit is to have a project log for every project. This is just a text file in which I write down what I'm doing, feature ideas, my musings about any difficult parts, etc. It's organized like a diary: whenever I add to it, I just add the current date, a row of equal signs, and then start typing.
Then whenever I come back to a project after it's been on the back-burner for a little bit, I just re-read what I wrote. This brings all of those thoughts right back to mind, and I can pick it up as if I had never set it down. Works like a charm for me.
It does sound pretty useful. Even when I give my best to write a comprehensive readme it never turns out good enough to 100% understand the codebase when I return to a project. Theoretically your commits should be logs, but I rarely give them a message body, and some of my commit messages are just:
(example if from the aforementioned touring machine)
Stuff like this is unreadable at some point
Saved me a trip to a Therapist
This was very relatable and helpful.
π
Reallly well written @aneshodza! Can really relate to the underestimating how much is actually to be done in the projects that we start.
I've written something similar here
The Developer Urge to Start New Projects by Kunal Keshan.
What is it about new projects that we drop the current ones we're working on? Why are they (generally speaking) more fun? and how do we stick to the current
Thank you! I also read trough your article and liked how you picked a different way to approach the same issue.
Thank you!
Great!
Thanks!
Bravo! π I agree with 99.9% of your analysis, @aneshodza. π Thx for the encouragement!
No propblem! I hope this helped
I'm currently reading a good book about habits: orellfuessli.ch/shop/home/artikeld...
It made me start turning the shower to cold for the last minute of each shower. Each single time it's a little struggle. But each time I overcome it.