Home
| Calendar
| Mail Lists
| List Archives
| Desktop SIG
| Hardware Hacking SIG
Wiki | Flickr | PicasaWeb | Video | Maps & Directions | Installfests | Keysignings Linux Cafe | Meeting Notes | Linux Links | Bling | About BLU |
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 | |
We also thank MIT for the use of their facilities. |