Em várias situações da vida, desafios podem parecer ser mais do que podemos lidar em um dado momento. Para o caso de sentar e aprender um tópico, nós temos o luxo de usar o tempo a nosso favor: nós podemos dividir um desafio grande em partes menores e lidar com cada tópico em separado, para amarrar tudo no final e resolver um problema.

Meu primeiro conselho para resolver um problema de programação novo é: olhe um exemplo semelhante. Procure as "fases" que compõe a solução e que tipo de informação é passada de uma fase para a próxima. Volte ao seu problema inicial e veja se vc pode estruturar sua própria solução em fases similares. A partir daí, pense em cada parte por si só, sabendo que seu objetivo é fornecer a informação que permite passar para o próximo passo. É natural perceber que vc precisa voltar um ou dois passos pra "resgatar" uma informação que não parecia importante antes.

Ah, e paciência sempre ajuda. Tem vezes que um problema fica na cabeça por diiiiias - e aí vc tem aquele estalo de uma nova ideia nos momentos mais inusitados, como no ponto do ônibus ou até no banho. Mesmo depois de anos codando, eu ainda me encontro resolvendo situações cujas soluções vem das inspirações mais aleatórias.

Que a Força esteja contigo!