On Live Coding

Videos of programmers working.

I read somewhere that part of the popularity of The West Wing was that it was entertaining to watch smart people solve difficult problems. I think that’s part of the reason why I find watching live coding videos so entertaining - It’s more fun to watch someone solve a problem than doing it yourself.

There are plenty of screencasts you can find - YouTube is an obvious one, but don’t forget Vimeo.

Some good ones to watch are the Play-By-Play series produced by Peepcode These screencasts have a developer solving a problem set by the host as he talks to them about the choices they make and the tools they use. Mostly Ruby / Railsy, but there are exceptions - Zed Shaw and Python, Ryan Singer designing a UX workflow for the Web, Kyle Neath on UI Workflow, and the latest has Tim Caswell creating a node.js web app.

These are not only interesting screencasts, with plenty to learn from, but I find they are great for background noise. I work at home, and having the sounds of a keyboard clacking and techy conversation pushes back the silence. Also, when you look at a tutorial type blog post - or something on GitHub, all you see is the finished product. But when you watch someone working, you realise that it doesn’t come out fully formed like that, it sort of evolves. The same way that you evolve code.

I did my own small one about reversing words in Haskell a few months ago and I found that it’s harder to do than it looks. I credited Jonas Tullus as an influence for that screencast and now see that he has started Coding Uncut, where he takes on a problem and screencasts his solution in Haskell. This is harder to do than the Peepcode ones, because without anyone asking you questions you become more self-conscious about vocalising your thoughts.

Some of the things I’ve picked up from watching these are:

  • It’s okay to spend your time looking up the documentation. Knowing roughly what approach to take to a solution and then looking up the details is more important.
  • It’s faster to try something and see what happens rather than overthinking everything from the beginning.
  • Version control is not an optional extra (okay, I already believe this, but it’s nice to see that I’m not the only one).
  • It’s not the tool that matters - Emacs, Vim, JEdit, Paper and Sharpie - but how you use it.
  • “It’s not about the code. It’s your understanding of the problem that you’re working on.” - Zed Shaw