October 31st, 2004

classic beard
  • eichin


November is National Novel Writing Month, sort of a "group therapy for creative people" where people commit to writing 175-page (50,000 word) novels, from scratch, in one month; they've run for several years, and last year 3500 of the 25000 participants actually finished novels (one of whom has, a few rewrites later, not only been published, but won an award for her work.)

A recent thread on one of the scheme-loonies lists brought up the point that coding is like thinking but doing it rigorously enough to take notes; an unrelated discussion of writing talked about deeply imagining a world, and then writing it all down. Other thoughts on the use of code to communicate with other coders (rather than merely computers) swirled around that - and if, in an expressive language (like scheme or python) a line or statement is approximately a sentence (there are pieces of code where statements are more like paragraphs; like Kafka, they are extraordinarily difficult for the reader, and not a widespread approach) we can simply consider the "novel" to be the equivalent of roughly 6000 lines of code.

Is this comparison fair? If so, only by accident. At first glance, I'm not sure what, in the abstract, writing 6000 lines of code in a month really means. Mark Pilgrim's feedparser, eikeon's rdflib, and one of my larger document shuffling subsystems at work are all around half that, and they all have a lot more time in them -- though I suspect they all have in common a big up-front burst followed by a bunch of smaller changes. I've written about 7000 lines of personal code in my python-learning efforts over the last year, another 9000 in QA support code - so writing 6000 in one month would be a bit of a sprint, but not insane, at first glance.

NaNoWriMo is at least partly about giving oneself explicit daily pressure, to help get one's stride, to get the words *out* instead of continuing to meditate on them. Arguably, it's an explicit "bias towards execution". Perhaps the equivalent for software works too - and the way to find out is to try it.

This all assumes you have something interesting to code; so what do you do with it once November is done (aside from, well, using it)? Well, you'd then have two weeks to prepare a submission for CodeCon, which is certainly quite the audience...

Note: this was originally referred to as NaCoWriMo, but as obra pointed out, "Why make it US-only?" Since GloCoWriMo and IntCoWriMo have evil rings to them, and we're doing engineering, not poetry, I'm just going to call it CodeMonth.
classic beard
  • eichin

How does this work?

  • Come up with a project. Something for which a month of medium-strength coding will suffice, something you can add some code to every day (or at least every weekday - this is not about weekend projects, this is bigger than that.)

  • Post a response to the "Start Here" posting, describing your goal. (Try to do this on Monday, 1 November; if you find this late, that's ok but after Friday I'll probably close it off.)

  • Get going! Don't let a day go by without coding. I'll try to add inspirational suggestions here. If you get stuck, and need suggestions, post about it.

Other thoughts: if you want to find coding buddies ("will meet in X coffeeshop at Y time, for an hour, to occupy a table and work - not talk, or collaborate, but maybe keep each other from surfing or newsreading, and keeping other people from interrupting to share the table") or such, that would be good to post too. I'll also try and do milestone postings.