Or how I learned to stop worrying and just commit (code).

Ryan McNeely
Learn. Love. Code.
Published in
5 min readMay 29, 2016

--

I’m a sucker for points. Give me a point system and I will try to rack up as many as I can; I’m one of those suckers who loves the gamification of learning. As of this writing I’m almost to 80 karma points on Learn and am in “competition” with Shmully Wolfson (though I’m not sure he knows it). So with all that said I’m completely behind GitHub’s decision to kill commit streaks even though I know I’ll miss them.

My longest streak before I started Learn was around 10 days if I remember correctly. Like a lot of people who try to learn how to code I was struggled finding the time to devote to practice. Commit streaks were a way that I held myself accountable. “Remember to work on something, anything, and push it up today,” was something I told myself. That longest streak had been when I was working on using Jekyll to bootstrap a blog for myself. I slowly tweaked it and tried a few different layouts making changed daily. Even as I was using the feature the way it was (likely) intended I now realize that it falls short.

Starting out I was very worried that what I was publishing to GitHub needed to be perfect. The problem with that was that I was hardly able to write code. I would either push up tiny changes before trying something new, or I would revert back to what I knew was functional before committing while I worked on bigger changes. Git was to incomprehensible to even fathom trying to publish different branches, several of my commit logs are me struggling to even understand how to commit things! At one point I started BitBucket account simply because it was private, I felt that I could commit anything without pressure.

Commits and commit streaks, this thing that was never supposed to be measuring stick, has somehow become the penultimate measuring stick that we developers are judged by.

This of course leads to one of my biggest problems with GitHub when you’re just learning to code. GitHub may be the biggest game in town in version control, but not in learning. It is a terrible tool for beginning programmers to document their progress. While there are a number of different approaches to learning to code, everyone agrees you need to learn by doing, but not everyone has you commit your work to GitHub. I started a BitBucket account because that’s what the book I was reading at the time liked. Codeacademy has no external tracking mechanism. People can work privately and don’t always feel their code is publishable, I know I didn’t when starting out.

Now I’m still fairly new but I have always done a lot of reading about what I like to call “tech culture” the pop culture that surrounds development. I’ve read and I’m sure you have to the stories where someone just gets burned out. Their streak ends because they need to take a break. This should hardly be in indictment of their proficiency. But we also have the flip side to those stories where someone has a streak that lasts years. Then there are the “dark matter programmers” who aren’t active blogging or maybe even working on projects in their spare time because maybe development is just job not a passion. Commits and commit streaks, this thing that was never supposed to be measuring stick, has somehow become the penultimate measuring stick that we developers are judged by.

Inevitably a lot of the problems with code streaks came from people using them out of context. I’m not looking for employment yet but I know that recruiter’s have come to see commit streaks as a sign that someone “knows what their doing.” The common diagnosis is that this is done because recruiters don’t understand tech and its an easy statistic for them to latch onto. Whether that’s correct or not, it highlights the importance we’ve assigned to this false statistic. Hang around long enough and you’ll see things like Gitfiti, which I didn’t know was possible. This has been taken to the extreme with Rockstar. It would be incredibly naive to suggest that GitHub was unaware of these issues and the the meta around them.

Commit Streaks present different problems for depending on where you are at in your career. For someone just starting out they represent an imperfect picture of your progress. They account only for the work you have hosted on GitHub shared publicly. For those currently in the field they represent a biased flawed set a data with which we are unfairly compared. Given the wide spectrum of committing patterns on GitHub its little wonder why impostor syndrome is so prevalent when your metric is so flawed.

Ultimately I believe GitHub had little choice to remove commit streaks. They clearly don’t have an issue with the underlying “code everyday” mentality. Their blog post breaking the news about streaks also announced, “Starting today, you can also celebrate the work you do in private by sharing anonymized contributions from private repositories.” Now that private repos are unlimited and can be added a persons contribution graph we’re seeing GitHub experiment with a new way of categorizing contributions. Practically speaking the move allows GitHub the company to expand private repo’s and garner even greater market share while making positive changes to the community writ large.

Given the narrative around the web around the move its clear not everyone liked them anyways, TheNextWeb celebrated their demise with this post. Quincy Larson recently eulogized commit streaks in his post “Don’t break the chain.” I can agree with the sentiment, especially as a new developer. Yesterday was the first day I took off from working on code in several months to celebrate the Memorial Day and working everyday has been a big part of the success I’ve found. For as much as I will miss them I will not mourn the loss of our imperfect metric. Now if you’ll excuse me I’m going to start a new chain.

Photo by Maico Amorim courtesy of Unsplash

--

--

Ryan McNeely
Learn. Love. Code.

Sports and tech buff. Learning the ins and outs of web development. Armchair philosopher. Find me at @R_McNeely on Twitter