I graduated from Notre Dame with a Computer Science and Design degree. While the CORE classes are heavily theoretical and forces you to think about fundamental CS concepts (Theory of Computing, Programming Paradigms, Data Structures, Algorithms, etc.), there are electives tailored to learning how to program. I took electives in Mobile Application Development, Building Web Apps, JavaScript, Database Concepts, Data Mining, Human Computer Interaction and Healthcare Analytics. We even have electives in Cloud Computing that allows people to learn how to use MapReduce and other cloud frameworks. If there was something that I wanted to learn that wasn't taught in a course or elective, I either learned it through research (Data Mining & Machine Learning, along with Distributed Systems) or through learning it in my free time on my own (Ruby on Rails and EmberJS). People can't expect Computer Science to teach them how to be a Rails developer, but should take the initiative to teach themselves after they get the fundamentals.
The theory, I think, is nice for a small subset of who we call programmers now. The article highlights that there is a huge demand for what you might call blue-collar programmers who don't need to care about theory, because there are plenty of simple, non-groundbreaking jobs to be done. Your basic CRUD apps.
Those blue-collar programmers need not only more of a vocational education, but tools to match. Higher-level programming languages help. In mobile app development that's what's driven demand for PhoneGap and newer tools like Glide, again for those common, boring apps. https://www.kickstarter.com/projects/1783091318/glide-beauti...
But isn't that why there are coding bootcamps to allow those blue-collar programming positions to be filled? Like the Iron Yard, General Assembly, Hack Reactor, etc. I think there needs to be more advertising of these alternatives to a Computer Science degree if thats what somebody really wants to do.