Boston Linux & Unix (BLU) Home | Calendar | Mail Lists | List Archives | Desktop SIG | Hardware Hacking SIG
Wiki | Flickr | PicasaWeb | Video | Maps & Directions | Installfests | Keysignings
Linux Cafe | Meeting Notes | Blog | Linux Links | Bling | About BLU

BLU Discuss list archive


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Writer's block



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..




BLU is a member of BostonUserGroups
BLU is a member of BostonUserGroups
We also thank MIT for the use of their facilities.

Valid HTML 4.01! Valid CSS!



Boston Linux & Unix / webmaster@blu.org