In the workplace I definitely experience the difference between one who received a formal education, in the sense of raw theory, and one who studied how to "do" things. Both are useful, but they serve different purposes.
In the workplace I definitely experience the difference between one who received a formal education, in the sense of raw theory, and one who studied how to "do" things. Both are useful, but they serve different purposes.
Sure, they can solve ACM-style challenges and spit out Dijkstra on a whim, but I can't recall the last time I needed to deliver on a business objective that mapped to either of those things.
This is not to say that understanding computer science is bad! Having a deep understanding of the underlaying theory and technology is a requirement to attain mastery.
But being able to ship maintainable, well-factored, and properly-tested code in a collaborative environment is far more important to me than having memorized every algorithm in TAOCP.
I mean, if I can have both skillsets, I'll totally take both skillsets, but given the choice between the two, I know that a wizard-level software engineer with very weak algorithms skills will, in general, bring a lot more value to a project than a wizard-level computer scientist that can't write code that the rest of the team can maintain.
About the only time that a computer science wizard is useful to me, is if I already have a team of solid software engineers, so that they can mentor each other and lift the overall skill level of the team.
What universities really need to start doing is including a multi-year track built into their curricula whereby students build and maintain production software over the course of their studies, with quarterly rotation between teams.
I actually think Universities do a disservice to their students if they promise them a curriculum that "leads to a job". You should go to University if you want to continue your formal education, not "to get a job". If you just want to get a piece of paper that lets you get a job, mentor with someone, go to a technical college, learn to "do" something. But Universities should teach how to think, that's about it, IMO. If you can find a job after should have no impact on the curriculum.
I would actually love to see this, but haven't yet thought through in-depth how it would work in the US.
Because right now, nothing like this exists, and until it does, the primary focus of most university students is to indeed "get a job".
I can say now that trusting the adults was stupid idea, I ended getting student loans, got a degree, but no job. I am 29 now and my government job registry is still empty.
The problem is the dog eat dog narrow mindedness of seeing everything as a competition and not learning anything about collaboration and serving others. Something a lot of CS grads would benefit massively from, I know I would have.