Sunday, February 05, 2006

(Code) Writer's Block

I am supposed to be redoing a project I completed almost 3 years ago but I've caught (code) writers block. This is first time it's been this bad. I mean I'm really, really, really, mentally stuck. So far I've completed 99% of my data storage design and I've got a few notes (to self) and requirements jotted down in a text file. I've written only one class. I managed to squeeze the one class out as a matter of trying to break my writers block by writing something, anything! It wouldn't be so bad if the one class was one of the central classes of the system but it isn't. It's not even close. It's a throw-away class.

The way things normally work is once I have a general idea what a program is supposed to do my brain will formulate an outline. I then code the outline, test, and refine. Sometimes I rip all the current code out and start from scratch with an entirely new design based upon whatever knowledge I gleaned from the old design(s). The point is, once I know what the program is supposed to do, some other part of my brain take over and I find it easy to write code. Today that hasn't happened. I know what the program is supposed to do. As a matter of fact, I've known what the program is supposed to do for years, yet I'm stuck like a woolly mammoth in a tar pit. But I'm not giving up.

I know what you are thinking. "Why doesn't he just use the old code as the basis for the new code"? I can't. Most of the old code got destroyed due to human error and shoddy back up media. What I have been able to salvage, other than the UI, is useless to me because I'm going in an entirely new direction this time around.

Since I can't figure out how to write the meat of the program I'm going to try doing the UI. The problem there is I'm graphically challenged. For some reason I'm incapable of conceptualizing graphical user interfaces. Color, positioning, icons, etc ... forget about it! My brain cannot construct a mental image of what a GUI is supposed to look like. A few weeks ago I was browsing the Ubuntu Linux website when I came across this requirement specification document. Throughout the spec the author had images of hand drawn pictures of what the UI would look like. My jaw dropped. I was absolutely impressed and green with envy. Not because the drawings were drop dead gorgeous or anything like that but because he is able to manifest his thoughts in pictures. It's easier to discuss something that is graphically represented than something that is not.

The good news is most of the screens already exists. The original project netted 4 screens. This version will net 7. In the original version I had very little to do with the design of the screens other than to approve them. In this version I'm hell bent on overcoming my GUI handicap by tweaking the original 4 and doing, from scratch, the remaining 3. So dear reader, if know of any good places for the graphically challenged to learn design with XHTML/CSS, please leave me a comment. In the meantime I'm going to cruise over to A List Apart and see if I can't learn something. I'll keep you posted on my progress. After all, this is a blog about my design decisions.

1 comment:

  1. Anonymous9:49 AM

    This is a post that is interesting to me. I have the opposite problem. I can easily come up with the GUI pieces but get "writers block" quite a bit when it comes to hammering out code. I stumbled across your article googling for tips and tricks for getting started with a coding project when you're having trouble.