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.
Ótimo ponto!
Eu adicionaria que isso é uma coisa que se consegue com a experiência, então: tenha experiências (pratique).
Um site que me ajuda muito quando eu tô me sentindo meio ruim de lógica é o Hackerrank.