I was just talking with my roommate about this last night. I think the most important realization is that it is impossible to only use Structured Thinking to make your decisions and that I was wrong to think I ever was. The way I see it, structured thinking allows you to outline all of the pros and cons of the various options in front of you (which then drives creatively coming up with other possible solutions) but that those pros and cons are often not directly relatable, so your decision as to which pros and which cons you will ultimately fulfill is impossible to make perfectly "logically" and instead is made somewhat intuitively. This is "going with your gut" and is a required part of every decision we make.<p>Somewhat more concretely: Let's say I'm trying to solve a specific problem for my product. I want to add a new, already designed, feature to my app. There are many many different ways this feature can be implemented. Thinking in a structured way helps us enumerate the various different properties of these options. It requires logical/structured thinking to work through "if I implement API expansion only for has_one associations I can do this in the framework of the rails serializers I am already using" and "if I choose to accommodate has_many associations as well I will need to rewrite the code that now uses serializers. If I rewrite that code, I know that it will require more testing and will probably introduce bugs" So here (obviously incompletely) logic has helped me think about all the consequences of the various different options, but there is no way to mathematically relate "increased code complexity" vs. "solves the problem more completely" vs. "principle of least surprise" vs. "principle of immediate feedback" vs. "performance" vs. "code readability" vs. etc. The phrase is, "apples and oranges"<p>So now that I can make many logical arguments in favor and against a number of different paths forward, a decision must still be made. And it's hard for me to see how that decision is "logical" in any meaningful way. We obviously have heuristics for saying that "in general, something that impacts the user negatively is more important than the code being ugly" but these hierarchies are always fuzzy and they shift depending on the situation. Ultimately, when you choose which path to take, you are choosing which pros and which cons you believe to be actually most important in this moment.<p>So, logic is an important muscle to work because being better at it gives you access to more complete information about what all the possible consequences of all the possible actions are. But then, going with the flow is also important to practice, and getting better at it I think really comes with practice, because the more decisions you make and observe the outcomes of, the better you will get at having a sense of what the true balance of these apples and oranges should be.<p>Sort of an aside, but i've noticed recently that in many of the discussions I've had at work designing features the arguments rarely become heated because of the following:<p>Person Alpha: "Well A implies B implies C, C is bad so we should not do A"<p>Person One: "Actually A does not imply B, therefore your thinking is wrong"<p>When someone is wrong in a very discrete logical way, it's easy for the discussion to adapt and move forward. However, the more common way for things to get intense:<p>Person Alpha: "Well A implies B implies C, C is good so we should do A"<p>Person One: "Well X implies Y implies Z, Z is good so we should do X"<p>Person Alpha: "Well, C is a more important gain than Z, so we should do A"<p>Person One: "No, Z is more important than C!"