I cringe a little bit in some of these education threads. On one hand, students who chose to major in something that isn't very marketable right now are lambasted for making a poor decision based on what sounds interesting to them, and they get blame heaped on them for being in debt and having nothing to show for it. On the other hand, when people choose CS - a field that has very good earning prospects right now - their intentions are immediately questioned and we ask "Are they just doing it for the money?"
It must kind of suck to be someone entering college right now without natural interest for and aptitude in a STEM field.
While that's true, I feel like there's going to be plenty of awful programmers in the group that's just in it for the money (although that's not to say there won't be passionate programmers who are also awful - they're just more likely to want to improve themselves).
With much of CS and programming being so collaborative, those that just don't have the talent or the heart for it generally cause more hassle and grief for the rest of us.
Of course, I'm also not assuming that I'm not an awful programmer myself, but I really do love CS and try to improve myself all the time.
Getting a CS degree isn't easy - most of the people who lack the interest or intellect for it wash out before too long. I started going back for a CS degree about a year ago, and quickly found this out when I saw people retaking a 2000 level class and still failing to grasp the mechanics of function calls or basic data types.
Sure, there are some people who finish through sheer bullheadedness and others who stop caring after they graduate, but I still think that if you manage to make it through a 4 year CS program (especially if it is at a place like Stanford), there is a pretty good chance you have potential to become a useful programmer.
I'd argue that one reason we end up with CS graduates who don't end up becoming very useful is that our industry in general isn't that great at mentoring, and there are a lot of things you need to know to be a decent programmer that aren't always taught (or taught very well) in college. Good mentors in the first few years that someone is developing professionally can make a huge impact, and we should figure out a way for this to happen more often.
Because you're making a fallacious assumption with Computer Science in relation to programming/building webapps, just like many others here. You're assuming just because one is good at CS, he/she must be a good programmer.
I curse the day I chose computer science! If only I was a liberal arts major, my life would be carefree and happy! Woe is me, being able to quit a job on a whim and get a six-figure salary elsewhere a whole week later!
You'd be surprised how adaptable people can be. It wasn't long ago that most of us spent our days finding and growing food. Compared to the skill change in the agriculture to industry transition, learning about computation isn't a big deal.
As I said, it depends on the person. Personally, I can't imagine myself happy as a lawyer or financial consultant for instance, no matter how much money I'd make.
Not all people like sitting in front of a computer for many hours a day. If you don't like it, its unlikely you'll be good at the job in which case getting a new job is not guaranteed.
Yea, but its not what a lot of people like and what seems interesting to us is not necessarily interesting to them. Lot of people prefer interacting with other people than sitting in front of a machine all day.
I think people who are entering college with the mindset that a degree is simply an accolade to garner large sums of money are misunderstanding the principal of college and higher-education learning. You go to college because you're interested in something enough to pursue a greater understanding of it. The degree is simply a token that you're not full of shit. So whether you're complaining about student debt or validating your academic decisions with shallow dreams of making six-figures, you're in for a pretty boring 4+ years of passionless note-taking and test-taking (fine by me).
That's one of the things to do in college. Gaining a shiny degree that will help you get a better job is another. Meeting people who will help you in your career is yet another.
There are many reasons to go to college. Learning interesting stuff is just one of them.
> Meeting people who will help you in your career is yet another.
I predict the Internet will increasingly replace this traditional function of the college experience. And do it for, essentially, just the cost of Internet access service each month. Yes we'll have to use a web browser and click on the right links to the right sites, chat in topic-oriented forums, and then go do "meetups" in meatspace (Dr. Evil saying "lasers") to meet them face-to-face, become friends, learn from each other, collaborate together, micro-projects, trial projects, earn F2F credibility, put things up on our online portfolios, become ambiant, self-promote, self-educate, iterate, rinse, repeat. Goodbye 4-6 years of grinding and $100K in student debt.
I agree that traditionally going to college was a great way to meet people who've been filtered for certain qualities. But this tradition comes from an era when the Internet didn't exist. Computers didn't exist. Even radios and telephony didn't exist for the earliest periods in which universities existed and operated. But we have all that stuff now. We have frickin FaceTime and Skype and Google Hangouts and Reddit and email mailing lists, oh my! Let's all get to meeting each other, and filtering for the qualities we want, while bypassing that big honkin expensive middleman industry. I'm also seeing this trend with hackerspaces and makerspaces. Meetup.com is a big enabler.
The quantity and quality of programming courses available online right now - completely free of charge - is astounding to me. I taught myself to program in high school in the mid-to-late 90's, and while there was a ton of information available online even then, I still kind of wish stuff like Udacity, Coursera, Khan Academy, iTunes University and MIT OCW were available back then.
Still, I think the social aspects of college are hard to fully replicate online. For many people, interactions on places like Reddit, mailing lists, etc are somewhat too anonymous and random, while things like Skype and FaceTime are more for people who are already familiar with each other.
I do think the Internet has huge potential to fundamentally change the way we obtain education. It certainly has fundamentally changed the way we obtain information, but it hasn't changed the way we get marketplace-accepted education yet. I think that is coming.
Agreement. My "college friends" have all but disconnected, even though we are still nominally linked via Facebook(which arrived on campus around our second year). We've all ended up going in mostly unrelated directions. In the meantime, the internet has done unimaginable things for both my career and social life.
For help and research, there are online references, online discussions, online correspondence...even if it's all "informal" and done in an IRC channel or something, it's all out there and you can, potentially, spend 24 hours a day immersed in a subject.
And in making more connections, there's an odd feedback loop between the local gatherings and the online stuff. It can start at either end, but the two complement each other well by presenting different situations.
> You go to college because you're interested in something enough to pursue a greater understanding of it.
Except you can already learn as much as you want, for free, on your own time, without limit, forever, without having to spend the money & extra time costs of college. It's like we live in a world with bodies and gravity and yet folks need to drive to a gym where they buy an expensive membership just so they can exercise their muscles and lungs. It's ludicrous from a certain point of view.
Pro-tip to all 18-somethings that are considering going to college: you can buy all those college textbooks, or equivalent, directly, without going to university. Even better, you can get the same instructional material and references cheaper or even free. But then you would already know that IF you truly had a thirst for knowledge and greater understanding. You already would have been self-educating long before reaching 18. (Unless your parents held you back, horrible family life, locked in a box, etc. all the reasonable exceptional cases -- but even then there is almost always a way to learn and gain greater understanding, without spending the big bucks.)
And I love college in many ways. But, "Death to college!" Let's keep the best parts and then trash or fix the rest.
It's not that big a deal. If they just want the money but lack the aptitude, CS tends to weed them out pretty quickly.
>It must kind of suck to be someone entering college right now without natural interest for and aptitude in a STEM field.
Well, yeah, it always sucks to lack marketable skills. I guess it sucks even worse when people used to be able to cover up this lack of skill with an easy, fluff college degree, but suddenly that won't work.
The funny thing is most of those kids probably just want to learn how to make iphone apps and pretty websites but before they realize it they're stuck figuring out sorting algorithms and regex theory.
Sorting algorithms are high school material, I think they'll handle it. Especially if the professor is kind enough to say "...And never use these out of the classroom without a good reason to (and there is no good reason to use BubbleSort). Just use the built-in sort()."
Actually using regexes seems a lot more common in the working world than in academia; as for the theory the basics of finite state machines are about as hard as sorting algorithms. (Or do most CS programs these days cover even more ways to implement a regex parser? http://news.ycombinator.com/item?id=4194707 I have no idea what most CS programs do other than produce BigCo BigLang employees, Stanford's sounds better than that from all I've read and heard.) So no, instead of sorting algorithms, maybe they'll give up at suffix tries or Haskell Monads or Lisp macros or relational databases or garbage collectors or JITs or Bayesian networks or operating systems or... And while I don't know much about iPhone apps, I think Android apps are at least as hard as InsertionSort() and probably more frustrating. You even have a consulting business around them--does anyone have a business around sorting algorithms?
Who knows what their motivations are? Someone at Stanford should do a poll. I'd bet the same amount on "want to make something easy-sounding and specific like phone apps", "want to make lots of money doing who knows what" (maybe even as concrete as working for BigCo or doing a startup), and "because it sounds interesting/friends are doing it/other social reasons". If we're going to imagine them as fairly dim, it's easier to imagine they have no concrete goal in mind. (Edit: and according to my sibling comment, since majors aren't declared until later we probably shouldn't be imagining these students as dim.)
I wasn't trying to imply they are dim, I'm sure at Stanford they're brighter than the average students. My comment was more about CS degrees in general. I have talked to quite a few CS grads that were expecting more of a software engineering degree and were disappointed with what they thought was too much useless theory. I probably could have picked better examples to make my point.
Ah, thanks for clarifying. I've heard and read similar complaints, though they usually take the form that the CS programs just do a bad job with both the theory and the applications. I've read some and asked some to break down "a bad job" in theory, it leads to complaints like "outdated", "seems useless", "is useless", "needlessly complicated when we have X", "bad teacher", "presented slowly", "nothing bleeding-edge/it's all from the 60s", and so on. Breaking down a bad job in applications is mostly "didn't teach me X."
At Stanford, you don't declare your major until your 2nd or 3rd year, and can change it after declaring. Students declaring CS will have already taken a number of CS courses, including the fundamentals of CS.
Recent Stanford alum here. I think it's difficult to parse out exactly why CS is becoming popular at Stanford now.
I would argue that the principal reason for the popularity of CS is because of the amazing teaching in the introductory courses, not the recent tech acquisitions or news coming from Silicon Valley.
Very few departments at Stanford put in the kind of effort to bring students along that I've seen in computer science (most prominently, the use of an army of qualified undegraduate students to serve as TAs for the introductory courses). Almost every engineering student I know has taken an intro CS course, and an easy majority of everyone else has at least attempted to do so as well. They're fun, easy, and accessible.
I would be interested to see the same sort of effort put into say, introductory physics or chemistry. The now-second most popular major, Human Biology, also represents a very big effort to reach out to students.
I'm amazed there could be negative reaction to this. Just think of it this way: every year there are literally armies of smart young people, who are fully capable of being top-notch programmers or engineers, who graduate and become lawyers or go to wall street. Many of them spend their time on things that add _negative value_ for the economy. Every single one of those people who goes into engineering is an entire career that helps the US economy instead of hurting it.
(Note: if you like, read "western capitalist democracy economies" instead of "US economy").
Actually, I was surprised that the number is that low... but maybe it's because i'm around techies all day and tend to consider the fuzzies as cute, inconsequential thingy that hang around our campus like butterflies do around a pond :)
This isn't a zero-sum game. More programmers equals more software projects in existence, better support for existing projects, more co-founders to choose from for your new startup, and an acceleration of human progress.
Oh, people do fail. They just withdraw, keep attending the course, and retake it for a grade the quarter after. As long as they get the subject eventually, it's all that matters, right?
I would say that the only difference that you have to overcome is the tight-knit community of alums. As a CS/OR major from a Top 4 school, I haven't ever gotten an internship offer simply because I was at the school I'm at. Stanford especially is good at fostering connections in the startup community for their students, but Princeton has NY and Harvard has Boston.
It would be interesting to know how many applicants got interested in Computer Science from watching Stanford's excellent iOS courses on iTunesU.
Additionally, it would be interesting to learn how many students declare Computer Science before they enroll and how many students switch into Computer Science because "all their friends are doing it" now that it's the most popular major.
I'm a current student, and I believe that a major reason behind the skyrocketing enrollments in CS is that the introductory classes are immensely popular and well-organized (disclosure: I TA a couple of those classes). There seems to be an idea in a lot of the other engineering departments that you have to suffer through the introductory classes in order to get to the interesting topics. The Stanford CS classes give people interesting challenges while covering a lot of the basics of CS. Of course there's still a long way to go after that, but it's a start. The second half of the introductory series is pretty rigorous, too, and I've seen at least a handful of interview questions I've been asked pop up in that class.
I don't know how many people were inspired by the iOS class, but it doesn't seem to be super popular on campus. I do know a fair amount of people (myself included) who had never programmed before Stanford and were simply motivated to keep going after the introductory sequence. There's definitely a snowball effect, but it wouldn't happen without a great curriculum.
Why should you care why people got interested in computer science? As long as they're capable of doing it (and if they graduate from a place like Stanford, they probably will be) why should you care about their motivation?
I personally think anything that makes more people interested in technology is "a good thing".
If people pursue a discipline because "the industry is hot", rather than because of genuine interest in the subject or enjoyment of learning / improving, bad things happen to them when the industry inevitably cools down.
I think about the CS majors during the times of the .dom boom, or the architecture majors during the housing/construction boom, and wonder how many students were stuck with a degree that was difficult to find a job with, and were not inherently interested about in the first place.
The approach to problem solving you acquire from any rigorous scientific endeavor will benefit you for the rest of your life. These benefits will probably still apply regardless of whether or not you go on to be a practitioner.
I suspect we can find more than a few data points here.
I think in many ways, CS is a very cerebral job. You really need to like it to be good at it.
that being said, I know several people who were not "nerds" but completely love CS. (actually, they might have become nerds on their path to CS...hmmm...)
Having recently accepted an admission to Stanford as a grad student, I can tell you that Andrew Ng's Machine Learning online class was what inspired me to go back to school.
I was looking to enter a math-heavy CS sub-field, and his class opened my eyes to the potential for broader adoption of AI.
Mehan Sahami. Eric Roberts. Julie Zelenski. Jerry Cain. (bonus: keith schwarz). Look no further for explaining the rise in popularity and quality of the Stanford CS intro course. I had the privilege of sitting in the class of each of these guys and they were all respectively the best professor/teacher I ever had. Period.
HumBio (Human Biology) for quite a few years and I think before that, it was either International Relations or Economics. HumBio is really popular because of pre-meds and other people who want to get into bio-related jobs/grad programs.
HumBio also tended to be the major of no major, the major people declared and the classes they took when they were required to declare a major but hadn't yet figured out what they wanted to major in. The first couple of years of classes were considered relatively easy yet still mostly applicable to many other majors.
This happened during the first bubble. Everyone became CS majors when companies started giving away cars if you knew Java. I remember helping out psychology majors switching to computer science, who were failing their first CS class.
I think the rise in CS at Stanford is due to a confluence of several factors, not any single one thing:
* The Social Network & The Death of Steve Jobs (capitalized for a reason) & The Rise of Elon Musk, Mr. PayPal-Tesla-SpaceX & the other software billionaires doing exciting things getting media coverage
* the software/startup "bubble" -- the perception of it anyway; the crazy big acquisitions of young one soft-product companies with low/no revenue and only 1-3 years old, etc.
* crappy job market right now for 18 year olds, or even a twenty-something graduate with a non-STEM degree
* iOS & Android app development, the tutorials, how easy it appears you can make money at it. iPhones as a gateway drug leading in that direction for some percentage of it's more ambitious users. Rise of Apple in general and the Mac, an additional vector leading in this direction.
* the recent rise in online "courses" by Stanford, etc.
* the high pay and perceived higher job security of this field, at least right now
* more serious people (or those with smart advisors) who sense the future trend of greater software automation, mobile apps, robots, drones, embedded logic, etc.
It's probably a mix of the above, different for each person. All adds up.
It must kind of suck to be someone entering college right now without natural interest for and aptitude in a STEM field.