

Beautiful Programming Quote - palish

"If you're doing top-down design, you produce a specification that stops at some level of granularity.  And you always risk discovering, come implementation time, that the module or class that was the lowest level of your specification hides untold worlds of complexity that will take as much development effort as you'd budgeted for the rest of the project combined.  The only way to avoid that is to have your design go all the way down to specifying individual lines of code, in which case you aren't designing at all, you're just programming."<p><a href="http://72.14.205.104/search?q=cache:ysongopFAqIJ:gamearchitect.net/Articles/SoftwareIsHard.html" rel="nofollow">http://72.14.205.104/search?q=cache:ysongopFAqIJ:gamearchite...</a>
======
queensnake
Personally I kind of do it like an artist, not meaning to be pretentious, but
like an artist 'dabs' the spatially-defining features of a painting first,
I'll code or pseudo-code, first, parts that are the most 'interesting' or that
I'm most uncertain about. Thus I hit the bottom places that change the design
the most, early. At least that's the intent. I will still hit some unforeseen
detail that knocks some larger organization out, but, I do find that defining
the 'interesting' parts makes it that much easier to fill in the rest.

------
edw519
"The only way to avoid that..."

Uh, no. Another way:

top-down design + bottom-up programming

Roll it up to your target, allowing either to change as you go. Kinda like
squeezing an orange to get the juice without breaking it.

Apologies to Einstein...

"Top-down design without bottom-up development is lame. Bottom-up development
without top-down design is blind."

