Around late November, 2015, I made the somewhat arbitrary decision to commit something to Github every day. I’ve stuck with that habit for ~100 days now, which I think merits a bit of reflection as to how it’s affected my workflow and coding habits.
What were my goals?
I decided to go on a ‘code everyday’ regimen to increase the quantity of code I write, and the diversity of my projects. Before this, I had a cycle of feeling the desire to work on a project, or get something really substantive down in code, but then not having an in-progress project to contribute to. Starting is very often the hardest part, and without having a lot of ‘kettles in the fire’, I found it difficult to produce something tangible in half an hour. I’d spend that 30 minutes of coding time I could cut out of my day researching APIs or Frameworks, instead of actually creating something. To be fair, that’s not always wasted time. But, it was discouraging to go a week or two without feeling a sense of progression in at least one of my projects. I hoped that by doing something — even an insignificant addition — would lower the bar to ‘getting stuff done’ and would allow me to branch out a bit more in terms of the types of projects I was working on. Many of my pre-November projects were mostly scripts, which reflected where I was as a programmer. Competent enough to write one-time procedurals, but still uncomfortable with establishing a more robust project.
Was this successful?
Well, like many things, yes and no. It was successful in getting me to think about a coding project at least once a day, which was really powerful. Though I wasn’t spending all that much more time coding, I was allocating my time more evenly across my week which lowered the amount of time I had to take to ‘relearn’ my previous code. It also allowed me to feel comfortable diversifying the types of coding I was doing. In December, I did the “Advent of Code”, which was a light-hearted daily coding ‘challenge’. I also did a bunch of Project Euler problems, which strengthened my ability to think algorithmically, instead of always being focused on an end-product. However, I often struggled to think of something small enough in scope, yet substantive to be done in a solid ~30 minute chunk. So, some days my commits were fairly lackluster. Changing the formatting of my website, or making syntactic edits shouldn’t count, and I wasn’t really strict enough with myself to refrain from cheating a bit here or there. What I was most happy about over this time period was the OSX applet I made, TubeSync. It was a great project because it mapped a lot of the interest that I had in Python scripting to a usable desktop app. Also, it was the first project in several years that I’ve actually slapped a version number on and released as a binary for whomever wants to use it, which was gratifying.
Looking Forward
For the time being, I’m going to try to maintain the habit of doing something coding-related everyday. I think I’m also going to try to branch into contributing to open-source projects as a way to further diversify what I’m working on. Just in the past week, I’ve opened issues and pull-requests in a few open-source projects, and one has already even been merged. I think I’ve reached a technical proficiency where I feel personally comfortable working on small-ish FOSS projects without being too intimidated, and it’s gratifying to feel like your ability is being put towards a public good. So anyways, I’d say that the “Code Everyday” regimen has been a net positive. It’s been a fairly productive and fun 100 days!