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.