Serendipitously enough, the first Throwing one out was written the morning before the following incident.
We’d reached a point on the project at work where it felt like we were wading through thick mud and our architecture choice in SOA was biting us in the behind in every way possible. We were on the brink of implementing some serious monkey-patching to the system which smelled like a very significant design compromise.
Just after lunch, Dev Lead had an eureka moment – we were doing it all wrong. Data and computation were place much further apart than they needed to be! Which basically implicated a “throwing one out” event, and a complete rewrite.
Sure, it’s a lot of effort flushed down the drain, but one can’t overlook the fact that a rewrite with the benefit of a first implementation makes for a far more robust and well-designed end product. At least I’m feeling a lot more confident building it the second time round.
Cycling buddy of mine offered some sage words of advise with regards to bicycle ownership when I was first getting into cycling.
“Start with a cheap bike. Make every mistake possible on it, then upgrade.”
It’s nice, because of the emphasis on learning rather than getting it right the very first time. And it probably is relevant to far more than just bicycling.