That's a good question. I would say architectures and data structures, generally.
We tend to get into the weeds as programmers, but 9/10ths of it is the above. If you approach the problem in the right way, everything is easy. The wrong way and everything is hard.