199 Days of Git

Reflections on Git streaking

Photo of Curtis Lusmore Curtis Lusmore,

May 20, 2016. My Git streak comes to an abrupt end on 199 days. Today, GitHub disabled the commit streak feature and left me stranded one day short of a milestone. It feels a little frustrating to get so close and then have it taken away, but in the end the overwhelming feeling is actually one of relief.

I’m a chronic procrastinator and a prolific sidetracker—I’ve always had trouble following through on things after the initial whirl of enthusiastic development dies down. More often than not, it’s not so much that I get bored of the project I’m working, it’s that I get distracted by something else more exciting. I’ve tried lots of different approaches to improve this, but haven’t had much success.

I used to keep my code entirely offline on my computer in a horrible mess of poorly named “temporary” directories, so whenever I decided to go back to an old project I would have no idea where it was up to, if I could even find it. So invariably I would just start over again. Clearly this isn’t the way to go—something had to change so I decided to start putting all of my projects on GitHub. The hope was that having it publicly visible would encourage me to actually complete some of them. And being in a state where I was perpetually restarting projects made me feel like, despite the fact that I spent most of my free time developing something, I couldn’t actually list anything I’d actually accomplished.

And then I came across the Git commit streak on GitHub.

This one number shows me how many days in a row I’ve done some amount of work on one of my projects. It doesn’t matter if every day I work on something different, as long as I work on something the number continues to go up. So I decided to see how far I could take it.

And as with all of my projects, it started with a brief spurt of activity. I made a few commits each day over the first weekend, but then it quickly dropped back to one commit a day during the week. For my day job I write proprietary software so I don’t get any credit for that—my commits all came from side projects after hours. And I quickly found that the longer it went on, the harder it was to find something to commit each day.

As you can imagine, there were more than a few in there that were mostly just cleanup or adding comments. Hey, it’s an easy commit and I figure that if keeping the streak going encourages me to do some cleanup that I might not otherwise have done, that’s only a good thing. At least I’m thinking about the projects every day and making some small contribution.

Then it really started to get hard. Some days after committing some code I would deliberately leave some more to commit the next day. Some days I would be up at 11:30pm, exhausted and desperately wanting to sleep, trawling through my repos looking for low-hanging fruit so I could commit something and go to bed. Luckily, my partner was really supportive of me—I remember one time she put a fight on hold for me so that I could make a last-minute commit just before midnight. The 100 day milestone came up while I was on holiday, still committing some code each day in between spending time with my partner’s family.

But that’s not the worst of it. The moment I truly realised that the commit streak was starting to control me was not when I thought about the things that it made me do, but the things that it made me not do.

Right from the start, I decided to start blogging alongside growing my streak and chose to host my blog as a GitHub page so that blogging counted as a contribution. I could have gone with Jekyll, but I decided to roll my own blog with hand-written JavaScript as a learning exercise. And sure enough, it gave me an excuse to get some easy commits by tweaking the blog a bit or adding some features. But it was so tedious, I had some things I wanted to blog about but didn’t because hand-writing the markup for the posts was so painful (I never did get around to writing that markdown parser or syntax highlighter).

Eventually I started posting on other platforms, and only continued to post on my GitHub page because I would get contributions for it. Actually, the only reason I didn’t delete the GitHub page was because I would lose past contributions for it. And then I realised I have a few other repos on my GitHub that I only created to get a few easy commits out of, but that never lead anywhere.

I wanted to delete them, but I couldn’t.

The truth is, I’ve wanted to end my streak for a few months now. More than once I’ve sat there at 11:45pm with no commits, thinking “today’s the day I finally do it”. But I always talked myself out of it—or actually a few times my partner talked me out of it.

But now that it’s been taken away for me, I feel a huge weight lifted off my shoulders. I don’t have to be enslaved by the number any more. I can go on committing code when I feel like it. And sure, that’ll probably still end up being most days, but perhaps some days I’ll have something better to do. And I can finally delete those useless repos now. Actually I imagine that by the time you read this, if you check my GitHub profile my streak will be broken up from deletions.