Writer's block
Tim King
timk at jtse.com
Fri Mar 4 13:19:27 EST 2005
I've experienced a few types of software writer's block. One happens
when the piece I'm working on is too complex. I'm trying to think about
too many interrelated elements at once. I can't decompose the problem,
and I don't even know where to begin.
Since I've been using test-first programming, this type of writer's
block is rare. Even with a complex module, if I can describe any thing,
any feature, no matter how simple, that the module should be able to do,
I can write an automated test to demonstrate that feature. If the test
won't compile, I stub out any missing functions. I run the test and
watch it fail. That way I know the test works. Then I write just enough
code to make the test pass. Repeat with each feature the module must
support until all tests pass. As a bonus, I get a suite of automated
unit-tests I can use for regression testing.
The analogous block in writing prose (or poetry) is that I know what I
want to say, but I can't figure out what pieces I need to say it. I'm
trying to keep all the components in mind at once, and it isn't working.
But if I can think of one thing I know I want to say, I can just write
it down, which is typical advice in this situation. I can always go back
later and rewrite the piece later.
Likewise, in programming, with unit-tests in hand, I can always go back
and refactor the code without breaking anything. So I don't have to be
afraid of writing whatever code happens to make the latest test pass,
even if it's ugly. I can always pretty it up after I get it working. And
I do, before even going on to the next feature.
I've also run into the common situation where I just can't think of
anything to write. Usually, just picking anything will usually get me on
a roll. Ideas are a dime a dozen. Bringing them to life is the creative
process. I'm talking of software here, but this happens when I write
stories or papers or poems or lyrics, too. If I need an idea for a
story, I can just start with something from my log or from an email or
any random thought that occured to me through the day. Writing code, I
start by writing the easiest test, or any test, that I know the module
will have to pass.
Another form of writer's block happens when my mind is so tired or bored
that I just can't motivate myself to type. I know what I want to say,
but I just can't get the words out. Or they come out in dribs and drabs
(s/words/code/). Taking a short break, preferably in a dark, quiet place
sometimes helps. In the latter days of YCRDI, when I worked there, we
had a number of vacant offices back in the wee recesses of our office
space. I would go all the way to the back, back room, shut the door,
turn off the light, and sit on the floor in the dark until funny images
were no longer swimming before my eyes and I could hear the faint sound
of the air conditioning.
You're right, Mark. Both writing software and writing prose are creative
processes. And so it stands to reason that writer's block would apply
equally to both.
-TimK
--
J. Timothy King ..team-oriented..object-oriented..Agile..
www.jtse.com ..C++..Perl..Java..assembly..embedded.systems..
More information about the Discuss
mailing list