In late 2017, I was the manager of a team of infrastructure software developers. I was having a difficult time at work finding time to learn and grow technically, which created a deep longing to do more programming and learn something new. I settled on trying out Rust.
I spent a couple weeks during vacation at the end of 2016 learning and making commits in Rust. After I got into a routine, it ended up morphing into a sort of personal goal to be active on GitHub every day in 2018. Here’s the outcome:
I did something almost every day. If you look closely, you’ll see three unfilled squares. I don’t really understand the first one. I am pretty sure that it was originally green. The second one was a day that I simply forgot to do something because I spent that evening in a long conversation with a friend. The unfilled square from December was a day that I was ill and feeling really poor. I didn’t have the energy to do anything that day.
I made 909 total contributions, by GitHub’s count, and that’s far fewer than I would have done if I worked somewhere using GitHub. My annual activity counts in the years I worked at Walk Score eclipse 909, for instance. However, most of the past year’s activity was done after hours, and I’m very satisified with what I accomplished.
Most of contributions were to rust-lang/rustfmt (Rust’s code formatting tool), rust-lang-nursery/highfive (code that helps ensure that PRs in Rust’s various repositories are assigned to someone), this blog (which was moved to GitHub Pages in 2018), and several personal repositories. The personal repositories included “learning repositories” where I committed code when doing exercises and some community helper repositories for Rust. Those were davidalber/rust-conduct-conformulator and davidalber/rustfmt-travis. Beyond that was a smaller number of contributions to a variety of repositories (Rust-related and otherwise), some PR reviews, and a relatively small amount of activity on Walk Score.
While I didn’t game the system (at least by my standards), it is easily gamed. Someone interested in “farming” green squares, could create a bogus repository and just make some useless commit once a day. I’m sure we could dream up more creative ways to farm, but you get the idea. My main point here is that you probably shouldn’t read much into someone else’s green boxes. It was a personal accomplishment for me, and that’s good enough.
The closest I came to cheating was to update dependencies in a project (often the blog) on days that I had trouble finding time to do more. That was still in bounds for me, if done infrequently, but that’s about as close to useless that I consider legal.
I got a lot out of this year of activity. First and foremost, it gave me the motivation to do something almost every day. I started contributing to other projects for the first time, and I satisfied my need to learn. I also wrote a lot more on this blog in 2018 than I had in many years or perhaps ever.
The biggest downside of the box-a-day goal is that it created more motivation to focus on smaller tasks. It was difficult to routinely find time to work on projects on third-party repositories that required several days to pull together because I also needed to make a contribution each day. I did manage to put together projects like that in some instances, but there was always the push to get the daily activity.
Of course, a bigger project that takes several of my evening work sessions to complete is daily activity, but the little green boxes don’t necessarily see it that way.
So what about 2019? Just due to routine I’m sure I’ll still be filling a lot of boxes for a while, but I’m not going to make it an explicit goal to get activity each day. I want to be active, but I don’t want to find myself awkwardly limited from working on bigger projects because I can’t do that and make boxes green. Also, I do actually have interests outside of making contributions on GitHub. I may pursue those sometime!