Olha eu diria que geralmente quando damos de cara com um problema mais denso como você comentou é normal (talvez até fundamental) pensar um pouco antes de começar escrever o código.
Com a prática o que provavelmente vai mudar é o tempo que você precisa de parar para pensar em como resolver o problema.
Mas talvez estudar um pouco de lógica matemática possa ajudar.