Lessons From 253 Days of Consecutive Freecoding

My recent camping vacation is what broke an epic 253 day streak of github commits.  Overwhelmingly this activity was a daily practice of freecoding to see first hand just how effective it could be at getting better at programming.

Freecoding is based on a writing technique called free-writing which is supposed to get the juices flowing and eventually lead to you developing a faster thought to fingers connection for getting your ideas out.  It is a popular practice for authors, but has never become something that programmers took up.

With a bit more extensive experience now with the process and it’s effectiveness I can draw some conclusions about how it works and where the difficulties are.

By far the biggest difficulty is trying to think of something original to write every day.  Unlike story writing where you can ramble out words with markov chain like inspiration, the strict syntax of programming forces you to think ahead about what you want the program to do.  I also found it psychologically difficult to finish a program that had syntax errors.  Finally, writing a script is not always easy to to linearly and jumping around the code provides an interruption that can stop the flow of thoughts.

There were a lot of positives though.

  • Finding interesting things to program everyday inspired me to keep a list of interesting projects and try them out
  • It gave me an excuse to test out things like how threading is limited by the GIL in python which I hadn’t run into with my job
  • was able to scour through the standard library and uncover some features that I now incorporate often into my code.
  • got a much better handle on parts of the language that I didn’t use often such as functional programming
  • took time to try some popular libraries in areas I don’t usually get to deal with (mathematics, graphing, and machine learning)

Through this practice I feel like my knowledge of Python was able to reach a new plateau.  Learning by doing and practising everyday is a tremendously good way to improve.

if you are curious what kind of code I wrote everyday for 253 consecutive days it’s all on my github account.