Thursday, 19 November 2009

more pipeline hacking

There's a constant tension between wanting to make everything work as a single "go" operation and having things be broken down into nice interchangeable modules that you can later isolate. When building the "go" button, you don't always have a good idea what the modules are (well maybe you do; I certainly don't) and you only discover them after the fact. So say your big go button does jobs A B C and D. And later on, you discover that you need to factor out components B and C into a separate standalone utility.

Now what?

Now you're stuck: you need to get the job done NOW so you probably create the module by doing some copy+paste programming. No time to think and do the job right, just get in done, go. But of course you're just creating more misery for down the road because in doing copy+paste programming you've created duplication and we know the lesson from being bitten over and over and over by it:

duplication is the root of all evil

But what else are you going do? Well you could take your time to do things right, but that's not necessarily the right answer either. First, there's always deadlines looming. Second, sometimes the only way to discover what the "doing things right" means involves doing them wrong a few zillion times until your brain gets the idea.

Right, let's get to it...

Then later on we're going to have to address this most heinous duplication between the B+C mini-go operation and the big go operation. I'm sorry I keep writing about the same thing over and over again; it's just that I haven't found the words to say this concisely and precisely yet. I haven't figured out how to drive straight to the heart of the matter.