One of the things you need to do when programming is know when to say that the architecture you’ve built up isn’t working.

Almost any system has certain degrees of flexibility built in. Working within those constraints is relatively easy. When you bump into something that doesn’t fit well you tend to run into some issues.

But when you push well beyond the design you get into a spot where you fix one bug and in doing so you create another one. You fall into an endless loop of bug fixing that you’ll never finish.

And that’s what we ran into.

A faulty design that can’t work… that looks like it could work… and bugs are getting fixed. But you get constant regressions as well.

You have to know when you’ve gotten to just chasing your tail and think what a cost of a redesign would be compared to running on the endless treadmill just chasing your tail.