Полезно сначала просто прогонять код, смотреть на вход-выход, а не пытаться все в каждом методе понимать с первого раза. Часто бывает, что логика становится яснее, когда видишь, что происходит на уровне данных, а не синтаксиса. Я тоже раньше плутал, пока не перестал пытаться вцепиться в каждую строчку — это реально сдерживало. Главное — не торопиться, постепенно ходить по шагам.