You got me thinking about what are the programming fundamentals. It’s not like Go where you are refining your skill at a single task over and over. Programming is funny since once you solve the problem there is no need to solve it again if you are a subscriber or DRY.
Furthermore, if you are a subscriber of DROPE (Don’t Repeat Other People Either - OK, I just made that up) you shouldn’t have to solve a problem that anyone else has either. So what’s the fundamental skill/task that you need to practice?
Continuous learning, IMO. You can’t be DROPE if you don’t know what other people are doing. It’s human nature to try and find a comfort zone and coast, but for programmers this is a downward spiral of lowering productivity. Once you start reinventing the wheel you are no longer productive and your reinventions are likely to be inferior to what has already been done.
Learning is hard work so one needs to keep that muscle in shape. So even if you don’t have anything you need to learn now, you should still be doing it just to be ready for the time when you do need to - that is, practicing learning.