After failing several times, today I managed to get a 30-day streak on my personal GitHub account. This happened, because I challenged myself a few months ago to accomplish exactly that. Now, that I succeeded after I once failed at day 29 by simply forgetting to write something, I can share my experiences. In fact, this blog post is the commit that completes the challenge.
The point of committing at least once every day is to not lose the momentum, say when coming back to the code after a weekend. I observed myself being more in touch with the codebase, by looking at it at least once a day, and also trying to improve it. The big problem for me was, my GitHub account houses exclusively fun projects, this blog and my dotfiles, because most of my partners are not okay with putting up potentially sensitive code (the old we are much more in danger if we open-source argument). So while I wrote at least some code almost every day for probably the last year, most of it is not included in my GitHub statistics. If you look at them, you can see I started the challenge in early may, roughly 3 months ago.
This time has pushed my fun projects greatly, and I have learned a lot, because unlike my real work, the fun projects are mostly in areas I rarely explore otherwise. I have been toying with encryption, filesystems, games, frameworks I might use in the future and recently started activiely developing and maintaining a window manager. I always tried out more stuff in my free time, but this challenge made me force to actively look for things to try out, to have some meaningful commit (I don’t want to count typo fixes or version bumps, because that is just cheap). And while I do not think it is something I will keep doing forever as regular, it has shown me a world in which I am constantly thinking about what I could code, and that is a good thing. It draws the line between coding from nine to five five days a week and just completely forgetting evertyhing about your code on friday afternoon and coding something for fun, wanting that progress, that bugfix or new feature.
So, what are my conclusions on this subject? First off, I think everyone should try it, it is often not easy at all to come up with something to code, but it makes you think about it more often, solving problems when away from the computer. But I also think, we should not take it too far, coding can be fun, and it is certainly more healthy if it is fun than when you just code so you have something to eat. But there also has to be code-free time, like a vacation, or you might burn out rather quickly. After all, fun coding is a more a hobby, and it should not be the reason you get up in the morning. As with most things, there is a balance to find, coding on some cool project on saturday afternoon is fine, and even spending a whole weekend to accomplish something is great, but you cannot do this every weekend, or you find yourself doing nothing but coding and sleeping, which is not good at all.
The final conclusion is: If you have fun doing it, code in your free time, but also do other things, preferably without computers and with other people.