SPUG:Designing Programs

Michael R. Wolf MichaelRunningWolf at att.net
Sun Jan 19 23:55:25 CST 2003


Andrew Wyllie <wyllie at newsof.com> writes:

> Hi Asim,
> 
> On Fri, 10 Jan 2003, Asim Jalis wrote:

[...]

> > Do you draw diagrams? 

[...]


[...]

> ... Once I feel like I have enough pieces and a good
> idea of what's going to be easy and hard, I start to draw out
> a large diagram that shouws how all the pieces will fit together.
> (Literally large, I go down to the local artist supply store and
> buy a big pad of 14x17 drawing paper).  The big picture diagram
> basically becomes the test environment for my requirements doc.
> So each feature/function I need my app to do can be traced through
> the big diagram.

As a technomad, I was developing in Florida, collaborating with a
collegue in Maryland to deliver a product to a client in New Jersey.

I am a very visual person.  When I have an office, I think on the
white board.  Alone, and with a collegue.  Pictures are worth....

Well, while in Florida, I didn't have an office, so I went to Office
Max and bought a *roll* of white paper, some colored markers, a box of
crayons, and some tacky putty.  I tore off a bunch of similar sized
sheets, stuck them to the walls, and started doodling.

The main program had a sheet.  As I'd flesh out the main module,
another module would suggest itself.  That new module would get a new
sheet, and usually a different color.  Step-and-repeat.  As I found
holes, I'd pick up the correct crayon or marker and go scribble on the
wall.  Big pictures made a lot more sense when the pieces were in
different colors, and especially since I could see them from my
keyboard.

module A -- Color red
module B -- Color blue
module C -- Color green

I was traveling with Wendy, a non-Perl coder, but a critical thinker,
nonetheless.  For lack of a Perl coder, I'd bounce the design off her.
If I could make the colors, and lines and circles and diagrams (that
would be used against us....:-) make sense to her, it was time to use
them as the basis for the initial version of code.

Becuause this was a data munging problem, I had lots of data to
analyze.  The crayons came in very handy then, too.  I'd color code
the output.  Turns out there were recurring values of gain, voltage,
current, frequency, etc...  Each dependant and independant value would
get color coded.  From a distance, I could see the patterns emerge in
a way that I couldn't before.  I'd also tape the data together to form
scrolls that I'd hang on the wall, floor to ceiling.  There's
something to be said for standing in front of your data instead of
shuffling through it.  I've always wanted a wall size display!!!  To
heck with 10" or 14" or even 21" displays.  I want an 8'x10' section
of wall!!!!  I'll probably live long enough to have computer
controlled Organic LED wallpaper.

Oh, yeah!!!  Walks.  Lots of walks.  I meditate (and create) while
walking.  (Some folks do it by sitting, BTW.  Don't get duped into
"sitting" to think if you're a walker!!!)  The beach was a great spot
for doing that.  I used to "clock out" to take a walk, but soon
realized that much of my creativivity was unleashed as I walked.  I'd
get to a certain spot in the paper process where I couldn't do any
more.  I'd go for what I thought was a "break", but found that it was
just a different "phase", because when I got back, a lot of unsolved
problems (and even unrealized problems) had been solved.  I no longer
"clocked out" when I took those kinds of walks.  Pretty cool to be
billing while walking ankle-deep in the surf along Cocoa Beach.  Ah,
those were the days......

Lest you think this is too indulgent, I am sure that I got more done
on those walks than I did while on-site.  They ran a manufacturing
operation co-located with the development staff.  Manufacturing lines
require real-time interrupts.  Software design requires long chunks
(30 minutes - 4 hours) of uninterrupted focus.  While on site, it was
impossible to get 30 minutes uninterrupted time.  Six times 30 minutes
is not equal to 3 hours!!!

Paper, markers, crayons, lots of space, sun, fresh air, unconstrained
thinking time -- the makings of a creative environment.  And the best
OO architecture I've ever co-developed.

-- 
Michael R. Wolf
    All mammals learn by playing!
        MichaelRunningWolf at att.net




More information about the spug-list mailing list