As a self-taught programmer with a scripting language, algorithms are my nightmare, no mention text analyzing and compilers. But I do want to build an alternative React and altjs language, it's been my dream for years.
So diff algorithms, I read the code people wrote immutable-diff and immutable-patch, that's almost what I want but need to be more complex. Also I asked my friends about LCS algorithm and got quite some hints. It took me months to finish and got my own React clone.
Text parsing is hard too. It took me a lot time to read posts explaining LR, RR, parser combinator, state machine. Then I slowly got to know many of the knowledges and created my own little parser, and parsed indentation with my own code. That made me quite satisfied since after I knew how parser is working. Language syntaxes is no longer a magic to me. Although parsers like ES6 are still kind of black magic. For compilers, no, still too hard to learn.
It's interesting when I have enough time to work on them and after all these two problems are still small. I guess if I was facing emergent problems, I would burn instead. It would take really a lot time to catch up.