In the last couple of days, I felt like I was running out of steam. Following my daily routine of committing at least two enhancements to one or more open source projects (mostly my own) felt very exhausting. Yesterday I finally took the time to think about why I’m losing my motivation. I have come to the conclusion that there are several factors why I felt less and less motivated to work on my pet projects.
Discipline > motivation
First of all: motivation sucks. Motivation will betray you at the first opportunity. If you are anything like me, you can’t rely solely on motivation to achieve anything. Motivation comes and goes it is almost impossible to be consistently motivated to work on a (side) project over a longer period of time.
What keeps me going is discipline. I stand up at 6 o’clock in the morning and the first thing I do is doing my pushups and some other fitness stuff. Then I get my brain going with some mind training (lumosity). I don’t do that just when I’m feeling motivated to do it, I do it every single day no matter what, just like I’m committing code every single day. That’s discipline and the only way how I’m able to do something consistently.
Discipline makes it possible to achieve certain goals over time. I built some nice little open source projects, I learned a lot and I’m also feeling better because I do at least some exercise.
Doing too much
While you can’t rely only on motivation it definitely helps if you’re feeling motivated or maybe even passionate about what you’re doing at least some of the time. The recent days I didn’t, and one of the reasons I found is that I’m doing too much things at the same time.
The last couple of weeks I was getting into webpack and Vue.js, I toyed around with LoopBack to build an API, I was tinkering with some little new projects, I learned about TDD and I recently started to work on an idea I had for an app, which meant learning Ionic including TypeScript, Angular 2 and Firebase.
While all of this was fun and I learned a lot, it is too much to keep up with for a longer period of time.
And that’s where perfectionism comes into play. I think almost every programmer knows that feeling: you’re looking at some code you wrote a few weeks or maybe even some months or years ago and you are embarrassed. At the one hand that’s a good sign because it means you learned something in between. But on the other hand it triggers that well known developer illness of wanting to tear everything down and build something new and shiny from scratch.
With many open projects you’re working on in parallel this feeling gets even worse. It’s a constant itching that you know you’re using some advanced methodology in the one but not in the other project. And with doing many things at once and knowing about all the shortcomings my code has, I was hardly able to feel motivated to work on any of my projects.
What to do?
You should focus your energy on only a few things at a time. Don’t try to learn more than one new technique at once. Be disciplined even if you’re not motivated but try to manipulate your environment to feel motivated at least some of the time.
Try to not to be overly perfectionist when writing code. Code is messy, programming is messy – your job as a programmer is to clean up the mess. One piece at a time.