Great advice!
Notable omissions:
No real discussion of network protocols (or a network layer at all). For debugging in a distributed world, that's a valuable skill.
No real discussion of software deployment (although for backend services, docker might qualify). In a world of servers and PAAS's, it's helpful to know how to safely push the bits around.