|
>The whole education process, at least for the technology field, should be revamped towards apprenticeship. Disagree, at least in the case of developers, and possibly ops/sysadmins. I simply don't want to work with people who don't understand the basic underpinnings of our work. I expect my co-workers to understand things like the relational model and relation algebra/calculus, SQL, OOP, DRY, writing reusable libraries, the OSI stack/model, some basic data structure/algorithms (trees, searches/sorts, graphs, Djikstra's algo, TFIDF, etc), complexity analysis, some basic design patterns (pub/sub, consumer/producer, MVC, DI/IOC, and various other Computer Science and Software Engineering concepts. I haven't learned the most abstract stuff in my time in industry thus far, and I certainly don't think most devs/engineers have either. We learn things like frameworks, languages, platforms, and sometimes a design pattern here or there, but the basic underpinnings were all learned under formal study in a university CS (and sometimes math) program. In the end though, maybe this is just my subconscious "elitist CS grad that wants to believe his time in university was worth it and well spent" speaking. |
The stereotypical 18-year-old nerd has at least some high-level understanding of _all_ of this from web sites, magazines, pet projects and now from MOOC's. As a teen, you may not get things right the first time and move at a relatively slow pace but refactoring code in different languages and learning from various online resources add up over the years. At least a few fresh high school grads get full-time programming jobs at respectable companies.
> "elitist CS grad that wants to believe his time in university was worth it and well spent"
Efficiency isn't all-or-nothing and I think open credit-granting exams would make college much better (disclosure: I'm in France where the situation is much worse than in the US).