My friend dropped out of college. My girlfriend is <i>in</i> college. I was talking about how she has a few years left and he starts shaking his head. "I just don't get it. So long and for what? To get a job?"<p>When he dropped out of engineering school he went to manage a restaurant. Made good money. Then started to build a house. Quit that too. He <i>almost</i> had occupancy on it and said, "I'm done. I'm out."<p>That's <i>also</i> what college is about. If you come to me looking for a job and didn't go to college, why? Did you drop out? Why? Do you not think learning is important? Do you not understand sticking it out until you have accomplished the goal?<p>Do you <i>give up</i> before you are through?<p>Not only that, but of course, I meet folks all the time who think "you don't need a degree to be a programmer." Sure. You don't need a degree to put Ikea furniture together either. I don't need programmers. I write programs to write programs. I need folks who know how to <i>think</i>... for <i>themselves</i> and <i>learn</i> and go out and find knowledge they need to solve problems and then solve the problems.<p>Until they are <i>done</i> solving the problem.<p>Not until they've given up.
The real take away is that structured exercises and projects are both a great way to develop and display your abilities and being able to demonstrate these is more important than holding a credential within the tech industry.<p>The barrier to entry for most people to tech jobs isn't whether or not they can get interviews, it's whether or not they can pass the technical assessment that's become a standard part of the process. In other industries, GPA, school rank, highest degree earned are hard pre-reqs to <i>inteviews</i>, even for entry-level jobs. That isn't necessarily the case in tech.<p>I work in a field that falls under the "data science" umbrella and I take issue with a lot of online courses compared to traditional education because almost all of them overpromise and underdeliver and take advantage of naive students that don't know any better. I can't tell you how many applicants I've interviewed that list dozens of online certifications for this and that skill, but can't demonstrate any knowledge of it when asked or assessed.<p>Just my $0.02, but online tech courses and degrees are akin to the MBAs of a decade ago: exploitive, expensive, and often entirely unnecessary. I would still hold that a technical computer science degree from a 4-year university is worth it, however, for the benefit of being in a collaborative learning environment with peers (Note: That doesn't mean you have to go to Berkeley - I went to a top 50 state school and got the same education and job opportunities as all of my friends that went to top 10 schools, but I graduated with a positive net worth.)<p>(Disclaimer: I know there are always exceptions to everything. I have generally heard very good things about GT's courses - Udacity's I'm more skeptical of.)
I think it really depends on what you're trying to do and learn.<p>Lots of folks who have taken my Flask course[0] said they learned more about web app development in 10 hours of self paced videos than they did in 4 years of university. Lots of them felt like they finished the course really knowing how to build something, and many of them have gotten hired for work shortly after.<p>But the course doesn't touch algorithms or any theory around computer science. It's just 10 hours of exposure to building a real SAAS app in stages.<p>I personally believe experience trumps almost everything and courses can be very good for people who consider themselves self guided learners, because you always have the power to research the theory while treating it as something that's on a need to know basis. Taking a course on a specific subject lets you focus your time on the exact thing you're trying to accomplish and some course instructors also provide free support (I do), so you always have an out or 2nd set of eyes to help get an answer for things you can't figure out alone.<p>I never went to college but I do sometimes regret missing out on the social / networking experience, but I have no regrets about taking a self guided approach to web development for the last 20 years and I'm happy with how things turned out.<p>[1]: <a href="https://buildasaasappwithflask.com/" rel="nofollow">https://buildasaasappwithflask.com/</a>
Traditional universities have 3 advantages over online course providers like Udacity, Coursera and Khan Academy:<p>1. They act as a coach: The professor and your peers expect you to attend lectures. The assignment is due by 5pm on Wednesday. If your performance isn't satisfactory you will be dropped from the course.<p>2. They get better feedback about their teaching. If half the students can't do the assignment on a particular topic, the professor can schedule catch-up lessons. Watching a group of students struggle with a question can give valuable insights about how to teach that topic effectively.<p>3. They act as a high-quality filter: Only high-quality applicants will be admitted to the university course, while anyone can pay $10 and start doing a Coursera course. The university also offers the opportunity to become part of a valuable alumni network.<p>(Some online bootcamps like Lambda also have these advantages because they insist on strict online attendance and are willing to drop students who don't put in the effort)
Learning complex subjects is often uncomfortable. For me, college was the start of becoming comfortable with feeling stupid while learning. You learn to learn. You learn what parts of learning are normal.<p>I started college in 2001 as a computer science student and didn’t “finish” for over 10 years because of job (sysadmin for university) and consulting opportunities (travel). I’m glad I finished because it’s behind me and I don’t need to think about it any more. I still have the common nightmare of not knowing where my final exam room is located.<p>Anyways, I am a big fan of online courses. In early 2000s I had learned and built many PHP sites and started with Rails. There were no classes/courses on PHP or rails!<p>Fast forward to early 2010s and I find myself watching Stanford’s iOS development courses. I leveraged the knowledge to become a successful mobile app developer consultant.<p>A few years ago I purchased a handful of online courses on React/Redux. With that knowledge I’ve built a successful Electron JS app available on app stores.<p>These successes are not because I’m smart. It’s because I have a high tolerance for pain and boredom. When I see a challenge I keep digging at it until it’s solved.<p>Protip: Watch lectures at 1.5X speed (2X if review). Anything slower and my attention becomes highly distractable.
It’s quite simple really. There are some careers where you can learn and advance far more on your own.<p>Software engineering is one of them. The amount of tutorials and videos available on the internet far surpasses any curriculum at school.<p>But on the other hand, anything that requires hands on training that you can’t get at the comfort of your house, like medical or scientific careers, those you probably need to go to a school for.<p>Further more, in terms of software engineering, I don’t think the school system can ever keep up with the fast pace of the tech world. It’s just a rigid system and too slow for anything fast changing, like the web/app development.
Interesting take. I am a graduate and former TA in OMSCS, and used to work at Udacity building Nanodegrees (worked on ML & AI mostly). My experience is from a different perspective than the article, but I appreciated the differences without disagreement.<p>What I found in my time in both environments is that Nanodegrees appeal more to students who don’t have access to traditional education (college is too expensive, or grad school requires an undergrad degree, etc.). That makes most MOOC students less experienced, less qualified, and higher risk (in the sense that they mostly don’t have the profile of successful college students). Udacity, et. al., then appear to have a very important role to play in satisfying the need for education unencumbered by academic gatekeeping.<p>But the _other_ constant undertone in the MOOC community is the “get-rich-quick” crowd who expects a Nanodegree to make them a 6-figure AI engineer in three months at 5 hours per week. The dirty secret is that we already have a fast-paced learning environment that can give you a good crash course on the required core skills to make you a useful apprentice: it’s called “college”. It’s arguable that the typical BS could be abbreviated a bit or focus a bit more on “job-ready” skills. But I think the time required for most people to get there is much closer to a 48-month BS than a 4-month Nanodegree.<p>The other dirty secret is that no one wants to hire you as a junior developer at SV rates if you don’t have experience and need a visa or want to work remotely in your low CoL hometown. Unless you already have strong qualifications, you’re fooling yourself if you think an ND or Udemy course is gonna help you break into Google as a fully remote worker.
I work in the realm of higher education analytics. My comments here pertain to undergraduate students:<p>For the vast majority of students, online courses are not a good vehicle for learning. Not because online courses are, in themselves, ineffective, but because success in them requires a much higher degree of internal motivation. Without the structure afforded by the traditional classroom experience, a very large number do not engage with the coursework, especially beyond the first week or two. We see a rapid drop off in activity & assignment completion.
This article is about learning, but the context seems to be about landing a job. Software jobs are all about who you know. People who know people get waved past all the red tape. The truer purpose of education is relationships not knowledge. This is why there are high school dropout senior engineers ordering burgers from CS grads. If you're in it for money, you're less likely to build relationships. This is why I'm genuinely concerned for all these people stampeding towards CS. It's gonna be ugly in 5-10 years IMO.
For me college was only useful to learn math, while everything I know about programming I learnt myself. Technically, everything I learnt about math I also learnt myself, but there was an important difference: math courses were structured in a particular way, as a sequence of topics that build on previous topics, and I had to pass exams on those topics, while learning programming was unguided. I don't use math at work, but math completely changed the way I think, and that happened during the first year in college. By "completely changed" I actually mean a substantial meaningful change in my thinking process. I believe, that the same result can be achieved by reading and <i>proving</i> all the theorems in the calculus: the end result should be understanding how the notion of integrals is derived from the definition of numbers and the ability to actually derive it on paper (since just understanding often misses small details that change everything).<p>As for my programming skills, I can safely say they are top 1%, as I can often ignore inquiries from say FB HRs. Yet I learnt everything myself. Without math, and without that structured way of thinking that's required to prove theorems, I wouldn't be able to get to the CS fundamentals, and my CS knowledge would be very shallow. There were a few CS teachers in college, but even then it was obvious to me that they don't know much and they had to cater to the least able students in the group anyway. I don't see a way to bring highly skilled and competent CS teachers to college: those who really know programming and have interest and ability to deal with people, often make 500k+ a year with very relaxed work hours - there is simply no incentive for them to bother teaching CS to (mostly uninterested) kids in college. And those who do teach CS in college as their full time job don't know much about CS, simply because gathering that knowledge is a separate full time job.<p>Edit: so online courses or college? Neither. You only need a book that thoroughly explains fundamentals and will to go thru it. Not enough will? Then you need a teacher whose only job will be to assess your knowledge twice a year in the form of some exam. Both online courses and college are too slow: I could honestly finish a masters degree in 1 year if I could avoid wasting time on all the fluff.
I like to think of (software) engineering as a craft. Obviously the most effective way to learn something is by doing. The best way to get going and help you jump hoops and level up is having a mentor, or friends to talk to. Master/apprenticeship is old-fashioned but highly effective. All courses I've seen are boring, uninspiring and often ineffective, as it's often hard to relate them to a real problem you might have. Having real problems make you learn really fast.
The conclusion is sound, the assignments reinforce learning through multiple and repeated usage of the various skills needed to complete them. The lectures and notes and readings are there to give a foundation and to be a reference to some extent. However, it's difficult to say that the only useful part of these courses are the assignments...<p>>The best way to learn is to do your own experiments. Once understood, that understanding lasts a lifetime. Facts can change, but the governing rules, if deciphered, won’t.<p>I recommend to all software developers that they join the ACM (Association of Computing Machinery). This gives you access to computer science papers which are the foundations and the governing rules. There's also access to Safari Learning which gives you access to the latest books and video courses:<p><a href="https://www.acm.org/membership/membership-benefits" rel="nofollow">https://www.acm.org/membership/membership-benefits</a><p>It costs a few hundred bucks a year and I've learned more in reading random CS papers and having access to great books and video courses than paying for many courses.
If you want to create web apps go to online courses.<p>If you really want to understand how machines work, how strings work.<p>How distributed computing works<p>How databases work<p>How to program efficient string search<p>How regular expressions work<p>How to represent problems well for example in graph<p>How statistics works<p>How to analyze problems<p>How to read papers<p>How to be able to learn anything by your own<p>And the list goes on and on<p>It's all in real college University courses no online course would give that to you.<p>You have to focus on theory of math and cs for a couple of years and stretch and train your mind.
Ohai HN! I lead product and engineering for services and the project reviews system at Udacity - seeing this post gives me a lot of purpose to go to work on Monday. We are hiring engineers who are passionate about changing education!<p>Frontend engineer on my team: <a href="https://boards.greenhouse.io/udacity/jobs/4320541002" rel="nofollow">https://boards.greenhouse.io/udacity/jobs/4320541002</a><p>All open engineering positions:
<a href="https://www.udacity.com/jobs#engineering-it?location=all" rel="nofollow">https://www.udacity.com/jobs#engineering-it?location=all</a>
There was some link a few weeks back about the low completion rate for some online coursework being abysmally low.<p>This is HN, I would expect a hundred anecdotes from those who have succeeded against the traditional educational system in CS.<p>But are there studies or other evidence this is more then survivorship bias? Is any study following dropouts, non-BS grads, bootcampers and online students in the industry over time and counting from the total population who registered for CS 101?
> The one thing that most of the colleges don’t do well is teaching you how to apply what you just learnt.<p>I disagree 100%. That is the primary value I got from college - learning how to not only learn, but break everything down, re-conceptualize it into new things, and build it back up into something productive. We absolutely applied what we learned to our own projects, and I've found those lessons continue to work well a couple decades into my career.
This is very true. I am in college (non-american) and feel very weird because of the way a lot of stuff it taught here. Teaching is a different matter, but it is the grading that makes it worse. Questions asked in exams don't correspond to what is useful as far as I have seen programming on my own. Things I've learnt on my own help me understand stuff but papers are made just to ensure that those who mug up get better grades. It's sad.
I've worked with people with cs degrees and self taught / bootcamp types and the biggest difference between them hasn't been based on their background but their commitment to continued learning on and off the job. Granted I can only judge their ability to do work similar to mine and not incredibly difficult by any stretch.
Dropping out of college (or not attending college) for comp sci is great if you can make it work, or if you have the knowledge and discipline to get where you want to go.<p>However, for many (myself included), it provided a framework that I wouldn't have been able to get otherwise. After I got that framework, then the idea made more sense to me.
Tangential, but somewhat related: At the community college level, there is an excellent degree type that still allows for a small liberal arts core, but focuses much more on marketable skills: The Associates of Applied Science, or AAS.<p>It has some, but reduced humanities requirements and focuses much more on career skills of the chosen area, all of which have specific, immediately accessible job opportunities. The really unfortunate part of this degree, however, is that it's very hard to build upon later at a 4 year school to finish a bachelors if you so choose: the credits either don't transfer or transfer as electives, not requirements towards a degree. Again, a major pivot is needed for traditional 4 year schools.
In the US, college is very much about being taught - everyone following the professor's lectures through the syllabus step by step, with exercises, quizzes, and tests for course after course. It's my impression that in other countries the student is given broader direction, studies more on their own, attends lectures or not, meets with tutors, and is assessed at the end of the semester. This seems sort of half way between the US college and the US online approaches.<p>The fully online approach seems good only for those who are natural autodidacts or as a fallback for those who simply can't get through some of the non-CS required college courses.
Another article spewing the same garbage. "You can't learn theory without a college degree." What? Do textbooks teaching theory not exist outside of college? Are there no blog posts teaching theory on the internet?<p>My self education took about as long as a college degree anyways, but I was able to work the whole time which I think gave me a bit of an edge over most college graduates. Self education can feature as much or as little theory as you decide you want to learn
I didn't learn much about software engineering in my "Computer Science and Media" degree. But somehow I have the feeling it helped me learn stuff in general.
Getting a university degree has been the single most rewarding experience in my life. It gave me opportunity in life. I was born to very poor parents who didn't have high school diploma or degree. We had almost nothing growing up. Getting formal education changed my life. I got internship before graduating with my degree. And I got entry level position immediately after graduating. I started saving to pay off my student loans immediately after that.
I think people are confused here. It is not about going to college, it is about selecting field of study. A plumber don't need to go to college he just need a vocational training by doing hands on. But a mechanical engineer/scientist has to go to college to study something deeper. Udacity and coursera are filling up the gap for college courses, but you need expert professor guidance if you want to do some research.
A 4 year degree really helps when trying to get an employment visa in a developed country though. e.g. Japan has a 4 year degree or 10 years equivalent work experience requirement.<p>There was a thread last year where lots of people commented about being rejected for a visa in Europe because they didn't have a degree, despite having multiple years of experience.
I think in your case the combo of Udacity nanodegrees and OMS CS is absolutely perfect. You get overwhelmed by Top 10 academia rigor and flooded by projects, and then jump to cutting edge with Udacity and do cool stuff like self-driving cars. The only drawback would be lack of time to do anything else.
So the author starts with a first paragraph in which his presentation is largely biased in favor of online courses and then a second one in which he reveals that what he calls "college courses" is also an online version of it. The title isn't appropriate.
I'm learning writing code right in my college now and many online courses do provide a lot of basic information in coding like Randomized Algorithm etc. I think if I get all these classes I can learn more than my classes in college in terms of quality.
Raahul, how do you like the omscs program? i am in it as well but worry that it is easier than the on campus MS. Even though I suspect it is easier, I still find the workload very heavy.
If I was a young person I would do this instead of these courses.<p>Start with leetcode easy and see what I am missing if i am unable to solve that problem. progress all the way to leetcode hard.<p>Anything else is pure waste of time and would <i>not</i> land you a job.