The idea of a mostly free online CS education seems quite popular on HN. However, I remain skeptical re: employ-ability. Has anyone done any kind of study or survey to see whether these types of rundowns improve a self-taught programmer's change of gainful employment? How does self-taught compare to degree-holding, and how do they both compare to this kind of pseudo-degree? How does one list "cobbled-together CS education" on a resume?
If I sound grumpy it's just because it's before noon, I'm genuinely curious as to whether this kind of pursuit is a viable alternative to the degree I'm slogging through.
I have similar concerns. From my experience working in the biz, many companies job opportunity are hidden behind a thick wall of HR and corporate recruiters. I was interviewed by one just a few weeks ago, and I was left feeling pretty dirty afterwards. The person who interviewed me had no way to verify my claims, knowledge, or understanding of the industry. I have a degree or two, but none in CS, though Ive been self taught since age 11. It is unlikely I will receive a follow up call for the job as the individual in question has no way to qualify my experience.
I expect that it makes networking and work experience a lot more important. A friend of mine who taught himself programming tells me that his interviews tend to start with either "A literature degree?" or "It looks like you're a self-taught programmer." So you at least get a predictable icebreaker out of it.
The part that it makes tough is getting that interview. If it's a company that bothers to click your resume's Github link and see some work samples, you're probably OK. If it's a big company with a crappy HR filter on incoming applicants, you might have to find another way to get a foot in the door.
I know Google has a pretty good chunk of people without CS degrees. I'm curious if any self-taught people manage to get in there as a first job in the industry, like grads hired fresh out of college.
Agreed, networking is important, and Ive done a bit of that, which is how I got my foot in for the initial interview. Once there though, it was scary how little the interviewer knew about the position they were supposed to be recruiting for. They did have me sign a right to represent form for the job (which was a 9 month contract position at a company that starts with an I and ends with L) but i never did receive any follow up from them.
My concern is in situations like the above, the ONLY way such a recruiter can qualify you is based on value of your degree parameter. Which means if the company you are applying for goes the traditional big-bizz HR approach, go get a degree in CS from a Brand-name institution. Otherwise, focus your efforts on getting interviews with whomever your direct supervisor will be. That however, is easier said than done.
For me at least, the "slog" is not the work (I absolutely love writing code and learning CS), it's the organizational side: showing up to scheduled events (group meetings, I take online classes), completing designated assignments with little to no room for creativity, etc. That's a bit different than assuming a Coursera/edX path is a free ride. You just get a lot more autonomy.
You take a comprehensive background in CS to learn CS, not for direct employment. The benefit is in being as strong an engineer as someone who went to school (theoretically).
In practice, all of the people I know who are successful engineers without a degree simply don't have an "Education" section on their résumé. They will make up for it in the other sections.
As for your last question - yes, it's completely viable. There are many people who make substantial salaries (much higher than the median engineer) without degrees. Just learn how to network and sell your skills. It isn't even all that difficult.
All those job ads that say, "You need to have a Bachelor's, preferably Master's" don't actually require those (with a few clear exceptions). In fact, you will become much more successful in your career if you learn to network with hiring managers and learn to pick out and ignore the more irrelevant requirements on a job ad.
Now, I'm not suggesting you drop out. I'm just saying it's completely viable.
Sure -- I'm not disputing that the primary reason for a strong CS background is to be a better engineer (which would of course translate in less tangible ways to employability, like having more impressive projects and promotions).
I just already assume that these online mostly free options are equivalent to if not better than your typical 4-year CS degree in terms of gaining a background in CS. In my mind, the reason to pay for the 4-year degree as opposed to a program like this is employment. The (non-HN) mantra usually goes, "having that piece of paper opens doors."
So, I think it is relevant to ask these questions regarding employment, as that is usually a big part of the justification for spending money. Further, it is often not accurate to attempt to draw a distinction between the two on the basis of educational quality.
Just one example of one of these exceptions is government work. The government requires it's computer scientists to have a degree, and has a rigid pay scale that uses highest degree earned as a factor, along with years of experience, and leaves little wiggle room for any actual demand for your skills.
I self taught for the most part, but had to get that piece of paper anyway, because I have ties to the area I live in and the only reliable employment here is the FAA. Moving or commuting to the nearest big cities just wasn't for me. I'll probably also have to go back and get an MS at some point to be able to progress up the pay scale.
I certainly hope that remote work, if it's not an option now, will be over the next ten years. It's really sad that we have all this (Internet scale) networking and communication technology, and still demand that people sit like hamsters in little cubicles, getting less done, than if they could sit in a comfortable home office...
Yes, there are great benefits to meeting face-to-face etc, but it's still sad. I mean, if people can build and maintain the kind of organizations you see in EVE online and other MMOs without (mostly) meeting -- why not for work?
Yeah, it would be nice if there were more remote options, especially outside the area of web development, which never really got my interest.
Federal employees here seem to get some leeway with regards to actually coming in versus working from home, which is encouraging, but contract employees are on a tighter leash (or straight up second class citizens, depending who you ask). But there are plenty of things we do that just couldn't be efficient remotely, since there's a lot of custom hardware and lab-testing involved.
Btw, I'm not really complaining. Working on air traffic control systems is a pretty damn cool career, imo. It's fun to make a small stretch and answer, "What do you do?" with, "Oh, I just keep planes in the air."
I'm an engineer who spent a few years doing recruiting for top Bay Area startups.
For the kinds of companies, I recruited for, if your school is top-tier, having that brand on your resume is going to open doors. If it's not, then you might as well go self-taught and save some money because at least then you'll look a bit unique and like someone with grit/initiative. Resumes from n-tier schools very rarely make it past the gatekeepers, unless you have some really salient projects or come in as a referral.
re: "doing recruiting for top Bay Area startups. For the kinds of companies, I recruited for..."
What about the other 90% (or whatever it actually is) of software jobs out there? People like me, who have dropped out of college multiple times, come from families without money or connections, and don't want to live in the Bay Area or SV, will be applying to a whole different class of company and will probably face a much different hiring environment. Personally, that's what I'm more curious about in the context of educational certification.
There are a lot of people getting hired after these 3 month crash courses who are actually self-motivated to keep learning. Others moved up from the help desk when they were able to solve a problem that impressed someone in IT. They have the natural skill and the first (or second, or third) job but have major gaps in their skillset.
Then, there are people who get CS degrees but didn't get everything they really needed. They have the job, but are running up against boundaries of their knowledge.
Then, there are some precocious 12 year olds who just don't have access to the information yet. They may eventually get into college CS but need a little help in the presentation of the information. I wish I would have had this at 12! The Pascal compiler wasn't enough for me past the fooling around and small problems I fixed. I didn't have the resources to ask people when I got stuck, so I gave up until I made it to college.
I don't view courses like this as a way to become employable really. But I'll probably follow this stuff just to become better in a more structured way. I signed up when ML and AI became first available on coursers (as soon as they launched and before the udacity spinoff). A few lectures in and I realised that they weren't kidding when they said the prerequisites of maths was needed. Attempting to find a way of doing it was just overwhelming. Amidst work requirements I gave up. I would have loved a guide like this when I was starting out.
These courses will absolutely not make you employable on their own. However, if you do these courses and develop a CS/math vocabulary and you also build some substantial things then you'll absolutely be employable. In fact you'll be fairly employable with only the building stuff part but it's nice to have some foundational tools for modeling complex problems and the vocabulary to discuss problems and solutions precisely with fellow engineers.
I am convinced that the more people get higher education, the better it gets for humanity.
This is a great list. I've thinking a lot about open/free education for masses in my wondering times these days. I was going to compile a list of available online courses just like this but more so in a semester wise fashion so that anyone interested can actually dedicate time accordingly as if they are part of a regular college curriculum.
As more and more courses come online, getting full-on degree becomes very viable by just attending lectures online, getting together with local students for group study or assignment, on-demand labs and support of mentors. There is greater need for open standard so that employers can start accepting these students as viable accreditation options for employment in their organizations.
This is superb. I've been trying to talk people out if getting MS degrees in CS as a way to learn to program for a while and have always recommended self-study like this if they have the stomach for the whole autodidactic thing. Going to add this list to my arsenal of resources. Really well done!
This is fantastic. I switched careers a couple year ago (used to be a CPA) and am now a very happy software engineer at a tech company. These sorts of resources are great.
I want to iterate, though, for people without CS degrees that doing something like this will NOT make it easier for you to get a software engineer position in and of itself. The skills you learn from things like this will though - so use this to be able to learn what you need to know to build cool side proects. In my experience, companies will usually ignore your lack of CS degree if you have projects that demonstrate your knowledge. I personally have many projects using some high level languages doing things like web apps or visualizations, and I'm also working on an emulator just to teach myself more about computer architecture. It helps that even though my job has me working very far from the hardware, I still find all this stuff fascinating.
Well, without a piece of paper from some third party certifying they think you know CS, and then also without having stuff on Github, you're basically just asking anyone to take you at your word that you're a programmer. I interview regularly for fun and I do not have a degree, only projects on Github, and I have never once been asked about a CS education or background. In fact, I just went to an interview where they didn't even ask for my resume, just a link to my Github. This is really the meat of it: Being able to prove that you are a programmer is even more valuable than have a piece of paper from some third party certifying that they think you are a programmer. And this is really the weakness of a degree: Those universities cannot prove that you are a programmer. They can only certify that they made "teaching" of some of the knowledge base available to the person. This is less useful than a Github full of source code and a regular commit history, though less useless than a resume full of personal claims. In my social circles, I'm the guy everybody knows as the lifelong programmer. So there are late-bloomers that come to me asking for advice. I tell them to just start slapping shitty code into a Github account, and frankly it's the best thing they could do for themselves if they really want a job writing software.
This isn't a bad idea. Even for people with a CS degree.
Usually in a CS degree there are a number of optional upper level courses you can take.
You need to take some number to graduate, but can't take all of them unless you delay graduation (By years). Having a well laid out path to learning subjects you didn't cover in a CS degree is a benefit.
Machine learning/AI wasn't taught at nearly the level it is now when I was in school. We've learnt a lot formally about distributed systems, etc. So kudos.
Do the compsci intro first then do the math in code, that's what I've been doing for some of the courses it helps give you practice programming. I started in Scheme now going through 'Doing Math w/Python' book from nostarchpress for things that need libraries
31 comments
[ 2.7 ms ] story [ 83.0 ms ] threadIf I sound grumpy it's just because it's before noon, I'm genuinely curious as to whether this kind of pursuit is a viable alternative to the degree I'm slogging through.
The part that it makes tough is getting that interview. If it's a company that bothers to click your resume's Github link and see some work samples, you're probably OK. If it's a big company with a crappy HR filter on incoming applicants, you might have to find another way to get a foot in the door.
I know Google has a pretty good chunk of people without CS degrees. I'm curious if any self-taught people manage to get in there as a first job in the industry, like grads hired fresh out of college.
My concern is in situations like the above, the ONLY way such a recruiter can qualify you is based on value of your degree parameter. Which means if the company you are applying for goes the traditional big-bizz HR approach, go get a degree in CS from a Brand-name institution. Otherwise, focus your efforts on getting interviews with whomever your direct supervisor will be. That however, is easier said than done.
I'm pretty sure its a mistake to think the free online CS education won't require alot of 'slogging' to have any value
the benefit you have is that you have real life humans, who hold office hours, and will answer question in real time, when your slog gets tough
ultimately though, you'll be judged on what you know, not where you learned it
You take a comprehensive background in CS to learn CS, not for direct employment. The benefit is in being as strong an engineer as someone who went to school (theoretically).
In practice, all of the people I know who are successful engineers without a degree simply don't have an "Education" section on their résumé. They will make up for it in the other sections.
As for your last question - yes, it's completely viable. There are many people who make substantial salaries (much higher than the median engineer) without degrees. Just learn how to network and sell your skills. It isn't even all that difficult.
All those job ads that say, "You need to have a Bachelor's, preferably Master's" don't actually require those (with a few clear exceptions). In fact, you will become much more successful in your career if you learn to network with hiring managers and learn to pick out and ignore the more irrelevant requirements on a job ad.
Now, I'm not suggesting you drop out. I'm just saying it's completely viable.
I just already assume that these online mostly free options are equivalent to if not better than your typical 4-year CS degree in terms of gaining a background in CS. In my mind, the reason to pay for the 4-year degree as opposed to a program like this is employment. The (non-HN) mantra usually goes, "having that piece of paper opens doors."
So, I think it is relevant to ask these questions regarding employment, as that is usually a big part of the justification for spending money. Further, it is often not accurate to attempt to draw a distinction between the two on the basis of educational quality.
I self taught for the most part, but had to get that piece of paper anyway, because I have ties to the area I live in and the only reliable employment here is the FAA. Moving or commuting to the nearest big cities just wasn't for me. I'll probably also have to go back and get an MS at some point to be able to progress up the pay scale.
Yes, there are great benefits to meeting face-to-face etc, but it's still sad. I mean, if people can build and maintain the kind of organizations you see in EVE online and other MMOs without (mostly) meeting -- why not for work?
Federal employees here seem to get some leeway with regards to actually coming in versus working from home, which is encouraging, but contract employees are on a tighter leash (or straight up second class citizens, depending who you ask). But there are plenty of things we do that just couldn't be efficient remotely, since there's a lot of custom hardware and lab-testing involved.
Btw, I'm not really complaining. Working on air traffic control systems is a pretty damn cool career, imo. It's fun to make a small stretch and answer, "What do you do?" with, "Oh, I just keep planes in the air."
For the kinds of companies, I recruited for, if your school is top-tier, having that brand on your resume is going to open doors. If it's not, then you might as well go self-taught and save some money because at least then you'll look a bit unique and like someone with grit/initiative. Resumes from n-tier schools very rarely make it past the gatekeepers, unless you have some really salient projects or come in as a referral.
This is all rather silly, of course. I wrote at length about it here: http://blog.alinelerner.com/silicon-valley-hiring-is-not-a-m...
re: "doing recruiting for top Bay Area startups. For the kinds of companies, I recruited for..."
What about the other 90% (or whatever it actually is) of software jobs out there? People like me, who have dropped out of college multiple times, come from families without money or connections, and don't want to live in the Bay Area or SV, will be applying to a whole different class of company and will probably face a much different hiring environment. Personally, that's what I'm more curious about in the context of educational certification.
Where is the cutoff after the obvious choices? Georgia Tech? UT Austin? University of Florida? etc. etc.
Then, there are people who get CS degrees but didn't get everything they really needed. They have the job, but are running up against boundaries of their knowledge.
Then, there are some precocious 12 year olds who just don't have access to the information yet. They may eventually get into college CS but need a little help in the presentation of the information. I wish I would have had this at 12! The Pascal compiler wasn't enough for me past the fooling around and small problems I fixed. I didn't have the resources to ask people when I got stuck, so I gave up until I made it to college.
It isn't just about zero to google.
Halleluja.
This is a great list. I've thinking a lot about open/free education for masses in my wondering times these days. I was going to compile a list of available online courses just like this but more so in a semester wise fashion so that anyone interested can actually dedicate time accordingly as if they are part of a regular college curriculum.
As more and more courses come online, getting full-on degree becomes very viable by just attending lectures online, getting together with local students for group study or assignment, on-demand labs and support of mentors. There is greater need for open standard so that employers can start accepting these students as viable accreditation options for employment in their organizations.
I want to iterate, though, for people without CS degrees that doing something like this will NOT make it easier for you to get a software engineer position in and of itself. The skills you learn from things like this will though - so use this to be able to learn what you need to know to build cool side proects. In my experience, companies will usually ignore your lack of CS degree if you have projects that demonstrate your knowledge. I personally have many projects using some high level languages doing things like web apps or visualizations, and I'm also working on an emulator just to teach myself more about computer architecture. It helps that even though my job has me working very far from the hardware, I still find all this stuff fascinating.
You need to take some number to graduate, but can't take all of them unless you delay graduation (By years). Having a well laid out path to learning subjects you didn't cover in a CS degree is a benefit.
Machine learning/AI wasn't taught at nearly the level it is now when I was in school. We've learnt a lot formally about distributed systems, etc. So kudos.