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, thus, NaCoWriMo...
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...
Now to come up with a project. And a reason to think I'd be able to pull it off while going through an end-of-release crunch at work :-)
October 17 2004, 17:45:46 UTC 7 years ago
I will cheer for you as you code, if you will cheer for me as I write. I'll be doing NaNoWriMo for the second time this year.
October 17 2004, 20:10:35 UTC 7 years ago
For example, PermaBEEP (my Java BEEP implementation) was written in about a month, and is somewhere around 25k lines if you include the unit tests. (Perhaps half that if you only count "functional" code.)
This was a huge amount of work, but was eminently possible because I was implementing a library for which one side (the wire protocol) was completely specified. (Well, I did find some ambiguities in the RFCs in the process, but Marshall was very quick to respond.) Without a clear goal I might have written that much code, but not had that much at the end.
I consider myself a skilled developer, but certainly not anything that far out of the ordinary. 25k lines is a big project, so I would put that in the same class as if I were a skilled writer, writing a 1200 page epic. 6k lines seems a fair comparison (within an order of magnitude ) for an average novel.
Wouldn't want to have a day job if I were going to attempt that, though.
October 17 2004, 20:18:45 UTC 7 years ago
Between the lines...
Is this comparison fair?I would want to read the actual method of making this estimate, but this comparison seems way off at first glance. A single grammatical error, spelling mistake, or lackluster metaphor in a 50,000-word novel would have no effect on the whole; in a piece of code, such a flaw might make the whole fail completely. I would guess that an equivalent length of code would be well under 1000 lines; the 50k-word novel is intended to be quite short for its genre.
The primary difference is that a novel is declarative thought, whereas a program is executive thought. I would question whether the two are not vastly different.
October 22 2004, 21:11:11 UTC 7 years ago
Re: Between the lines...
Mmm, having 6000 lines of code fail *entirely* due to one error means that it's been built with tools and components that are way too fragile for the task - like building a transmission out of Lego, or something. As for declarative vs. executive, I'm not convinced, but I'll have to think about it some more to articulate why. My original thought was that a novel is more linear and code is more deep-structured, but that has entirely to do with the style of the novel (and somewhat of the code) and I don't think it's inherent.I also want to emphasize that code is also for *human* readers, not just the machine...
October 22 2004, 16:35:08 UTC 7 years ago
October 22 2004, 21:02:09 UTC 7 years ago
October 23 2004, 00:47:15 UTC 7 years ago
Not NaCoWriMo. There's no reason to limit this to one country.
GloCoWriMo.
October 31 2004, 20:21:30 UTC 7 years ago
CodeMonth Launched
October 30 2006, 20:21:50 UTC 5 years ago
My wife will be doing NaNoWriMo, and I have a personal inventory management system I've been making glacial progress on for the last year or so.
I'm going to run with this idea of a code milestone of 6,000 lines, but would have to also include a "line equivalence" for stuff like UML and real research time.
Like novel writing, spewing code lines for the sake of it almost always means coming back to delete them later, and often means having to repair other sections those lines broke.
November 12 2006, 05:43:51 UTC 5 years ago