_Mark_ ([info]eichin) wrote,
@ 2004-10-17 19:13:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Current mood:lightly addled
Entry tags:code

NaCoWriMo?
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 :-)




(Post a new comment)


[info]cjsmith
2004-10-17 05:45 pm UTC (link)
I like this idea. I think complexity is a far better measure than lines, although it could be argued that number of lines ideally scales with complexity. :-)

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.

(Reply to this)


[info]jered
2004-10-17 08:10 pm UTC (link)
6000 lines isn't outrageous as long as you have a directed goal.

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.

(Reply to this)

Between the lines...
[info]rjpb
2004-10-17 08:18 pm UTC (link)
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.

(Reply to this) (Thread)

Re: Between the lines...
[info]eichin
2004-10-22 09:11 pm UTC (link)
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...

(Reply to this) (Parent)


[info]obra
2004-10-22 04:35 pm UTC (link)
I missed this post first time through. I really, really like the idea. Conveniently, I was already planning on doing this. Can I get an exception for already having done a bit of architecture (last week)?

(Reply to this) (Thread)


[info]eichin
2004-10-22 09:02 pm UTC (link)
I think the key is to do the *coding* that month - after all, some of the writers have been thinking about the story they're trying to write all their lives, and this is just kicking them over the edge.

(Reply to this) (Parent)


[info]obra
2004-10-23 12:47 am UTC (link)
Also,
Not NaCoWriMo. There's no reason to limit this to one country.

GloCoWriMo.

(Reply to this)

CodeMonth Launched
[info]eichin
2004-10-31 08:21 pm UTC (link)
[info]codemonth is inaugurated, based on this idea. Time to see if it gets any traction...

(Reply to this)


[info]vees
2006-10-30 08:21 pm UTC (link)
Nice to know that someone had the same thought that I had today, except two years prior. :-)

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.

(Reply to this)


[info]eichin
2006-11-12 05:43 am UTC (link)
Note that there's now a [info]codemonth codemonth community (and codemonth.org shortcut reference) though it hasn't gotten much response this year, it *is* a place to post progress reports and do "motivational stuff".

(Reply to this)


Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…