📆 I was going to call this post “101 days of coding”, but that would be misleading. I’ve been getting paid to write code as a web developer for over 2 years now, but over the past 3+ months I’ve been writing code in my spare time - after work, after chores, after slobbing in front of the TV - and then committing and pushing it to GitHub. The really weird and pointless thing about this is that I’ve done it every day since the 1st of January this year and now I have a pretty good streak, just look at my GitHub scorecard:

A 101 day streak on GitHub


❓ Why??

  • Because I am a sucker for gamificiation - I 💛 seeing those little squares go green and watching that streak getting bigger and bigger each day. (you may have come across this before as a trick to build a habit called Don’t Break the Chain)
  • Because I genuinely enjoy coding - this isn’t a chore or obligation for me and I still enjoy developing even after doing it all day at work.
  • Because this is my time to learn new things - there’s always something new to learn in web development (I’m a frontend developer) and it’s important to keep on top of things. I don’t get time to try out the latest thing at work because … I’m at work, doing my job. It’s a given that you have to swot up in your own time in web dev. Putting all my experiments on GitHub means they’re available for future reference.

The gamification of the GitHub scorecard feature has helped me build a regular habit to study and code a little each day, and to get side-projects and practice apps to a reasonable, useful state instead of discarding them after 30 minutes when the new technology becomes mildly challenging.

‼️ How?

I’m on my computer every day anyway, so it’s not a big stretch to close Twitter and open Atom instead and write some code.

I don’t write 1000 lines a day: some days I’ll make 10 commits and on others I’ll only have time for 1. Most nights I’ll spend between half an hour to an hour coding. When I’m short on time it might be something that doesn’t involve too much thinking, a task I’ve done before like adding code coverage to a project, or tinkering with styling. And remember time spent coding is not proportional to the lines of code written (especially if you’re debugging! 🐛), nor are all commits created equal. The rule is it must be substantial and tangible enough to be worth a commit!

⁉️ But, why? Who cares?

No one cares but me! I’m fully aware that having a streak on GitHub doesn’t make you a good coder, or make you perform better at your job, or imply anything at all about your skillset, but I’m finding it a huge motivator for me to stop procrastinating and frittering my time away on social media and instead to get better at something I 💜. It’s nice not to feel my brain dribbling out my earhole while watching Netflix or scrolling through a newsfeed.

The small bit of work that I put in every day (e.g. adding localstorage to a Backbone app, or adding multiple choice prompts to my Yeoman generator, or converting some ES5 to ES6) adds up learning a lot over time and has made me feel already, in just over 3 months, a much stronger and more confident software developer in terms of writing code and building apps from scratch, rather than just “knowing” about that technology and never having got my hands dirty. None of the apps or projects that I’m working on are going to change the world or make me a millionaire: they’re just hobby projects that I use to hone my skills.

Don’t worry, I have a healthy balance between real-person relationships and IRL activities and my computer. My other half is aware of my current streak, but it’s not that hard or disruptive to take 30 minutes out of a day and sit on the computer and it doesn’t stop me from fulfilling any other commitments. How much time do you waste on Twitter and Facebook already?

I haven’t got an end date - just look at John Resig’s over 2 year streak! - I’m just taking it one day at a time. 🌞

:memo: What I’ve worked on in the first 100 days

  • this blog
  • a Yeoman generator to build Jekyll posts for my blog
  • published 5 npm modules, including CLIs in Node and ES6
  • fully tested said-modules and set up continuous integration and code coverage (but all my code backed up by unit tests as standard, and yours should be too! 😁)
  • Backbone apps (my Backbone knowledge was null on 1st January)
  • a package for the Atom text editor using CoffeeScript
  • web scraping with Ruby