---
title: "Programming Momentum"
date: 2016-12-31
author: Matt
url: https://www.mattwarren.co/2016/12/programming-momentum/
---

# Programming Momentum

Writing code everyday has been an interesting challenge.

In 2015 I started to work towards a long streak on GitHub which eventually capped out at 250 days. The questions I wanted to answer was:

- Can I apply ‘[deliberate practice](https://en.wikipedia.org/wiki/Practice_(learning_method)#Deliberate_practice)‘ to programming and get better?
- Can ‘free coding’ (like [free writing](https://en.wikipedia.org/wiki/Free_writing)) be effective way to push through writers block?
- How important is memorising to your coding performance?
- If syntax and API unknowns don’t present bottlenecks to your flow how fast can I translate an idea into code – can it be limited by typing speed?

I started [a repository](https://github.com/mfwarren/FreeCoding) for my daily coding.  It had a simple script to generate a blank file everyday for me to code in and I would try to code something.  Sometimes it would be to explore a new python module, or fiddle with syntax, or challenge myself with a [rosetta code](http://rosettacode.org/wiki/Rosetta_Code) example or replicate a previous day’s code from memory.  I wrote dozens of Flask apps, memorised the methods of lots of APIs, and gained a level of confidence with writing Python that I don’t have with any other language.

At the end of the streak I had a repository with hundreds of small scripts.  Only a handful of them were multi-day efforts or had any real value.  The variety of this collection proved to be useful on it’s own too – several times I have referred back to these examples to help with my actual work and to copy/paste snippets from.  Some of them started me down a path of exploration – like calculating the return on investment for solar panels.

Part of what enabled me to maintain this streak as long as I did was a simple script I wrote to check GitHub for daily activity and email me if I hadn’t yet committed any code.  This simple hack was enough of a reminder to keep me focused even when I was otherwise distracted.

This past week I turned that script into a web service anyone can use.  [CodeStreak.io](https://codestreak.io) will watch your public github activity and email or SMS you if you haven’t yet pushed any code for the day.  This is the first project of 2017 that I plan on building to expand on my previous streak.

In 2017 I want to build 12 projects.  Each should be roughly 10-20 hours of effort and result in something that provides value for other people.  CodeStreak.io is an example of the kind of project that I want to undertake this coming year, but it is also a tool to help ensure that the momentum is sustained for 12 months.  Blocking out 4 hour chunks of time is a helpful way to really focus and be productive, but 4 hours once per week has been (for me) too sparse to maintain interest in something long enough to finish it.  A little bit everyday keeps a project on your mind.  Attempting to maintain a streak will be a tool to power through the bits that are otherwise uninteresting or difficult.  CodeStreak.io is a foundational tool necessary to accomplish my 2017 goal.

The questions I want to explore with this new goal are:

1. Without a concern for generating revenue can I just write cool things and get them out there?
2. Can I get deeper into something new and create something useful out of it with less than 20 hours of effort?
3. Can you get good at seeing a project from start to finish – what skills or traits will improve the odds?

Hopefully, I’ll have some answers at the end of 2017.