One of the heuristics I use to evaluate a solution is to look at how it handles changes. I’m thinking specifically about custom-developed IT software projects here, as that is my background. As you go along in the development cycle, there will be changes to your requirements. I use the terms “convergence” and “divergence” to describe the way the system responds to changes. If you have “convergence”, the changes should be straightforward to implement with minor code changes. If you have “divergence”, the changes require revisiting basic architectural assumptions, big changes in code, etc.
The way a project should go is that over time, the requirements become clearer and better understood, and the system and requirements grow closer. If you find yourself experiencing divergence, you have a problem. Either you have misunderstood the requirement and built something the customer didn’t ask for, or the customer’s idea of what they need has changed radically since development started. Either way, the natural tendency is to just double down and work harder. That’s not necessarily going to solve anything; you can’t code your way out of a requirements problem. Rather, you need to stop, sit down, and revisit the requirements, goals, and milestones, so that when you start moving again, you’re moving in the right direction.
In a very real way, it’s analogous to being lost in the woods. When you first realize you’re lost, your first instinct is to start moving as fast as you can in whatever direction you think is the right one. This is exactly the wrong thing to do. When someone starts looking for you, they’re going to start with your last known location, so if you wander off many miles in the wrong direction, you’re making things harder for your rescuers. Rather, the best thing to do is to sit down. Just sit down, let the panic pass, and make yourself easy to find.
In the software world, nobody is going to come by in a helicopter and show you the right direction. But by realizing that things are going in the wrong direction, you give yourself the opportunity to figure out what the right direction is, and heading there.