How to deal with a large code base (> 1,000,000 lines). It's not just 10 times a medium code base.
How to deal with ambiguous requirements.
How to work on software as part of a team.
That's if you even care about your job. And it's hard.
So I'd say I learned the theory, and how to learn, in school and on my own, but actually how to apply all of it to make something someone else wants came from work.
This is a major improvement area I see with people coming out of academia (and was a big one for me) - people think that if a project is tough or not working out, they can just change the scope and solve a different problem. And that telling someone who's paying you why their problem is poorly framed is just as helpful as actually solving something. (This is pretty common on forums too)
Tldr, the skill is working on someone else's terms, which in turn gives rise to all sorts of new technical skills.