For Silicon Valley Hopefuls, Is College Irrelevant?
medium.com
medium.com
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.
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.
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.
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.
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.
So college is certainly not required. But I think writing off as irrelevant is being overly dismissive of what it does offer.
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'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.
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.
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.
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.
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.