Faithfulness to a single source is the biggest reason I see for failure In students. Be promiscuous. If a page, chapter, or even whole book bores you, scan ahead, put it on trial for a bit, and if it doesn't redeem itself quickly, replace it. The same goes (to the extent possible) for courses, teachers and even whole media. Only once you've tried the whole universe do you have reason to lower your standards and try something again from that universe that didn't meet your earlier ones. A book isn't a friend. There are no brownie points for completion.
Also most subjects are like that too. If you really want to know a natural language and hate the verb rules, focus on the rest of the language. If you soak up the verbs more slowly you'll still be hnderstandable, and you'll have fun, and most importantly you won't give up.
And programming languages are especially like this. Don't like class methods? Good! They suck anyway. Keep your functions pure. Don't like generics? Well that's a shame but it didn't stop the first many generations of Go programmers who couldn't use them if they wanted to. Etc.