I started writing programs with variables, I/O, and conditions, then I added for and while loops, and after three years I started working on classes and objects... I could say that the topic I struggled most to learn was, months ago, parallelism and asynchrony between processes and HTTP requests... these weren't too complex to understand, in my opinion.