in reply to Benefits of the Specification
The really Bad Thing about not thinking about the application, is that every time you add something, something else will inevitably break. It's like those squishy tubes that you sqeeze and they fly out of your hand...an endless process of adding in kludges.
h0mee and I were driving around one night discussing breakage, and came to the conclusion that It's All About The Data. Knowing your data will be the difference between breakage, non-breakage; a maintenence nightmare, and a maintenence pleasure. For example, in Programming Pearls, in the first column, Bentley (the author) discusses an old school problem of sorting thousands of 1-800 numbers using about a megabyte of memory. They ran into some Really Bad time-space issues with certain algorithms, so they used a bitmap vector to map the data. It was a novel solution because it was engineered to the data. The problem is maintaning a symbiotic relationship between data and algorithm whilst preventing breakage. Verily, this is very difficult.redmist