This sounds like the age-old conflict that computer science students have long bemoaned: computer science is not software engineering.
If you're interested in algorithmic development and the actual theory of computer science, you'll probably enjoy most four-year degree programs in that area. If, however, you're studying computer science because you want to write software -- and that's what matters to you -- you're probably going to be frustrated that the coursework veers more strongly towards the theoretical.
I think that most college degrees are more about showing some sort of credential for inexperienced people than providing solid value in and of themselves, but I also don't think they're completely useless. It really depends what you're trying to do.
As long as the resulting people don't think that graphs are charts, static typing is ceremony and functional programming means programming functionality - everything goes.
It's worse. I know someone who came out of a 4 year CS degree, knowing only php, because that's as new-fangled a technology as their professors were willing to bother to learn. They ended up going to a boot camp in order to learn how to get anything done.
agreed. some people still think that you should get out of college and be ready to make 90k in the exact area you studied. That's just not the case with so many areas of study. You can make your way into some sort of company or agency or partner up with a fellow student and start to consult. You might only make 35k for a while but that's how it works. If people know that going in, they probably would budget how they will spend on college in the first place a little better. Maybe they woulnd't accumulate 100k of debt if they knew they'd only be making 32k for the first couple years and have to buy a vechicle on top of that.
That doesn't even sound like a datapoint on the theoretical/vocational line, it sounds like just a shit CS department that doesn't deserve accreditation.
Knowing the theory can help in the real world. It really can.
But it's not everything in the real world. It's only a small part. And the CS degrees aren't teaching enough of the rest of what real-world programmers need to know.
And that would be fine, if the CS people were headed for academic careers in computer science. But they're not. 95% of them are going to become software engineers, not computer scientists. That means that CS departments are failing to properly train 95% of their graduates. (Alternately, it means that 95% of the CS students are in the wrong department.)
CS departments need to choose: Are we going to teach software engineering, not just CS? Or are we going to be a real CS department, only much smaller? Or are we going to be of little value to most of our students?
Alternately, it means that 95% of the CS students are in the wrong department.
I'm always confused when a well-respected university is criticized for not delivering a vocational education. How did people think that the university became respected in the first place? Hand-holding dummies through the other majors' equivalents of paint-by-numbers web application frameworks?
I'm not criticizing them for that. But how many CS departments give the students any preparation for having to maintain and modify an application for a decade? How many of them teach how to structure code so that a million line application is maintainable? How many of them teach application security in any usable form?
If, say, chemical engineering were taught without any instruction on how to make a process ready for actual industrial use, we'd criticize them for just teaching chemistry, not actual chemical engineering...
At the university I attended, Chemistry and Chemical Engineering were two separate degrees with different focuses. I think the same could be said for Computer Science and Software Engineering.
> How many CS departments give the students any preparation for having to maintain and modify an application for a decade?
I'm not convinced that your example(s) fall under the category ‘science’ — what is the research aspect of maintenance coding, and where does the scientific method come into play when structuring million-line programs? You mention CS (== Computer Science) after all. I guess this discussion is off-topic though, since the headline asks about college in general, not CS.
I side with the sibling post that argues for a distinction between CS and SE programs.
That's fine. I've got no problem with making that distinction. But if we do, then 95% of the people who are currently taking CS should be in SE programs.
Note: 95% is a number pulled from absolutely nowhere, but I think it's of about the right order. It expresses the idea that most people are not going to go on to academic CS careers, and therefore need different training.
Exactly. The more people who come to this conclusion and start to put up a fuss like the GP did the sooner we'll solve this whole conundrum. CS != SE and people trying to shoehorn the latter into the former are going to be disappointed.
That said, I'm personally glad that my education was heavy on the CS. Nearly 20 years later (yuck) I attribute it to providing me an ability to stay flexible and learn new technologies rapidly.
Why would one think that theory only comes from schooling? Some of the largest contributions ever made to hard sciences have come from people with litte formal schooling. E.g. https://en.wikipedia.org/wiki/Michael_Faraday
I agree with your idea that degrees are mostly about credentialing. In the best case, they can lead to a close mentorship from an expert, but that's rare these days.
I think that stuff like this and code boot camps, rather than online distance learning, is the real threat to traditional higher education.
In my time in academia, I was always struck by how uncomfortable academics were with the idea of university educations being vocational training, rather than education "for its own sake." It's a nice ideal, but almost all students, especially those in STEM fields, are in college to improve their career prospects. But academics are mainly focused on replicating themselves, i.e. focusing on teaching things that are useful to students who plan to attend graduate school in the field, but not useful to the majority of students who do not. This is how we end up with CS grads who can implement obscure data structures they will never use in industry but cannot do practical things like use version control or continuous integration, or write good unit tests.
For someone who wants to work in a technical field, I think new programs like this one, or like code boot camps, are becoming increasingly attractive as college tuition becomes more expensive and student loans become more burdensome. If employers are willing to hire graduates of these programs, traditional universities will have trouble attracting students. And they should.
To be fair, you don't really know what his beginners are "banging up". It simply doesn't take much skill to use a web framework to generate database-backed webpages (witness the rise of the "javascript programmer").
The bootcamps are cranking out a commodity product for a commodity world.
That is interesting, because I am a CS student and that's exactly want I want to start my career with (web development). I do a lot of React on my own and have some Rails background.
It seems like entry-level jobs in that area, between other CS majors, bootcamp grads, and self-taught developers, are going to get tough to get.
Actually, IMHO, it's easier than ever. Supply can't keep up with demand, and anyone who can show demonstrable skills via a portfolio of relevant personal projects and the demonstrable practical knowledge is on the fast track.
It's not like it is the first time this has happened. EDS (remember them?) had so much demand for programmers back in the mainframe days that they resorted to hiring people with no knowledge of computers, pushing them through a three/four-month course in programming, and them putting them to work as junior coders.
I guess it may also depend on the individual. Some people will do better and learn better from those camps. Majority probably get suckered into it as some holy grail of career change, not knowing what they're getting themselves into.
Because that's largely what boot camps focus on. They are there to teach you what's popular right now, which is web dev. They aren't going to teach you kernel development, or backend application development, or graphics skills, because that's not what 'omgstartups' are hiring for.
Exactly. Not to mention "not hip" things like security, performance sensitive code, distributed systems, HCI, solid understanding of computing theory, and so on.
Web devs tend to be easily replaceable, so why not hire a bunch of juniors (at a cheap cost) to get the job done? This is what it seems these types of "academies" are targeting anyway. Like "timr" said in this thread: "... a commodity product for a commodity world."
Fair enough, but I don't see how any of this has to do with the topic at hand, which was boot camps are for suckers. I wouldn't consider the junior developers who are working out well in the parents reply suckers - sounds like they're employed and working out well.
They bought a product (bootcamp) in the pursuit of a career in software engineering. Odds are they aren't equipped for more than a series of jobs doing webdev scut work.
"Suckers" might be a bit strong, but their expectations may suffer a certain misalignment with reality.
I know web devs who have taught themselves CS fundamentals and the stuff you mentioned, but they started with boot camp doing Rails. And why not? They were able to teach themselves this stuff while working for a good salary and getting experience for their resume.
Note the question mark is actually for the word "developers" and not the phrase "web developers", as such a pairing would be anathema in ML-fantasy/magic-circle-jerk land.
I haven't met a company hiring CS graduates that thinks they can easily learn things; they expect their future employees to have experience with all of their technologies already.
What's scary is that nobody has any clue how to get programming jobs with a CS degree except to get really lucky like they did.
Is this really the case? I know for a fact that large tech companies like Google, FB, Yahoo, MSFT, Amazon are pretty agnostic with respect to the specific tools and technologies that their prospective candidates can use.
Really? I feel like lots of people know how to get a programming job with a CS degree, and you in fact hit the nail on the head in your response, learn the technologies that employers are going to want you to have. Experiences to learn these things aren't very difficult to find, imho.
A CS degree from where? I am sure there are colleges out there that teach CS as mathematics, but in my experience that's very uncommon. Most graduates I've met have done at least some programming using real hardware and software and have been taught how to connect the abstract math to real applications. Not all are qualified to work as engineers, but I don't believe a different course of study would have been them any moreso.
In fact, that's the way the rest of (dare I say, real) engineering works: you get the theory and practice in your studies, and the mechanics in your first job. The software industry has been spoiled because, for the purposes of large swaths of it, the mechanics can be self-learned by motivated people with or without a degree. The degree (computer science or software engineering) is not supposed to teach the mechanics.
I have. I found very little correlation between having a CS degree and being able to code your way out of a paper bag, with exceptions for some specific colleges.
I've been thinking how interesting (fun and a little mean) it would be to teach a Software Development class where you
- assign groups of students that don't really get along,
- have groups consume APIs written by previous groups,
- change the assignment (slightly or significantly) every week or so,
- constantly email students asking if they could "just make one little tweak"
- etc...
If you were completely up front about expectations (this is about learning the processes/pitfalls of software development, not about submitting a polished assignment at the end) maybe you could give students a sense of the skills needed to succeed not just at computer science, but software dev as well.
>I've been thinking how interesting (fun and a little mean) it would be to teach a Software Development class where you - assign groups of students that don't really get along, - have groups consume APIs written by previous groups, - change the assignment (slightly or significantly) every week or so, - constantly email students asking if they could "just make one little tweak" - etc...
Sounds like CS320 at UMass Amherst. We all considered it one of the most work-intensive courses in the degree.
I think I can give pretty good insight into this, as someone with a weird background coming to programming. I'm a data scientist with a physics background, but I'm still even atypical in that role, having just a bachelors degree.
My experience has been that without some of the real meaty knowledge that only comes from studying CS, you don't realize what you're missing until you work with other people who have the background. Pairing up, seeing them use abstractions that fit the problem perfectly is an eye opener. The theory helps. I've been shoveling my way through CLRS and learning haskell in my spare time, and both of these things, while not directly relevant to the problems I solve day to day, definitely improve my code.
And of course, when looking for new jobs, the right degree never hurts as far as where you go on the resume pile.
Same experience here, running http://InterviewKickstart.com. Having a background in CS is very helpful and often the differentiator in how palatable you find Google/FB interviews vs not. Without CS background (degree or not, but something similar), candidates find it very challenging to even get through the course, much less appear for core CS interviews.
Degree is not just a certificate; it's a proxy to 2-4 years of working through interesting stuff under guidance (professors) and with a group of like-minded people. It ain't a panacea, but it's a great opportunity for those who recognize the importance of that controlled setting of learning.
The main benefit is meeting smart people (assuming you go to such a college). The next benefit is that you can get structured coursework to teach you things that you might have trouble self-teaching.
The costs are high: Not everyone who is there should be, many courses are needlessly competitive and one must waste time over-preparing just to be competitive. Student loans.
I'd actually recommend doing a startup first for about 2 years and then going to college after so that you can make proper use of it (and of course drop out if necessary).
>I'd actually recommend doing a startup first for about 2 years
You really recommend that someone fresh out of high school should start a business? With essentially zero real-world experience? What "problem" is it that they're going to solve with a startup?
If college isn't right for them out of high school, how about they get a job? That way they can earn some money and learn some social skills that are vital to functioning in our society.
If you are entrepreneurial, none of those apply and may actually be distractions.
A few years in the trenches of a startup (yours or someone else's) will help clarify what the goal of the education will be, and also what kinds of activities and groups to join.
If the startup is successful, defer college a bit, if not (as is most often the case) start school with a keen appreciation of what you plan to get out of the experience, or if you are hoping to explore ideas, do so with a bit more realistic an idea of what execution will be like.
Saying college is "irrelevant" in tech is a bit of an exaggeration. There are certainly plenty of people who have done well without college, and a lot of companies have picked up a reputation for not caring about college (Google is the first that comes to mind).
If you can learn to develop software on your own and put together a portfolio that shows your skills, good for you. But a lot of people aren't self-starters, and even if they are, a college degree does carry an air of certification with it that's hard for a programmer with no professional experience to attain.
There's also the issue that plenty of companies still do think you're useless if you didn't go to college; just go browse any job board.
I agree that it's possible to get into the industry without a CS degree, but when in doubt, go to college.
College did give me valuable analytic skills that I do see lacking in some coders who did not continue on to higher education. I'm sure some people can gain those same skills without college, but not all do.
So college is certainly not required. But I think writing off as irrelevant is being overly dismissive of what it does offer.
I was once turned down because I am an engineer (EE) and not a CS grad. Your mileage varies wildly. It all depends on what kind of product you want to work on. If you're going to write web front ends, CS may be overkill. If you are going to write an OS or a search engine, it won't be. If you are planning on writing guidance software for rockets, CS may not be enough.
The catch being that it's very difficult to anticipate multiple decades of career from the very start. You might not plan to do something, but that doesn't mean you won't change your mind later.
I've known people who cannot advance their careers in the ways they want because their lack of education stands in their way. It's very frustrating for them.
I should probably have added a "and right now you have no idea which one it'll be for you" to the end. Because I'd never image I'd be once more writing data center automation tools just 2 years ago. And, when I started, there was no such thing as a data center.
In first year economics you learn about opportunity cost. The classic example is a student straight out of HS taking a job at McDonalds because it pays now, vs going
to university and delaying earning money for a better future potential.
But most of all, these are vocational training which won't be of value 15 years through your career. A CS degree will teach you how to think and fundamental skills that will still be of value 30 years from now.
> CS degree will teach you how to think and fundamental skills that will still be of value 30 years from now.
Work experience can teach you how to think. Imho, my work and hands on experience, as well as mentoring, have taught me much better how to think than a degree.
I received a Fine Art major with a business minor decades ago. After college I attended a six month program at a school in San Francisco called the 'Computer Learning Center' and learned COBOL and Assembly. I have learned a number of other languages since and write code today for a living.
I loved attending a liberal arts college (The University of Puget Sound). The education I received there enriches my work life and non-work life a great deal.
If you are interested in CS today, I think that getting a CS degree at a liberal arts college would represent a wonderful combo platter of useful skills and broad-based knowledge of the humanities and other non '1s and 0s' subjects.
Getting tired of these posts. It is so easy to say college is irrelevant. At a high level, it is a mostly generalized education that of course can no longer guarantee success due to the sheer amount of people who now obtain a degree.
However, college is still relevant. A smart man once told me that college is a place to learn how to learn. Managing a schedule, living on your own, succeeding in courses that you are not passionate about, showing up on time and just overall having your shit together are things you will need to be successful in real life.
Unless you have ambitions of being a sys admin for life straight out of high school, then maybe you should save your $$. Even then, I'd still probably go to college. It's 4 years that you'll never forget for better or worse.
> A smart man once told me that college is a place to learn how to learn.
Good point. People such as Steve Jobs, Michael Faraday, John Carmack, Ernest Hemingway, Frank Lloyd Wright, Ben Franklin, Thomas Edison, Michael Faraday, Srinivasa Ramanujan and others like them should have just ponied up the money and learned how to learn! One can only imagine how much better the world would have been.
College is needed. College is needed because US highschools are horrible.
I see too many people in the tech community with zero useful communication skills. They don't know how to speak properly let alone write properly. The documents they produce are gibberish. Sure, they can spin up a cloud server and get it doing something useful, but they are totally unable to explain what they are doing to others. They then claim this lack of communication is rooted in those other people lacking tech knowledge.
College, university, provides bedrock standards through which educated people communicate effectively. Reading Shakespeare in english 101 isn't going to help you compile a new app, but it will help you communicate with someone on the other side of the planet who also studied Shakespeare in some other classroom. The ability to articulate not general feelings but specifics communicable to others without mistranslation is a skill very much lacking in the tech world.
I think there are a lot of different problems mixed into this.
Part of this is social skills. This seems to break down starting in junior high, where a civil and comfortable environment for children to interact can be seen as an exception, or only available to a segment of the kids.
Then you have the challenge of explaining highly technical topics, where the knowledge is changing, to people where you simply do not know their starting point and ability to understand new concepts as they are introduced. It's probably closer to the challenge a teacher has when explaining a foreign topic to students.
Social skills and social maturity are just as important for talking to people about technology as they are for thriving in a college environment. Especially at elite colleges, if kids don't know the rules of the game, they will not enjoy the full benefits of education.
I think college also fails to be a great melting pot and social fuser as it could be when you look at retention and dropout rates, and the social backgrounds of who primarily benefits. I can appreciate Shakespeare, but I think trying to teach that (or another topic in the same spirit) as the solution is just doing more of the same, and it doesn't work. Or at least it's not as effective as other approaches might be.
Well yes and no. Data science jobs are gated by newly minted PhDs. Software Engineering jobs are gated by CS grads who quiz entirely on Algorithms and data structures. You can get a job outside of this but it is becoming more difficult because of self selection.
70 comments
[ 3.4 ms ] story [ 146 ms ] threadIf you're interested in algorithmic development and the actual theory of computer science, you'll probably enjoy most four-year degree programs in that area. If, however, you're studying computer science because you want to write software -- and that's what matters to you -- you're probably going to be frustrated that the coursework veers more strongly towards the theoretical.
I think that most college degrees are more about showing some sort of credential for inexperienced people than providing solid value in and of themselves, but I also don't think they're completely useless. It really depends what you're trying to do.
But it's not everything in the real world. It's only a small part. And the CS degrees aren't teaching enough of the rest of what real-world programmers need to know.
And that would be fine, if the CS people were headed for academic careers in computer science. But they're not. 95% of them are going to become software engineers, not computer scientists. That means that CS departments are failing to properly train 95% of their graduates. (Alternately, it means that 95% of the CS students are in the wrong department.)
CS departments need to choose: Are we going to teach software engineering, not just CS? Or are we going to be a real CS department, only much smaller? Or are we going to be of little value to most of our students?
I'm always confused when a well-respected university is criticized for not delivering a vocational education. How did people think that the university became respected in the first place? Hand-holding dummies through the other majors' equivalents of paint-by-numbers web application frameworks?
If, say, chemical engineering were taught without any instruction on how to make a process ready for actual industrial use, we'd criticize them for just teaching chemistry, not actual chemical engineering...
I'm not convinced that your example(s) fall under the category ‘science’ — what is the research aspect of maintenance coding, and where does the scientific method come into play when structuring million-line programs? You mention CS (== Computer Science) after all. I guess this discussion is off-topic though, since the headline asks about college in general, not CS.
I side with the sibling post that argues for a distinction between CS and SE programs.
Note: 95% is a number pulled from absolutely nowhere, but I think it's of about the right order. It expresses the idea that most people are not going to go on to academic CS careers, and therefore need different training.
That said, I'm personally glad that my education was heavy on the CS. Nearly 20 years later (yuck) I attribute it to providing me an ability to stay flexible and learn new technologies rapidly.
I agree with your idea that degrees are mostly about credentialing. In the best case, they can lead to a close mentorship from an expert, but that's rare these days.
In my time in academia, I was always struck by how uncomfortable academics were with the idea of university educations being vocational training, rather than education "for its own sake." It's a nice ideal, but almost all students, especially those in STEM fields, are in college to improve their career prospects. But academics are mainly focused on replicating themselves, i.e. focusing on teaching things that are useful to students who plan to attend graduate school in the field, but not useful to the majority of students who do not. This is how we end up with CS grads who can implement obscure data structures they will never use in industry but cannot do practical things like use version control or continuous integration, or write good unit tests.
For someone who wants to work in a technical field, I think new programs like this one, or like code boot camps, are becoming increasingly attractive as college tuition becomes more expensive and student loans become more burdensome. If employers are willing to hire graduates of these programs, traditional universities will have trouble attracting students. And they should.
The bootcamps are cranking out a commodity product for a commodity world.
It seems like entry-level jobs in that area, between other CS majors, bootcamp grads, and self-taught developers, are going to get tough to get.
Web devs tend to be easily replaceable, so why not hire a bunch of juniors (at a cheap cost) to get the job done? This is what it seems these types of "academies" are targeting anyway. Like "timr" said in this thread: "... a commodity product for a commodity world."
"Suckers" might be a bit strong, but their expectations may suffer a certain misalignment with reality.
Of course, it's possible that those were outliers. The population is clearly non-zero, though.
".. web "developers"? <rolleyes> <sigh>"
Note the question mark is actually for the word "developers" and not the phrase "web developers", as such a pairing would be anathema in ML-fantasy/magic-circle-jerk land.
How could I have been so foolish!
What's scary is that nobody has any clue how to get programming jobs with a CS degree except to get really lucky like they did.
If you were completely up front about expectations (this is about learning the processes/pitfalls of software development, not about submitting a polished assignment at the end) maybe you could give students a sense of the skills needed to succeed not just at computer science, but software dev as well.
Sounds like CS320 at UMass Amherst. We all considered it one of the most work-intensive courses in the degree.
My experience has been that without some of the real meaty knowledge that only comes from studying CS, you don't realize what you're missing until you work with other people who have the background. Pairing up, seeing them use abstractions that fit the problem perfectly is an eye opener. The theory helps. I've been shoveling my way through CLRS and learning haskell in my spare time, and both of these things, while not directly relevant to the problems I solve day to day, definitely improve my code.
And of course, when looking for new jobs, the right degree never hurts as far as where you go on the resume pile.
Same experience here, running http://InterviewKickstart.com. Having a background in CS is very helpful and often the differentiator in how palatable you find Google/FB interviews vs not. Without CS background (degree or not, but something similar), candidates find it very challenging to even get through the course, much less appear for core CS interviews.
Degree is not just a certificate; it's a proxy to 2-4 years of working through interesting stuff under guidance (professors) and with a group of like-minded people. It ain't a panacea, but it's a great opportunity for those who recognize the importance of that controlled setting of learning.
The costs are high: Not everyone who is there should be, many courses are needlessly competitive and one must waste time over-preparing just to be competitive. Student loans.
I'd actually recommend doing a startup first for about 2 years and then going to college after so that you can make proper use of it (and of course drop out if necessary).
You really recommend that someone fresh out of high school should start a business? With essentially zero real-world experience? What "problem" is it that they're going to solve with a startup?
If college isn't right for them out of high school, how about they get a job? That way they can earn some money and learn some social skills that are vital to functioning in our society.
- to get into professional school
- to get hired by a large firm
- to get into a PhD program
If you are entrepreneurial, none of those apply and may actually be distractions.
A few years in the trenches of a startup (yours or someone else's) will help clarify what the goal of the education will be, and also what kinds of activities and groups to join.
If the startup is successful, defer college a bit, if not (as is most often the case) start school with a keen appreciation of what you plan to get out of the experience, or if you are hoping to explore ideas, do so with a bit more realistic an idea of what execution will be like.
If you can learn to develop software on your own and put together a portfolio that shows your skills, good for you. But a lot of people aren't self-starters, and even if they are, a college degree does carry an air of certification with it that's hard for a programmer with no professional experience to attain.
There's also the issue that plenty of companies still do think you're useless if you didn't go to college; just go browse any job board.
I agree that it's possible to get into the industry without a CS degree, but when in doubt, go to college.
So college is certainly not required. But I think writing off as irrelevant is being overly dismissive of what it does offer.
I've known people who cannot advance their careers in the ways they want because their lack of education stands in their way. It's very frustrating for them.
In first year economics you learn about opportunity cost. The classic example is a student straight out of HS taking a job at McDonalds because it pays now, vs going to university and delaying earning money for a better future potential.
But most of all, these are vocational training which won't be of value 15 years through your career. A CS degree will teach you how to think and fundamental skills that will still be of value 30 years from now.
Work experience can teach you how to think. Imho, my work and hands on experience, as well as mentoring, have taught me much better how to think than a degree.
I loved attending a liberal arts college (The University of Puget Sound). The education I received there enriches my work life and non-work life a great deal.
If you are interested in CS today, I think that getting a CS degree at a liberal arts college would represent a wonderful combo platter of useful skills and broad-based knowledge of the humanities and other non '1s and 0s' subjects.
However, college is still relevant. A smart man once told me that college is a place to learn how to learn. Managing a schedule, living on your own, succeeding in courses that you are not passionate about, showing up on time and just overall having your shit together are things you will need to be successful in real life.
Unless you have ambitions of being a sys admin for life straight out of high school, then maybe you should save your $$. Even then, I'd still probably go to college. It's 4 years that you'll never forget for better or worse.
Good point. People such as Steve Jobs, Michael Faraday, John Carmack, Ernest Hemingway, Frank Lloyd Wright, Ben Franklin, Thomas Edison, Michael Faraday, Srinivasa Ramanujan and others like them should have just ponied up the money and learned how to learn! One can only imagine how much better the world would have been.
I see too many people in the tech community with zero useful communication skills. They don't know how to speak properly let alone write properly. The documents they produce are gibberish. Sure, they can spin up a cloud server and get it doing something useful, but they are totally unable to explain what they are doing to others. They then claim this lack of communication is rooted in those other people lacking tech knowledge.
College, university, provides bedrock standards through which educated people communicate effectively. Reading Shakespeare in english 101 isn't going to help you compile a new app, but it will help you communicate with someone on the other side of the planet who also studied Shakespeare in some other classroom. The ability to articulate not general feelings but specifics communicable to others without mistranslation is a skill very much lacking in the tech world.
Part of this is social skills. This seems to break down starting in junior high, where a civil and comfortable environment for children to interact can be seen as an exception, or only available to a segment of the kids.
Then you have the challenge of explaining highly technical topics, where the knowledge is changing, to people where you simply do not know their starting point and ability to understand new concepts as they are introduced. It's probably closer to the challenge a teacher has when explaining a foreign topic to students.
Social skills and social maturity are just as important for talking to people about technology as they are for thriving in a college environment. Especially at elite colleges, if kids don't know the rules of the game, they will not enjoy the full benefits of education.
I think college also fails to be a great melting pot and social fuser as it could be when you look at retention and dropout rates, and the social backgrounds of who primarily benefits. I can appreciate Shakespeare, but I think trying to teach that (or another topic in the same spirit) as the solution is just doing more of the same, and it doesn't work. Or at least it's not as effective as other approaches might be.