The theoretical education pays off in the long run. You want your software designers to understand algorithms and complexity theory. You want your network designer to understand Markoff chains and queuing theory. You want the people programming on an embedded device to understand time/space tradeoffs. You want the people building the radio to understand RF, electrical engineering, etc. Those may be a minority of the jobs, but remember that the majority of the jobs are grunt level.