---
The difference between having a job in programming and having a career in programming is your grasp of the fundamentals of computing. This is because the ability of a person to learn new technologies and techniques is largely a function of their grasp of fundamentals.
Fundamentals that Undergraduate Computer Science Programs uniformly skip over in the interests of getting to experience faster.
In the abstract, it is of course fully, completely, and totally possible for a person to learn this independently or on the job. In practice, that is sufficiently rare as to not be worth discussing. Jobs where Recent Developments in Deep Learning at Stanford are taught in the office are, I suspect, similarly rare.
Undergraduate Computer Science skills are only useful so long as the person never needs to learn a different paradigm, learn significantly different technologies that require thinking differently, move into a different type of programming, or desires significant technical career advancement. Those things require a mix of fundamental knowledge and experience.
Does that make sense?