Let me summarize what I believe to be mostly uncontroversial.
1. All else equal, and looking at the industry as a whole, having a college degree in CS is an advantage in getting hired over being self-taught. Things get more fuzzy if your degree is in math/physics/etc., but those still confer some advantage.
2. The advantage is very large for entry-level roles but diminishes greatly with experience. The advantage is even larger if you went to an elite school. The advantage is small if the school is mediocre, and negative if it's a diploma mill.
3. The advantage varies greatly with the company. Google definitely cares more than most startups.
4. The advantage virtually goes to 0 within a decade but never completely goes away, simply because of effects like your-interviewer-went-to-the-same-school, alumni networks, and the fact that more people irrationally care about CS degrees in senior devs than are irrationally biased against them.
5. Whether the advantage is worth the cost is a very complicated issue. This advantage is almost certainly not worth it if you have to go 100-250k in debt (private schools). The opportunity cost is also quite large, but this is complicated because what self-taught job you get depends on your own background. Coding bootcamps also complicate things. At a certain point depending on scholarships / parents paying / going to an in-state school, it makes sense.
Regarding #1; I'm curious as to how old you are? I'm wondering if the worth of the degree is relative to the age of the audience evaluating it?
I've consulted at a lot of startups in the Bay Area as a Rails engineer, and we've mostly leaned on doing a series of hands on coding exercises (e.g. Let's develop a simple TODO list in Rails).
I've probably done a couple hundred interviews, and the topic of where the candidate went to school was discussed in depth once. And that was only because he was an MIT graduate, looking for a senior role position, and missed some basic model associations in our exercises.
I just can't see any of my colleagues saying out loud "yeah, this kid went to Berkeley, so he must be a winner. Let's go with him."
This is consistent with my comment. I'm sure most Rails startups don't care as much. But 1) startups, and 2) Rails, only form a small fraction of the industry. I'm sure things are different at Google, Facebook, and infra/system/research/algorithm teams. Also, the big companies have massive university recruiting programs.
HR do the recruiting, and have to fit the recruit into a company-wide HR policy pay-and-benefits grading structure. That structure takes account of education.
HR also know nothing about tech (and are usually bizarrely proud of it). So they need the tech people recruiting to lay out a range of specific qualifications or experience that the recruit needs, so they can easily reduce the huge pile of CVs down to something more manageable.
The combination results in a degree being required, and CV's with no degree never even make it to a review stage.
It sucks, because often the best programmers are not degree-qualified. But large organisations aren't actually a meritocracy, or concerned with hiring the best people. They want the people who will fit into the large organisation and its bureaucracy nicely. A degree usually indicates at least some respect for authority, so actually it's a good qualifier.
> HR also know nothing about tech (and are usually bizarrely proud of it).
This is so true in every industry. My company did work for a big HR firm that specialized in servicing the accounting industry. Every one working for that firm was aggressively ignorant about every aspect of accounting. Having known people in other HR fields, that tends to be true overall. It almost feels like they think that finding out more about the industry they are servicing would somehow lower them to the level of the "peons" they are hiring. This is anecdotal only, of course.
> It sucks, because often the best programmers are not degree-qualified.
I've worked with very good programers that don't have a degree. But, learning the basis to become a good software engineer, is just a lot easier following formal training (like going to University). I find it hard to believe that most competent programmers will not have a degree.
Again, having a degree is not necessary to be a good software engineer. But it's a lot easier to be a good software engineer if you have a degree.
Most computer science curriculum I know of are far from engineering curriculum. Few students seem to retain any knowledge of predicate calculi or how to apply them to software specifications.
Perhaps. My curriculum (and of most other universities in my country) thought me the basis of OOP, Databases, Software Requirements, Development Processes, Distributed Systems, etc... All these concepts map directly to my day to day to job. Having learned this at college, made my life a lot easier after entering the market. And I still think that holds true after 10 years of professional experience.
When hired, I was told that my job is to prepare the students to work in a cubicle.
This is reflected in the curriculum - for example, proprietary software is taught (even where open source tools excel), because they are more likely to be found in the large corporation they are being prepared for.
If you think of cubicle training as the main job of the university, it follows that large corporations would look for degrees.
> If you think of cubicle training as the main job of the university, it follows that large corporations would look for degrees.
If you read The History of Education (1920)[0] which outlines how the American and the Preussian system of education it is based on was created and on what basis, you'll see that this is exactly true. Education has never, ever been about exploration, or knowledge for its own sake. It has always been about increasing productivity for businesses, and tax revenue for government.
This is desperately cynical and I'm struggling to picture an academic being told that. What did you teach, what was the university and what field were you in?
I've seen the same (from the student perspective). This philosophy applies to a lot of mid-tier public schools whose major selling point to students is "job marketability".
For certain departments an amount of prestige is owed not just to the research you put out, but how many students you successfully place in jobs in the field.
I studied geography at a mid tier public school and this school of thought was pretty prevalent. The professors used open source software in their research but when I learned statistics it was IBM SPSS and GIS was all ESRI and MapInfo. The department even hand curates a list of alumni and their current employers for marketability to future students.
Big successful tech companies don't have this problem. Eng recruiting is it's own org, who works extensively with engineers and engineering managers.
Recruiters basically keep a database of engineers and contact them to get them into the typical interview funnel. Interviews are done by engineers and their managers only and then everyone gets together in a meeting soon after to give a hire/no hire. Then recruiters (and managers) attempt to close the interviewee. This has been my experience after interviewing at dozens of companies at various sizes, from small to huge.
It's the pre-interview stage that usually fails to let non-degree-qualified candidates through. The list of people that engineering get to hear about are either already doing the exact same job somewhere else, or are degree qualified. Getting into that funnel with no degree is hard.
Where you attended school and how well you did is IMO a factor only at your first job out of school. It certainly won't outrank other interview factors, like you indicate.
But a degree in general does seem to be requisite for even professionals with decades of experience.
If they are a govt/DOD contractor, there are reasons they can't hire "actual" engineers into "engineering" positions. It comes down to billing the government. I've run into this many times over the last couple years.
For most jobs the school is self does not matter much, but going to and finishing school provides me a lot of information about the candidate without needing to discuss it. It's 3-4 years of life and work experience that is not directly related to programming. That is important experience to be considered when trying to hire a well rounded employee. It's not essential to have, but it helps especially if you are 21-22 years old and do not have a lot of prior work experience on your resume or CV.
There was definitely special treatment for MIT grads when I was interviewing at FB/Google. At FB, all of the MIT students were split off to go to the paid sushi restaurant on campus, while everyone else went to the general cafeteria. At Google, I was told that MIT grads generally skip the phone interview and go straight to onsite (and this was the case for my interview with them too). I'm not sure how big the difference is, but they weren't school-blind.
When interviewing at Google, I also skipped the phone interview and went straight onsite because of where my degree was from. Or at least, that's what the recruiter said.
Google claims to have a lot of data backing up its hiring decisions, so maybe they have internal stats showing phone screens aren't a useful further signal for certain alma maters?
MIT (and even more so for CalTech, but they don't have a world class CS program) has substantial math and science requirements that are not part of the required ABET CS curriculum. Per e.g. http://www.abet.org/wp-content/uploads/2015/05/C001-15-16-CA...
One year of science and mathematics:
1. Mathematics: At least one half year that must include discrete mathematics. The additional mathematics might consist of courses in areas such as calculus, linear algebra, numerical methods, probability, statistics, number theory, geometry, or symbolic logic. [CS]
2. Science: A science component that develops an understanding of the scientific method and provides students with an opportunity to experience this mode of inquiry in courses for science or engineering majors that provide some exposure to laboratory work. [CS]
The General Institute Requirements for all MIT undergrads include 1 term of the calculus beyond the AP Calculus BC sequence, 1 term each of calculus based mechanics and E&M, and 1 term each of biology and wet or solid state chemistry. There's also a laboratory requirement that's satisfied by the new EECS introductory courses that replaced 6.001-3 (SICP plus EE fundamentals, now it's robotics and communications).
So a MIT (and CalTech) graduate is guaranteed to have more scientific and mathematical maturity than the generic CS degree holder from another school. It's also a degree that grew from its EE department like UC Berkeley and unlike (I think) CMU and Stanford, so there's some required low level EE learning (and last time I checked most in the department get a degree with lots of both).
It's all done at a very fast pace as well, about 13 weeks of learning per se for a term (vs. e.g. the 2-3 terms that seems to be common for covering the AP Calculus sequence), so being able to learn hard stuff fast is an implicit requirement, and officially stated as a virtue, seeing as how quickly so much in so many fields including most especially computers changes so quickly.
NOTE TO HIGH SCHOOL STUDENTS: if you want to attend MIT, don't despair. In addition to a new model financial aid system which disdains loans, the raw odds if MIT judges you can do the work are 1 in 3. Best thing you can do besides the usual things is to demonstrate in your application that you can do projects. E.g. do a significant block of programming (FOSS nowadays) work and do a good jobs of writing it up, as I did, in addition to a serious biology project at a NSSF Summer Science Training Program that would have been published if not for later realized reagent contamination.
Disclaimer: I was a MIT undergraduate pursuing a science degree, and interacted a lot with the EECS department (e.g. I lead the infrastructure part of their forced move from Multics to UNIX(TM) when MIT-MULTICS was shutting down due to Honeywell Brain Damage(TM)), and still have ties to the department.
I'm not sure why this is being downvoted. When I was an undergraduate CS was a relatively new degree. I was surprised by how little rigor was in their non-cs coursework. They required one semester of calculus. (Really? Why even bother?). They required one semester of physics.
This has probably changed in the decades since since CS has matured (and, no- I don't want to name my alma mater!) but just on the face of it I can see why, based on your comment, knowing the mathematical rigor of certain schools and how they compare to other schools would allow them to skip an early filter. If a substantial fraction of their candidates bombed at the next interview level, they would probably put it back in.
It's kind of in poor taste. It's not like other top programs aren't as rigorous as MIT (they are). Also it kind of derails the thread because now we're dick-measuring over whether MIT is the most rigorous program.
It's not like other top programs aren't as rigorous as MIT (they are).
Sorry for my lack of clarity.
I said nothing good about MIT's CS program per se (quite to the contrary...), it's MIT and CalTech that remain by far the most rigorous major undergraduate universities in the US (I'm not counting the tiny humanities colleges that rigorously do things like the Great Books, and maybe I'm missing some). Something its CS graduates indirectly benefit from, but it's not inherent to the CS program, which in its post dot.com crash I have little respect for.
No others even come close in subjects required of all students; as I mentioned in a message downstream, as of the '80s the math requirement for Harvard was proving you could do algebra. On the other hand, they have the world's "best" first year undergraduate math course (https://en.wikipedia.org/wiki/Math_55), Harvard has been very strong in math for a very long time. But serious math (and science) is not required of all students.
So, yeah, you want to measure the dicks of us CalTech and MIT alumni as a population, go right ahead, you just won't be happy with the result if you think your school as a whole is better, with the noted exceptions that still retain rigor in the humanities.
None of which says that a graduate of another school isn't every bit as good, it just wasn't required of them.
> it's MIT and CalTech that remain by far the most rigorous major undergraduate universities
Yeah that's not a fact at all; it's just your opinion. This is why I agreed with the other poster that this wasn't a great thread of argument; we're just dick-measuring based on our own experiences at this point. You can attempt to try to bring in what you believe to be "objective" measures (like course requirements), but 1) those measures are themselves questionable, and 2) the selection of criteria to judge is itself a subjective judgment.
How else are you going to define the overall rigor of colleges than by the required curriculum for all students who attend them? Here I'm returning to the wider scope that includes those small institutions that have every student read and discuss "the great books" with their peers and one or more facility members who have a clue, and others that might follow such a model of rigor.
Jibran Ludwig – recounts to me the strange tale of how he ended up here. One night two years ago, when Jibran was 15, he was sitting in an Amtrak station in upstate New York reading Plato’s Republic and getting annoyed by the translation. The Greek gods had been given capital Gs, which struck Jibran as an erroneous Christian reinterpretation, and so he decided to abandon the book and try and find something closer to what Plato had intended. It was election night. The woman sitting opposite Jibran had an iPhone. So he went over to ask her the results.
As he approached her, his Plato in his hand, she looked alarmed. “Oh,” she said after a moment. “I thought you might be one of my students and I didn’t recognize you and I felt embarrassed.” She explained that she was Susan Henking, president of Shimer, “and Plato is the kind of thing we read”.
“If the president of this college thinks I might already be there,” Jibran suddenly thought, “maybe it’s where I should be.”
You say all those things like other CS degrees skip university-level mathematics and the scientific method. Even if they did (they don't), individuals can certainly take courses, minors, or majors to add those qualifications.
In other words, why fast pass MIT grads but not applicants with MS degrees and published papers?
Maybe Google has some metrics to back up their decision, but I'm skeptical that they can explain why the numbers are what they are.
You misunderstand me. I'll grant that Google has data to back it up. I also think not being able to explain the underlying mechanism (IQ? curriculum? selectivity? exposure to Atlantic seafood?) leads to shallow thinking, false negatives, and possibly false positives.
I can't think of much about MIT that can't be replicated by a dedicated individual. And I think the industry as a whole agrees with that. There seems to be consensus that where a degree is from matters much less as industry experience increases.
Indeed, see my comment on how the MIT admissions office looks for evidence the applicant can do projects. If you graduate from MIT without gaining such an ability if you didn't start with it, well, you've wasted your time there unless, say, you're a pure math type (even the theoretical physics types have to do Junior Lab, which I gather is a requirement of the science equivalent of ABET).
You say all those things like other CS degrees skip university-level mathematics and the scientific method.
I said nothing of the sort.
I said they only require 1 university level math course in addition to discrete math, and a vague in this short overview science requirement, let's call it 1 course with a lab component (but it could be more).
All MIT undergraduates are required to do a lot more university level math and science, more than twice as much of the former given the usual pace of other universities, and four times as much as the latter. It's not optional, and FB/Google/whatever doesn't have to do any investigation of their transcript, just confirm they graduated from MIT (or CalTech, but it's 1/4th the size and science, not engineering oriented, I doubt they see many applicants from it and those should get true red carpet treatment).
And that's without getting into intangible benefits; as a physics major mentioned to me in my first week, "everyone" who attends MIT learns how to do electrical wiring. No, it's hardly required, but any vaguely curious person will pick up a lot of science and engineering just by rubbing shoulders with 4,000+ other STEM undergraduates for 4 years.
Compare to Zuckerberg's Harvard: back when I attended MIT, the math requirement for graduating from Harvard was proving you could do algebra, and I now find its CS program is not ABET accredited. That said, it's math heavy, requiring a linear algebra course which I assume goes beyond the linear algebra taught in MIT's required 2nd calculus course (see more here http://handbook.fas.harvard.edu/book/computer-science).
Strange, but they are Harvard (and ABET has some ideas about how to teach CS that the MIT EECS department does not agree with at all, like being able to teach design per se), they were a pioneering computer institution prior to fully electronic computers, and students can fulfill some of their requirements by taking MIT EECS courses.
(Let it be said I'm boosting MIT too much, if I wanted to do pure CS, CMU would be my first choice, Stanford probably 2nd, not sure about EE derived UC Berkeley (which has in addition has all those state school disadvantages, and nowadays many fewer of the in-state ones for residents), and MIT could easily be my last choice after the department panicked after the dot.com crash cratered enrollment for the first time ever.)
As for "applicants with MS degrees and published papers", presumably they wouldn't be in the same interview track as gaggles of new graduates.
> I said they only require 1 university level math course in addition to discrete math, and a vague in this short overview science requirement, let's call it 1 course with a lab component (but it could be more).
But that's not standard for lower ranked ABET accredited CS degrees. On the other hand, just now, looking at UC Berkeley which is an EECS department, they require perhaps more math than MIT, multivariable calculus and linear algebra+differential equations courses on top of single variable calculus and of course the mandatory discrete math. And 3 science courses (a third in addition to mechanics and E&M; see http://www.eecs.berkeley.edu/Programs/Notes/section2.shtml).
You're generalizing; just because one recruiter used this as a lame excuse does not equate it to being policy at a company of hundreds (thousands?) of recruiters.
This was from the manager I would have been working for. Like any large organization, there are exceptions and he could be the exception rather than the rule. From my perspective, "Google" cared about degrees.
Is it a lack of a degree or a lack of a relevant degree? Like, if you had a BA in History but were a very competent programmer, would your lack of a STEM degree be held against you as much?
Obviously they were happy with my competency since I was offered a job, they just took the path where they used my lack of degree as a negotiating tactic.
Turns out there are plenty of other places that don't care about degrees and offer more money, so I accepted a job somewhere else. It was an easy decision at the time.
When I was resume screening at Google, we cared about school in terms of interpreting GPA, since 4.0 isn't equal everywhere -- and we got a LOT of resumes. Once the person got to interview stage, the school was irrelevant beyond the name-brand factor it may have had with a specific interviewer.
Which is for the most part the entirety of a degree's usefulness beyond the first year or two of employment. It's a signal, and it allows a company to easily take a stack of 250 resumes for a single position and cut it down to 80 without a significant hit to the skill distribution. Some of the best are likely eliminated, but most of the worst are as well.
My sub-3.0 GPA for a humanities degree a decade ago has no bearing on my skill as a programmer, but it almost certainly means I won't be working for Google or Facebook.
There is a big difference between the way Google postures it's atittude towards the developer community and the way they actually go about things. Of course Google wants developers to think that they don't care about degrees and such but at the end of the day most of the people they hire have degrees. Those prospective employees that had no degree and failed the interview process go about thinking and preaching that Google gives everyone a fair shot when in reality its just not true for those w/o a degree
It's also quite possible that the amount of test-taking/etc. people get in undergrad helps with some forms of interview programming. Hypothesis only - don't take too seriously.
I'm a computer science professor with a Ph.D., who's spending the year hacking code in C++ & Python at Google, and I can tell you with certainty that if I didn't study, there are some forms of dynamic programming or tree data structures (I can't remember the details of a red-black tree to save my life without googling it) that I'd flub in a time-pressured interview.
Many of those things are problems that some programmers might never encounter in day to day life. I do a lot of data structure stuff, and I've still never implemented a red-black tree or huffman coding after undergrad. I have std::map and gzip, for crying out loud. :) (That said, one of my Ph.D. students did once, in a very specific context where we needed it tightly integrated with something. He's also one of the best programmers I've met - far better than I - so take that with a grain of salt.)
As a person without a CS degree who somehow works at Google, I'd have to say:
1. I work in an office where almost everyone went to the same university, which is in the same town as the office. Recruitment of grads from that university is a high priority.
2. Like you said, the interview process does bias towards things emphasized in CS programs. Recent exposure to algorithms courses would definitely help.
3. The culture within Google itself feels very much like a university culture. Perf (promo through 'demonstrating impact' and basically being in a lot of design docs and PRDs, rigorous and extensive peer review, committees evaluating people's work almost like a thesis defense), etc. To me at least.
4. I've never been on hiring committee but I do get the impression that degree will be considered. Even if not for hire, but for determining the hiring level the person is slotted into. I can't say that for sure, tho.
Anyways, although I have been here 4 1/2 years I do feel like an outsider, and I feel a lot of this is being sans-degree.
Yeah in pittsburgh, google hires heavily from CMU, when I was in grad school I was surprised to see so many undergrads with internship experience at google.
That's curious. It might depend on the recruiter/role, but I had a recruiter reach out and then ghost me after the whole "When do you graduate?" -- "Oh, I withdrew a couple of years ago" bit.
While somewhat unrelated considering that for new grads google forces them to submit a transcript. I woudln't be surprised if they cared about degrees over experience.
#2 makes me sad. I went to a for profit school widely regarded as a diploma mill, and received an excellent education that I feel truly prepared me more for the real world than many of the CS graduates I've worked with in the ten years since graduation.
Remarkably small class sizes meant a ton of one on one time with teachers whom had worked in the industry for years before going into teaching. All the students were there to LEARN, many of them non-traditional students.
They never could escape the negative stigma and went out of business last year. I imagine I'm doomed to the same stigma.
> All else equal...having a college degree in CS is an advantage in getting hired over being self-taught.
I don't think this is uncontroversial. I've done hundreds of interviews at companies large and small, and nobody else has ever brought up the education section of someone's resume in discussion.
I look at it occasionally, but my hiring preference is inversely correlated to the amount of education a candidate has. PhDs go directly to the bottom of the pile, then masters, then undergrad, and no school is on top.
Since my little sister can now put together an MVC app in 30 minutes with no knowledge of threads, big-O or sorting algorithms, I'd say education matters little for junior devs working on run-of-the-mill flavor-of-the-week apps.
However, for more specialized types of systems, I'd require formal education, even going far enough to require topic-specific coursework to ensure depth of knowledge. A team at my company is being led by a guy with a BS in CS, but he doesn't have the background in the type of system he's building. The project has been a source of pain for management for the past few quarters; it's stagnating because he's come upon difficult issues that would be avoided had he had a more comprehensive education.
Education is crucial for designing and developing interesting software (i.e. anything that doesn't query a database and pretty print results). Dismissing it altogether can limit the types of systems your team can develop, and limits the career potential of your employees/coworkers.
Even for things that just query a database and pretty print results, having a degree can be advantageous when that database gets big and the number of types of things that are pretty printed gets large and the relationships more complex.
I've been working half time on a master's in software engineering for the past four years (graduating this May) and one of the most valuable things I do at my company, in terms of "pain and suffering averted" is map out object relationships, both in the database and in the API, in flexible and extensible ways. I can't tell you how many internal APIs I've seen -- even recently developed ones -- that look like: "/api/getAcctManagerUsers"
Instead of, say: "/api/users?role=manager"
And these aren't new developers who do this, either. Developers trying to export three and four dimensional data in a single CSV file and wondering why it's so gross to use. Developers adding multiple secondary indexes to a 16kb table that isn't anticipated to grow in size, just because "indexes make things faster."
I've seen so many boneheaded things done, just because people were just muddling through and writing the app, rather than actually thinking clearly about the data and the system, or knowing how the pieces actually fit together. I would argue that a formal education in software engineering really can force you to think in certain ways, and develop practices that are useful, even in products that should be "straightforward"
>> he's come upon difficult issues that would be avoided had he had a more comprehensive education.
> he's come upon difficult issues that would be avoided had he had more experience.
I vehemently disagree with this. Education provides the breadth to know where to look for answers. In industry, a developer gains depth as this is mutually beneficial for the employer.
There are fundamental topics that self-taught developers generally don't learn because they're not directly applicable to industry, yet come up in practice all the time:
- compilers / PL theory
- kernel development
- distributed systems
- statistics
- graph theory
The cost of switching jobs to learn aforementioned topics is magnitudes higher than simply taking a course, assuming one can even get hired for a position with no relevant knowledge or experience.
I know a few smart and motivated self-taught developers. They're incredibly productive, but sometimes waste too much time trying to solve known problems in an inefficient manner.
I have a CS degree, which I completed with a significant percentage of graduate-level classes where among other things I wrote a compiler, a raytracer, and a network stack. I agree that the breadth of knowledge from a proper CS program gives you the lay of the land in a way that a self-taught individual won't have.
But I certainly would never hold it against someone not having a CS degree, even in specialized fields. Frankly, you can learn more in a couple months on the job at places doing real cutting edge work than you would through an entire CS undergrad program, at least for the purposes of shipping software of value.
The bottom line is if you have what it takes to be a competent software developer, anything you would learn in a CS degree is easily accessible just by learning the right things to google for. There are certainly disciplines that require more specialized knowledge and have a much higher bar than your typical CRUD app, but even there I don't feel like school is any kind of important factor in determining whether one can achieve competence.
I can't put my finger on it exactly, but I think there is a baseline ability to grok software which can be unlocked in an individual through sufficient practice, but not by education, and this is the primary factor to one's productivity in all programmer jobs.
When I learn something completely new, the biggest obstacle is often finding a good source of information and path to learn it on. School definitely has it down once you hit graduate classes (and they often have free accompanying material!), but I'm not sure it's as good for basic programming skills. It's like learning an instrument, you have to work at it a lot and a one-on-one tutor would probably help a lot. What people do need are good exercises and a way to find reference material that is high quality. There's a ton of bad code tutorials and classes out there and its difficult to sift through.
And I vehemently disagree with this. Self-taught people know how to teach themselves anything they need to know. If a problem takes them in a direction that they don't understand, they know they can understand it with some effort.
My experience of university-taught programmers has been that they can't teach themselves, and tend to assume their knowledge is wider than it actually is.
And my original point is that experience is massively more useful than education when encountering difficult issues in the field. I stand by that. I've seen too many real-life examples to not believe it.
Self-taught people know how to teach themselves anything they need to know. If a problem takes them in a direction that they don't understand, they know they can understand it with some effort.
This is an extremely optimistic view of self taught programmers. While these type of self taught people certainly exist and I have worked with a few, they're definitely not universal or even, I would say, the norm. Most self taught programmers I've dealt with will brute force any problem they have into the one thing they know and are just barely scraping by on frantic googling and copy-and-pasting in random code from stack overflow.
First I would suggest that being able to teach oneself and having a university degree are not mutually exclusive - and indeed a lot of courses are so bad you need to be able to teach yourself in order to successfully escape them
That said, a lot of people in both categories aren't that great in the workplace. Either through lack of discipline, lack of experience, emotional problems that prevent them acknowledging negative feedback and using it to improve themselves, or a general desire to overthrow capitalism whilst reading Facebook. But none of that has anything to do with going to university which is a privilege that may or may not be available to somebody given their class, background, and general life experiences.
As long as programming remains an uncredentialed occupation - compare and contrast with medicine and the law for example - people without degrees deserve the right to be assessed on the quality of their actual work, and not a general prejudice on how they acquired the ability to do it. After all, the people who laid the foundations for computer science, necessarily didn't have a computer science degree.
That's bad project or team management, not down to quality of coder.
You could easily say the same of university-educated coders who only learned Python and C and are up against a real commercial deadline for the first time. I've seen those folks do some crazy shit.
Dumping anyone into a project outside their area of experience with no guidance will cause poor practices.
wrt, to your fundemental topics, I'm not convinced companies are hiring BS grads for those fields, nor do they come up in "practice" all the time. Distributed systems are notoriously hard to get right, to the point you should almost always be using an off the shelf solution. If you find yourself in the industry, 1-2 years after college, needing to build and deploy a distributed systems, I don't really have confidence that "15-440 Distributed Systems" would adequately prepare you to launch a production system that actually serves customers. In Distributed Systems specifically, I believe experience trumps education as most (popular) systems now predicated on running some nodes in an expendable cloud over a flaky network. I can't really imagine a company hiring fresh faced BS grads to build compilers and distributed systems, even if they did attend an elite school.
If you know developers writing their own distributed system, chances are they are wasting their time, BS or no.
It depends what you mean by distributed system. A rich SPA type web app connecting to a server is in a limited sense a distributed system. Pretty much any common AWS setup involves distribution. These are things that a wide variety of programmers touch every day, not just people who are experts at formally verifying their CRDTs or whatever.
All of these are niche topics, they don't come up all the time. e.g: I am doing embedded Linux and wouldn't dream of doing kernel development, it just wouldn't make sense when there are people specialising in that.
He's in his early 40s and has two decades of development experience. Experience is not the issue. The issue is his lack of machine learning knowledge. His dodgy, non-working, memory-hoggy misimplementation of A* search on a problem space of size > 10^20 demonstrates that very pointedly. Also, his general experience should teach him that if he knows nothing about a topic then he should do his homework. He doesn't. Education is key.
He sure can build a great ecommerce system in Rails though.
I don't get this. Why aren't you sending this guy on an intensive course on machine learning (and graphs) instead of complaining on HN?
This way he'll acquire that missing knowledge and one can still profit from his decades of experience, something a fresh graduate would not have and can't acquire at all without spending the actual time.
1) I'm not his manager. 2) I've sent him half a dozen papers about topics ranging from heuristic search to genetic programming to general good ML practices. He's read none of them. 3) He believes he knows what he's doing.
Those who do not want to be helped cannot be helped. And an intensive course won't fill all the statistics and math requirements he doesn't have.
Maybe it's a difference in interpretation, but to me, an 'intensive course' for people who are working is a few weeks of classroom-led instruction. That's the interpretation I was dismissive of.
Without wanting to make this into a discussion about what 'a productive machine learning guy' needs to know, I would say that you need to be able to understand, implement and calibrate most state of the art machine learning techniques. So then you need 3-4 semesters of undergrad maths (algebra 1 & 2, calculus 1 & 2, statistics, linear algebra), a theoretical machine learning specific course (course as in 'university course', so 8-12 weeks with 1/2 lectures per week plus lab sessions, plus homework/exercises, plus exam; this could maybe be consolidated into half that time for a more experienced person who commits himself 8 hours a day plus half a day on the weekends), an operations research or similar course, and maybe a numerical computing course or short course.
All of this is assuming that the candidate already has a solid grasp of computer programming, including some data structures, algorithms, distributed systems maybe. Plus good practical skills, but that should be the least of the problems.
This is at least one year of full time study, for a gifted person who can really commit to the program. Realistically it's 1 1/2 or 2 years for most people.
Somebody without a college degree will likely not know any of these topics (I mean the things from my second paragraph), save maybe some high school calculus and stats. Maybe they've used R a bit and have done some numerical computing or so. But that's a far way from becoming what I would call 'a productive machine learning guy'.
Thanks for the thorough answer. My interpetation was that the person described could get away with having fundamental knowledge - this was optimistic and involved too much guessing on my side.
Well I can't blame you - I have thought for years myself that I could 'pick up machine learning' like it was some web programming framework that you can be an expert at over a weekend. But I had to concede after a few years of trying on and off that it doesn't work like that. Which is also why it's a testy subject for me - like how ex-smokers are usually the most obnoxious anti-smoking crusaders.
I don't have a proper math-intensive CS degree myself, only a 'software engineering' degree, so I've been going back to uni and studying when I can to build a math foundation first. So what I wrote down above is basically the 'curriculum' I designed for myself, as well as what I already know from the software side and is needed for ML.
To make it relevant again to the topic at hand - this is also why a university degree (and a proper one) is required for programming jobs that are cutting edge. Sure, making websites doesn't require it - and neither do line of business CRUD applications. The interesting work though is not 'programming', it's 'using math to solve problems and using programming to get the computer to do the repetitive stuff for you'. When it's framed like that, it becomes obvious why a university degree is required.
(yes yes theoretically it's possible to study math by yourself - the number of people who have the discipline to do that though is minuscule compared to the number of people who can bootstrap themselves to be 'programmers' of simple applications like web applications, most mobile apps or CRUD applications)
Yowza, sick burn on your coworker! Since we are talking about hiring practices have you read this section of Joel's Guerilla Guide to Interviewing?
"People who are Smart but don’t Get Things Done often have PhDs and work in big companies where nobody listens to them because they are completely impractical. They would rather mull over something academic about a problem rather than ship on time. These kind of people can be identified because they love to point out the theoretical similarity between two widely divergent concepts. For example, they will say, “Spreadsheets are really just a special case of programming language,” and then go off for a week and write a thrilling, brilliant whitepaper about the theoretical computational linguistic attributes of a spreadsheet as a programming language. Smart, but not useful. The other way to identify these people is that they have a tendency to show up at your office, coffee mug in hand, and try to start a long conversation about the relative merits of Java introspection vs. COM type libraries, on the day you are trying to ship a beta."
Sure. And for every one of you, there are 20 people who put PhDs from top schools at the top of the pile. I think this is uncontroversial when talking about the industry in aggregate. I'm not limiting this to the "computer hacker community," or the "Rails startup" slice of the industry.
Also, you probably haven't interviewed for entry level software jobs at a BigCorp in many years.
You're both right! He's talking about getting hired, and you're talking about interviewing. The degree can have a significant impact on whether or not you get to the interview stage... and then rarely matters past that.
So, all else being equal, you're less likely to get hired without a degree, but you're just as likely to pass an interview.
I think that mostly calls it, although the advantage for "elite private" vs "state school" is not as large as you might think.
And you could add;
6. When the market is saturated with programmers looking to be hired, those with degrees (at all levels) are hired before those without degrees.
If the current slow down in funding results in a lot of layoffs, it could create a 'bump' where a lot of programmers are competing for a relatively small number of jobs. And in that situation a degree would be helpful.
A further problem of assessing value is that the analysis is taking the job postings as an accurate reflection of who actually ends up getting the role.
Pretty much every developer who doesn't get their first job through an internship ends up taking a job that had 2-3 years of experience listed as the minimum requirement, but we would know an article titled "junior developers need not apply" is questionable.
There is a fix for #5; get a foreign degree. The college education at most European universities is free or almost free. Hey, at some of them they pay you to study. :)
They are not as highly regarded as the private US universities, but there are two dozen European universities in the world top 100. I hear more and more people saying they want to send their kids to study in Europe instead of paying hundreds of thousands for private school here. The curriculum for CS and many other STEM is more or less the same everywhere.
You're neglecting the time-value of money for number 5: four years of your life is a long time, especially with developer salaries. Even two years is roughly ~$100k worth of lost salary above and beyond your increased living expenses.
It doesn't matter. If they are half as good and get half the pay, then by 22 they have 4 years of exp, and 2 years of salary, vs. no exp, and 4 years of debt.
I lucked out and happened to turn 23 the year the property boom started, my degree would have cost me over $500K in lost opportunities and cost. In my case I started out in tech support, and had to find my way into dev.
A lot of assumptions in there: comparing apples to apples (that the 18 YO has same skills as 22 YO w/ CS degree), that they went into debt for school, that they didn't work during school, that they didn't get experience from internships, etc.
It's definitely not "opportunity costs win every time."
Anecdotally, I went to a state school with decent computer engineering and CS programs, got all kinds of experience getting paid to write code for different groups throughout the university, met a few professors and like minded individuals in classes who wound up throwing more work my way throughout my entire career, and was 'only' $45k in debt.
My first job out of school paid me $60k/yr (2006) and I was over $100k in three. I learned a lot in my CpE and CS classes, but I gained a ton of experience at market rate I never would've gotten as an 18 year old know it all.
Not really related but even though I've spent most of my career using my CS teachings, the EE learning that was part of my CpE studies sure has come in handy with the IoT explosion. I knew next to nothing about electrical engineering when I entered university. Had I not gone I wouldn't have known how much I like electronics and robotics.
I've edited my comment a bit. This is a more complicated issue because it depends on your background. Someone who has been coding in HS might be able to get that crappy-pay entry level coding job without college, so there is an opportunity cost, but someone without that background might need to go to school to even have a shot.
I actually believe those four-five years being undergraduate is a really important part of growing. You make friends, learn about what researchers are doing, participate in labs, have those crazy pre-final night study in the library. It's fun. You can still do internship in the summer if you really really care alleviate your financial situation. If you chose to go to an expensive school without any scholarship or tuition assistance program (not loan), you are making a mistake.
I know there has always been a stigma attached to diploma mills. People that have gone to "real universities" will always enjoy looking down on those that went to "fake universities".
With the new wave of coding bootcamps, I would expect the same disdain. In fact, I would expect bootcamp to rate below diploma mill, but I'm not sure that's the case.
Re #4, the direct advantage may go to 0 but the indirect advantage remains that those first few jobs were much easier to get due to your degree. Your first couple of jobs are the most difficult to score. After that, you can rely more on contacts and your reputation.
At one time I was a hiring manager at a largish global tech company. Not having a degree myself, and noticing that a large number of the top devs in the company also either had no degree or had degrees that were not in any way related to CS I pushed back on HR to pull the 'relevant degree' requirement from our job postings. I was told that I was welcome to recruit, interview and hire people without a college degree, but if we posted the job publicly without the requirement, we would not be able to hire any non-American programmers. The government would see the lack of a degree requirement, even for a sr dev or specialized tech position, to mean it was an entry-level position that any American could do and would deny our visa request if the person we liked best happened to be a foreigner.
I don't know how real the risk is, but it is a perception in HR at big companies.
Interesting! I hadn't considered this, but it makes sense.
Many of the US work visas, such as TN, H1-B and even the employment-based green card either require a college degree or give preference to a position that requires a college degree.
A degree is very useful when trying to get your first job in the industry. It provides some comfort for the hiring company that you have some level of training and understanding. It makes you stand out from those without a degree that are also trying to get a start.
Once you have several years experience the degree becomes less important because you will be judged on your actual experience. An employers looks at the languages/platforms you have used and can then easily test you based on those.
After 5 or more years the degree is pretty much irrelevant. Especially when there is a shortage of talent.
> After 5 or more years the degree is pretty much irrelevant.
Except in one case: immigration. I'm the type of person who is simply dreadful at exactly only one thing: education. The how an why seems irrelevant. The American government does allow an employer to motivate an H1B, but after 5 years (when the visa expires) I'll need a degree in order to continue my stay.
So it becomes irrelevant in terms of landing a job. It's still valuable in many other situations.
Until the last 10 years of your career when you may have a shot at a role as a Sr Executive, CEO, serve on a board, etc. Then, again, you'll be held back by not having a degree.
Yes, a high level manager at my employer (fedgov contractor) was teaspooned when edict from fedgov said managers at his level needed a masters or higher, despite it being irrelevant to his non-technical job. This is someone in his 50s who had probably been there 30 years.
Gov. jobs have a lot of check boxes, and often one is degree. In lower level positions experience can substitute, but not always in higher level positions.
When you start reaching positions where you get listed on the company website, a degree helps.
Yes. You cannot get hired without a degree unless you have experience. You cannot get experience without getting hired. The chicken and egg problem that a degree solves. What you might call "bootstrapping"
As one of the people downvoting you, I'll leave this comment to point out that your comment has absolutely nothing to do with the one you're "replying" to.
Some employers do not care much at all about your experience. For example, Google interviews really don't consider this at all beyond the initial screen whether you will get your interview or not. After that it's all hours of testing your responses to problems, etc.
And in reality most industry experience is of little use at Google anyways.
Google does care about school and GPAs, etc. tho. More than most.
Q. Other insights from the data you’ve gathered about Google employees?
A. One of the things we’ve seen from all our data crunching is that G.P.A.’s are worthless as a criteria for hiring, and test scores are worthless — no correlation at all except for brand-new college grads, where there’s a slight correlation. Google famously used to ask everyone for a transcript and G.P.A.’s and test scores, but we don’t anymore, unless you’re just a few years out of school. We found that they don’t predict anything.
Also, I doubt that external industry experience means little to Google -- for two reasons:
1. Good engineering practices are good engineering practices. You can pick those up by working at a good firm
2. Though they hold God-like stature, Google is like any other company. They mostly use the same technology and a lot of the same tools as everybody else.
Ugh, a degree might be a good thing, some things considered... I have to hope this was a phone interview, but even so, where is the author and editor and proofer?
"A number of readers have complained after seeing plural abbreviations like M.D.’s and M.R.I.’s in The Times. They say the apostrophe is wrong — that it indicates a possessive and should not be used in a plural like this.
In fact, style rules at The Times (and some other publications, including the Chicago Manual of Style) do call for using an apostrophe in the plural of abbreviations that include periods. The idea is that a combination of uppercase letters, periods and a lowercase “s” is confusing at first glance, and that the apostrophe helps a reader see that the “s” has been added to make a plural."
You might say that it should be GPA instead of G.P.A., but at least you can see that it was proofread.
"Btw, 2. Though they hold God-like stature, Google is like any other company. They mostly use the same technology and a lot of the same tools as everybody else."
As a Google employee, no, not true. Yes, we use the same _languages_ and compilers and editors... but beyond that most everything else is unique to Google. Build tools, libraries, deployment environment, web servers, databases, it's all unique to Google.
That certainly used to be the story, but so far as I know it hasn't actually been the case for several years. I had no trouble getting a job there in 2011 despite my lack of a high-school diploma. (This turned out to have been a terrible idea; that was mostly bad luck, but the nature of Google's business makes it a place I would never have easily fit in.)
No company seriously cares about GPA beyond using it as a tie breaker when a coin toss would suffice. There's a very obvious inverse relationship between how much work you take on and your GPA. The students with jobs take a hit on their GPA, so do the students who spend a lot of time on clubs. Obviously the people who spend all their time partying will have a lower GPA but it's easy to discern the difference between those groups just from looking at a resume.
I don't see the big surprise...a degree doesn't mean that you're automatically more competent, but competence -- the kind that is valuable to a company with many moving parts -- can't be measured on a single scale. Pure mastery of C and assembly may not outweigh your ability to work within and communicate in a team. A degree implicitly confers a few social milestones:
- You come from a family well-off/integrated enough in society to afford putting you through college. Or, you know what it's like to be responsible for paying off a large loan.
- You've been thrown into a melting pot for ~4 years and have managed not to freak out and/or commit a felony.
- You've been able to commit to and meet arbitrary deadlines (i.e. finals week) and goals.
No, having a college degree doesn't guarantee that you're a fine upstanding person...it's just one useful metric for an employer to have when they have little else to go on.
Formally uneducated developer here. Due to the circumstances of my youth (foster homes, boys homes), I did the usual service level jobs (construction, restaurants) until I stumbled into a data entry job back in the day and managed to leverage myself as a unix sysadmin, then C, perl, Java dev with some fairly prestigious companies. Pretty much all self taught. Despite my adverse origins, I managed to not freak out or commit a felony. That being said, I do think I would be a better developer if I had access to some formal education, and I think that the bar is higher today and it's not as easy to sneak your way in like I did.
I'd have to think from an employer's perspective that someone without a degree who has made their way through gainful employment has proven themselves to be as reliable as any college graduate. However, the fact that college graduates are more frequently hired may be a result of the fact that there's way more of them than there are the people who worked their way through life, at least in the white-collar sector.
Some employers believe they have the competence to directly evaluate job-relevant skills. They will lean heavily on practical interviews and discussion of actual work experience.
Other employers are much more credential oriented because they can't tell a good developer from a bad one. Sometimes that's because there aren't many technical people in the company. More often, it seems, it's because hiring is done by people who are not working developers themselves. (E.g., HR screens resumes, interviews mainly done by non-techincal hiring managers.)
Since I'm of the former sort, I look especially hard for developers who don't have the "right" credentials. Not only are they more likely to have certain valuable characteristics than people who take the prescribed path, they're also likely to be overlooked by organizations that value credentials, and so easier to hire.
> That being said, I do think I would be a better developer if I had access to some formal education
That might be true, but there's a very limited number of courses on a typical computer science degree which actually do help. I think on mine it was mostly just data structures, theory of databases and concurrency. Possibly math.
Many others were interesting but I wouldn't say that I ever used them.
> I think that the bar is higher today and it's not as easy to sneak your way in like I did.
I think this is a significant factor in the skew from 'experience is king' to 'you need a degree'. The industry is much less of a 'wild west' now than it was even 15 years ago, so people with more than 15 years experience have a much higher chance of being self taught than people with 1-5 years.
> You come from a family well-off/integrated enough in society to afford putting you through college.
This is really a metric we want to keep significant? "We'd just feel more comfortable giving our good jobs to people from already well-off families; if you're not from one of those, tough luck..."?
Consciously? No. But a lot of it is related to the concept of culture fit. If a company's CEO loves golfing, chances are they are going to find more kinship with someone else who also lived a life that allowed for recreational golfing, whether that manifests itself in the way that the CEO and employee can make easy small talk or even spend time out on the course together. To varying degrees, I think the same applies to other social rites and shared experiences, whether it's going to college, joining the Greek system, playing sports, etc. etc. Hell I admit that I have an instinctive affinity to people who come from my home state of Iowa, even though logically I know that it's not true that people from Iowa are just "better" than those who didn't happen to be born within its borders...but a huge proportion of my best friends in New York were strongly connected to Iowa, whether it was because we grew up together or because "Oh, you're from Iowa?" led to the kind of conversation that help to upgrade a normal big city acquaintanceship into a real friendship. In the same way, I don't think a college degree is necessarily a binary switch/litmus test...it just opens up a lot more possibilities of shared/common experiences. And as CEOs/managers tend to be reside in the higher classes of society, college experience highly correlates with the kinds of things they've lived through.
Like it or not, it's actually a pretty good proxy for "someone with decent education and a stable upbringing, plus has is likely to have the genetic potential to consistently perform well in employment" which is in turn a proxy for "likely to be a good hire."
If you're running a welfare program, that's an unfair criterion. If you're running a business and need competent employees, then it's not a bad screening measure.
When I was about to graduate from Uni, I did a string of practice interviews for places who were interviewing new graduates )or otherwise). I applied to all kinds of places (including in blue-collar industries) just to feel comfortable with people asking you questions all sorts of questions.
I recall the blue collar employers questioning me about my choice to interview as they saw me a s "flight risk" that I'd find it beneath me or something --having been going thru Uni, or that I might not fit in with the rest of the shop workers.
Basically, interviewers want some assurance of some type you will fit in, whether you'll be able to blend in with the rest of the employees -in the blue collar places, that I might fit in with a less polished crowd and whether one might find it fulfilling.
It should come as no surprise to you that on average, people tutored in math/writing/etc. as kids are actually better at math/writing/etc. than those who did not have tutoring.
If we're talking about programming having a college degree helps better ensure that the candidate has had good exposure to relevant theory (e.g. automata, graph, ...) and math. While understanding this stuff isn't essential for most CRUD apps, it's crucial if you're building something big like a new kind of datastore, a better search engine, an operating system, and so on. Yes someone without a degree can theoretically have an understanding of subjects that most people only have exposure to in a university, however if you're a company that plays things safe you're going to go for the better bet
Having worked my way through college working as a full-time Software Engineer in Silicon Valley, many people look down on others who don't have a Computer Science degree.
Pragmatically, after more than a decade I've seen people with PhDs from top schools who couldn't code their way out of a paper bag. I've also seen "uneducated" software craftsmen who could write the most elegant and clear code.
There is no silver-bullet in the tech industry--yes, having a Computer Science degree helps, but it doesn't guarantee the person will be a good Software Engineer.
So I'm going to ask you a basic question: do you believe there is no correlation, a positive correlation, or a negative correlation, between a candidate having a degree from a good quality institution (I'm deliberately ruling out degree mills) and candidate quality?
That is the only question worth asking.
The rest of your post is just useless anecdote. Yeah of course there's candidates with degrees that suck, and candidates without degrees that are amazing. You've said basically nothing of substance by pointing that out.
What are the averages? It I'm sifting through dozens of resumes for an initial cull, guess what? I'm using heuristics. "Has a degree" is one (of many) of them.
Before you call someone else's comment useless, consider if yours is any better:
You have no evidence supporting your hunch that degreed applicants make better employees, so you're making your most important business decisions based on feels.
You have never performed a long-term study or an A/B test of degreed and non-degreed applicants.
You run all applicants through a filter that eliminates outliers and produces a mediocre average, before you start looking for people that are above average, able to fit your team.
The problem with your hiring process isn't the candidates but that your ties to them are too weak and that there are too many of them, so that you can't put enough time into learning about them. Degrees have nothing to do with it.
I have interviewed and hired many people over the years, from all walks of life. I hold a CS degree awarded by rather prestigious British university.
In my experience, there is no correlation _whatsoever_ between a candidate's "quality" (although I'm not really sure what that means) and whether they have a degree from a "good institution". As a consequence, the only reason I look at the education section of a candidate's CVs is to see if I can find anything that could help starting a conversation, such as an interesting final year project.
> What are the averages? It I'm sifting through dozens of resumes for an initial cull, guess what? I'm using heuristics. "Has a degree" is one (of many) of them.
You'd have a much better experience if you threw out that heuristic, and also stopped looking at resumes. Resumes are generally packed full of bullshit and lies anyway, ignore them. Create a simple test problem and require candidates to submit code solutions to the problem. That immediately filters out all the bullshitters who can't code because they won't bother applying for a job that demands code as a resume. What you'll be left with is just a few submissions from people who can actually code, and most of the them will be shitty but functional solutions to the problem. A small few will submit great code to your sample problem, you'll see it right away, you hire those people.
A computer science degree doesn't tell you anything at all about how well a person can program; computer science and software engineering are quite frankly vastly different things and little if any actual computer science is needed by most software engineers. Filtering by it as a heuristic does nothing positive for you, you're just filtering out a bunch of great programmers; it's a terrible heuristic.
I've found CVs contain almost no actionable information beyond an indication of what the candidate is interested in doing, technologically - ten years of Java isn't great, for example.
A simple 10 minute coding problem on Codility is a more useful filter - just to see if they can read and write code at all.
Unfortunately that is not the only question worth asking.
Let me turn this question around to help illustrate.
Do you think there is a correlation between IQ and candidate quality? Any correlation, positive, negative?
Is that the ONLY QUESTION that determines whether IQ test results should be on a resume?
The fact of the matter is that sometimes more information causes people to make less accurate judgments. Overweighting of information of small use can lead to worse judgments.
> I've seen people with PhDs from top schools who couldn't code their way out of a paper bag
A computer science PhD, in my humble opinion, does not teach how to program anymore then having PhD of Architecture teaches you how to build a residential home. If it did, there'd be much more time spent learning about tooling and practicing programming instead of reading papers and generating novel research.
If I were hiring C.S. PhD's, I would not be judging them on the quality of their code or proficiency in any particular language.
This is true, and the unfortunate effect of treating all software engineers as equal. However, if PhDs are not expected to write code, don't call them software engineers, call them "researchers".
>This is true, and the unfortunate effect of treating all software engineers as equal. However, if PhDs are not expected to write code, don't call them software engineers, call them "researchers".
Generally, they aren't called "engineers". They'd be computer scientists. But I say that as someone who lives in a place (Canada) where "engineer" is a protected term, of sorts. You can't just slap the title on anyone.
Fair, but not relevant—all the alternate titles (programmer, coder, computer "scientist" without the science... whatever) would also be just as ill-fitting.
I consider the ability to perform practical programming a skill of software/computer engineering...In the same way that someone can be brilliant in chemistry and yet have little clue how to perform the kind of chemical engineering needed to efficiently produce chemical reactions...being a great mathematician/computer scientist doesn't necessarily relate to building. It's not that they don't have the intellectual capacity to do it, it's just that building/engineering requires its own experience and field of knowledge.
Electrical engineering is a pretty wide field that doesn't necessarily involve working with actual electronics. Personally, I've built a circuit simulator software package, but I can't actually design or build circuits worth a damn. I had to copy all but the most basic test circuits for my project off of existing designs, and I'd probably fail to build a physical realization of most of them.
I'm an engineer without a degree and I'm guilty of looking down on those without, but I'd like to justify my actions. Lots of engineers lack the ability to determine not just how to solve the problem (disturbingly common in theoretically competent and seasoned engineers), but the ability to determine which problems need to be solved. Determining how to do the traveling salesman problem in an acceptable time isn't solvable (or if it is to them, they should be doing something better with their time than working with me). Figuring out how to avoid that problem generally is, and I expect candidates to intuit that they shouldn't spend time chasing unsolvable problems.
I didn't learn computer science formally, but I did learn it. I don't expect everyone to know exactly what I know, but I do find a degree a useful proxy for some percentage chance of knowing their shit. Industry experience is useful for some additional, knowing what words to put on their resume is part of it too. If they don't pass some combination of the group they're not worth my time, but I have to verify that by interviewing some amount of applicants anyway to check that those are real determining factors.
I've worked with fantastic developers without a degree. Typically, I've had to point out gaps in their understanding of the "why" behind things. I also had these shortcomings because I had an MIS degree. The difference when working with CS graduates is simple business knowledge seems to be their shortcoming. So working in accounting, finance, etc. they have a knowledge gap.
No one comes out of college knowing it all, it's just figuring out where your shortcomings are and always trying to fill in those gaps. I'm a mediocre software developer at best. However, I'm better than about 90% of the people I've worked with (IMO). The 10% that are better than me I strive to learn from and discuss topics constantly instead of being intimidated by their expertise.
If companies would simply hire good people and make growing them into well rounded developers, they'd have a hell of a lot better return on their investment than simply having a checklist of "employee must have" when hiring.
I'm on (failed) startup #8 at the moment with one of these friends. Our primary goal is to hire people that haven't had job experience in the field so we can train them on the proper ways to build software (well, our opinions on what's "right"). Assuming we ever get to the point of replacing ourselves. :-)
If you're better than 90% of the people you've worked with you definitively aren't mediocre. This type of mentality is what leads people to undervalue themselves.
The reason isn't because everybody wants a college degree, it's because having it in the job ad opens it up to H1 visa holders, which make up a significant part of the silicon valley workforce (not just from one country, there is a crazy international contingent in the SF Bay Area).
Many companies have entire departments that are made up of an H1 workforce and will favor them in hiring - which is a little odd considering that you are supposed to pay over market rate for an H1, but we all know there are ways around that (either changing the job title to a lesser paying job, using a job title that has a below market rate for the same set of duties as another title, paying the "contracting company" the higher rate, but the actual worker gets paid less, etc.).
I've seen a handful of companies actually require a degree, but almost all will waive the requirement based on experience - especially for someone who is the right fit. I've seen some (or some departments) that will only hire high profile school graduates, but that kind of a thing is usually specific to a particular market.
It's not odd to favor H1B's. I was talking to a fellow from India yesterday. He's in Minnesota. Why? Because Symantec recently split into two, and one part went to Minnesota. He'd leave tomorrow for another job back in California but won't because he's on an H1B.
As someone with no degree who's done OK in the software industry, I would hands-down go back and get one if I could turn back the clock. Not because it would necessarily translate to more money, but because I've been giving myself ulcers worrying about it for the last 20 years. YMMV
There are lots of reasons, some of which never go away (peer acceptance, additional scrutiny / skepticism, raise availability and amount.) There's also the specialization problem: you can "be fine" but essentially be limited to what I like to term "survival tech" jobs (CRUD and some other less-than-glamorous roles.) Not going to school, especially one that gives you opportunities to work on really interesting stuff (elite/research schools), means you'll likely never break into things like robotics or Socher-level DL. There are exceptions, but most people will not.
You may also never be fully accepted culturally, since one of the major advantages of going is that you're the "right" sort of person (meaning that you have the correct socio-economic background and understand/speak corporate-derived "elite meritocratic culture") / you're able to build a high-quality network of well-connected peers who themselves are part of the socio-economic elite.
I went to the University of Nebraska (not an Ivy league). I dropped out.
My clothes are usually wrinkled, my hair is never combed. Some may mistake me for a homeless person on the right day.
But I've done open source work. I've spoken at RailsConf twice. I have a good tract record.
I have no idea who this "socio-economic elite" is that you refer to, but in general, if you want to make money as a software engineer, you don't need a fancy degree.
If you want to make money, you need to learn how to sell yourself and constantly put yourself out there. No university is ever going to teach you this.
The thing is in this industry, a lot of the people at the top of the food chain or general mythos is that there are a lot who didn't graduate and still did fine (Gates, Zuckerberg, Jobs).
It's also what you make of it. Sure your degree may give you an easier entry to robotics, but it doesn't mean you need one to get in. It's just the most standard way of getting in, but there are other ways of getting in.
Also, 4 years is still a lot of time not working on 'real projects' if your career is 20-30 years.
Because of coding bootcamps and other stuff, we're already seeing less people going to 4 year programs and more doing 2-4 semester intensive courses. At least in the software industry, I think it's going to be like apprenticeships in the future. Apparently it's more common in Europe like Germany. Shopify's CEO (Tobias) did some sort of apprenticeship program like that.
Yep. I don't think this study really took that into account. I'm a software engineer in SV with no degree and it has literally never even been brought up by interviewers.
Earlier in my career I simply would not apply if I saw that requirement. Now I just make it explicit in my submission that I do not have one. It's not clear to me how many non-responses were due to that.
I just leave off the education part on my resume. This has literally never been a problem for me, and most requirements I see say something like "BS or equivalent experience".
I have a degree in Mechanical Engineering and am self-taught programmer from an early age. No one has ever balked at hiring me for a software position without a CompSci degree. (at least not that I know of; I've never been unemployed for longer than a Saturday and Sunday between jobs)
I have an ME, and applied for a job at Microsoft around 1981 or so. They wouldn't even talk to me, and heard through the grapevine it was because I had the wrong degree.
You don't understand. I coulda had class. I coulda been a billionaire. I coulda been somebody, instead of a nerd, which is what I am, let's face it.
I wonder how this applies in my case - self taught with a degree... in Literature. I haven't had a hard time finding a job but that's a pretty big selection bias.
I remember thinking when I graduated high school the college doesn't matter because knowledge is knowledge, so unless it's MIT who cares? How idealistically wrong. Your college affects initial conditions, and life being the chaotic system that it is, has tremendous integral effects over the trajectory. Networking, who you know, peer group...all that stuff I heard from my dad and thought was bullshit and peripheral turns out to be of ultimate consequence. Get into and associate with the most elite groups as early as your ability allows.
I experienced this one first hand, which is why I went to the cheapest school in my state and coasted through a bachelor's, knowing that I could easily pay it off once I got a job in the Valley.
Wasn't quite as easily as I hoped as it turns out, but I still managed to pay it off in the same time it took to earn it, so on the overall, it worked out. Honestly can't say my degree is worth much more than the certainty my resume won't get band-rejected by recruiters, but hey.
Tech hiring is a such a cluster____. Why are they screening for degrees anyway? They clearly don't respect what a CS/SE/etc degree represents because at the end of the day, regardless of your experience or your credentials, you're going to be subjected to the programming interview nonsense that won't reflect your day to day anyway
Its like requiring a degree in mechanical engineering to be a racecar driver, and being told to assemble an engine during your interview.
I wonder what percentage of the employees in the HR departments have a college degree. My guess it is close to 100% at 100% of top companies.
Even if you do get hired, HR might undermine your career and prospects for promotion if you don't have a college degree. I don't have data but I reluctantly suspect it is true. Hopefully I'll get down votes by someone who knows this isn't the case.
I've earned no less than $180k/yr in the past 6 years, as a remote developer without a degree. The only thing that matters in life is what you decide to believe is true.
Are you a stand alone contractor, or do you work for someone? How much experience? You'll have to excuse me for bugging you; but I have 10 years experience and I make half that.
I'm a contractor. I started learning front end coding in late 2007, and backend software development in late 2008. I didn't get a full time backend software dev contract until 2010 and I read a LOT and started working on my own pet project to learn during that year before, etc. I negotiated hard, and even played hard to get (but also was very humble and nice - hard to get doesn't necessarily mean "you can't afford me!", etc., more like "I'm sorry. I love the team I I think I'm a great fit, but I just can't afford to accept an offer below X"), and that first contract ended up being full-time at $90/hr. That set the precedent in my mind. Once you decide something very solidly, you will find a way to make it happen.
Ask for what you want, and remember, even if it's a pain in the neck and takes a long time, if you can earn double, every year is like 2 years.
There's a huge elephant in the room for this: IQ testing. Companies get sued if they test for IQ and consider it in their hiring process. On the flip side, IQ is a very good predictor for job performance, especially for programming. This is a good chunk of why companies do whiteboarding - it's not going to get them sued, and it selects for cleverer people.
You know what else selects for cleverer people? SAT scores. Now, companies aren't allowed to ask for SAT scores, but they are allowed to look at what college you went to. So if you know that someone attended MIT or Stanford, you get a pretty gigantic hint about what their IQ is.
I think an assertion that large (that IQ test scores correlate strongly with better job performance) needs some sources to back it up. I'm not saying they're not there, but I'd like to see them. There's a lot more to overall job performance than ability to reason about complex programming problems.
As a counterpoint, a Google HR SVP says in an article referenced elsewhere in the comments [0] that they don't ask for G.P.A's and test scores anymore because they're "worthless — no correlation at all except for brand-new college grads, where there’s a slight correlation".
I don't have access to the works that Wikipedia cites, but the correlation is positive and between 0.2 and 0.6 for every job studied.
And I agree, there are a lot more things that influence job performance. IQ probably isn't the most important thing - a malicious programmer can cause millions of dollars worth of damage, so probably the most important thing is trustworthiness. That said, learning about someone's IQ helps you predict their future job performance, basically regardless of what job you are talking about.
Very interesting, thanks for the cite. I think it's important to note that those figures are for "hiring employees without previous experience in the job" because "It is largely through the quicker acquisition of job-relevant knowledge that higher IQ mediates job performance." So you'll acquire new skills more quickly if you have a higher IQ, which makes sense, but if you have two people at the same apparent skill level applying for a non-entry-level position, IQ may well not be (or may well be) a valid means of deciding between the two. This jives fairly well with the quote from Google.
That was a famous result Google published. The finding is based on their study of their existing employees.
Similarly, the correlation between height and basketball ability is attenuated for people who are currently NBA players. But it's quite strong for people overall.
Your comment about SAT scores is funny to me because I was just thinking about how untrue it is today. I was one or two questions off of a perfect score, and I'm at an extremely selective school right now. One of my friends didn't score quite as well as me, but really close (read 97th or 98th percentile) and I would not trust him with my life to write any program. We both are CS majors, granted he goes to a different school.
In all honesty, I think SAT scores have less correlation with IQ and general intuition than most people believe. Sure, it's a decent way to weed people out, but it is by no means a way to find geniuses.
To be fair, someone's inability to write a program does not mean that they cannot be a genius. Perhaps your friend has other areas of interest/talent.
I would say that performance on standardized tests is a test of two things: 1) hard work and preparation and/or 2) Intelligence in the concepts or subjects being tested.
Feynman said he scored 124 on an IQ test. IQ is not a good predictor for the kinds of meritorious achievement that SV mythologically prefers. Once you get lucky at findind the gold mine, you want people who are best trained in mining. That pretty much sums it up.
But probably more apropos, the laws for H1-B and other hiring processes make it such that you don't want to have any hint of impropriety that would convince a judge the plaintiff would even have a case. Once the judge rules there's a case, you pretty much open up your bank account and settle.
Then there's the counter, if you're so awesome why aren't you my competitor?
I'm guessing (say) Ivy dropouts have SAT scores in roughly the same range as Ivy graduates but are less employable because of the whole thing of a degree showing that you can stick with something and do what's asked of you for 3-4+ years. So it isn't solely a proxy for asking IQ/SAT scores.
(I'm a dropout, though not from an Ivy, and that's definitely something I've had to do a lot of explaining of in every interview I've had. Haven't been on the market for a few years; if there really is a magical age where people stop caring about degrees, I look forward to reaching it.)
At some places, x years of experience can be considered equivalent, but bootstrapping to the equivalency is non-trivial without a degree (chicken-and-egg).
This is where fake it till you make can really come into effect. My first paying programming gig was a gambling system for a really cheap dominican/canadian outfit. Pulled it off, made some really good design decision and then bailed when it was obvious the owners were trying to rip off their investors.
It still gave me experience and I used that experience and stories for the next 2 jobs. Hopefully it keeps working because I am way better than I was on that casino job.
I don't think you can become a great programmer until you overcome The Fear. And you won't be able to do that until you have the stress of doing it professionally for someone else. And being able to successfully come out the other side of the project.
This was my bootstrapping process: Got a tech-support job at a software company. During my first week, wrote a company-themed screensaver. Showed it to the CEO. Became a developer later that day.
I wonder how they're counting ads that say "BS or MS in Compsci or Equivalent Experience" or something to that effect. I understand that this could deter some applicants, but I think that it's pretty clearly a go-ahead for applicants who don't have the degrees but think they could do the job (though presumably applicants with the relevant degrees would in aggregate fare better etc). I wonder this explicitly because last time I looked I did not see many mentions of degrees that weren't explicitly accompanied by the OR.
Supposedly there's actually an industry standard translation of work experience to years of college. I think it's 4:1, so 16 years of experience is worth a bachelors degree.
That seems a little high. In the real world it seems that 4 years of hands on experience is often worth more than 4 years of school. For certain things anyway. I have a degree. I'm not sure the education was really worth the money but it has opened some doors.
Do you know anyone who would really prefer a new graduate to someone with 16 years (presumably successful or why the hell are they still here?)? I have about four years experience in full time development work and a BA in an unrelated field and (think I) haven't experienced or seen this ratio in action.
For people who don't have a degree, have you ever been rejected from not having a degree? The requirement might say it but I doubt it matters practically.
I imagine for junior positions this matters more.
Anecdotally, I know at least one friend without a degree who gets the same amount or more recruiter emails sans any degree on his profile
I have worked for more than one employer in Silicon Valley that expressly forbade me from considering candidates without bachelor degrees for my open reqs. This was over my objections, because I strongly believe a degree says nothing about a candidate's job skills.
One place even went so far as to limit the acceptable majors. CS and CE only, not even EE was acceptable. Nevermind that EE is often in the same department and some people may have gone to schools without dedicated CS programs. Exceptions could only be made if the candidate was a direct referral and that person really went to bat for you.
It's total nonsense. I have a CS degree myself and it hasn't informed my professional work at all. I don't find myself referring back to my databases coursework where we used a made-up non-SQL language or my operating systems class which was about punch cards and paper tape OSes (and this was in the early 2000's, not 1975!).
I get a lot of recruiter and founder interest but I often do not make it past an HR screener's eye into a candidate pool due to lack of degree.
If I can bypass that step and talk to a dev or experienced manager I get at least one interview every time. For companies using software like Greenhouse in their recruiting pipeline, I _never_ make it through to even a phone screen without an internal shove by someone.
Almost everywhere I've ever worked, I've been considered a strong hire. Mid-level dev.
We looked at a degree as an indicator that this person can stick at something for 3-4 years.
For some jobs this was a good thing, for other jobs it didn't matter.
I've had jobs where my manager didn't have a CS degree, one of them I had to sit him down and explain why his ad-hoc database made out of .txt files and thousands of lines of C# code wasn't a good idea. A CS degree forces you to know about a broad range of ideas and tools (e.g. databases). This is useful. Employing someone with out that means they may have holes in their knowledge that you aren't expecting to be there. But give this person some motivation and a week and they'll get up to speed.
I had another skilled tech career with 15 years experience before switching to software and all of my employment has been in the 1-5 year range, more towards the latter.
Despite my lack of degree, I tend to be one of the more CS-oriented people on the teams I join. I put this upfront in my portfolio & github with the projects I show off, namely that I've written an ORM, a Web Server, games with AI using game trees and behavior trees, contributed to some popular OSS, etc...even some random odd stuff like emulators, disassembler scripts, pentest tools, etc.,
I guess I do have some gaps but I'm constantly trying to fill them and I'm not satisfied to rest on that knowledge.
I've been in the industry since the mid-90s, and employed doing full-time software dev since 2000 (before that was sysadmin and scripting and the like). I have no degree; my undergrad was a BA in philosophy, but I never finished it. I dropped out to join the .com boom and do what I really wanted to do. (I never had the math grades to get into a CS program). There was never a good time for me to go back and get a degree, I was always either employed or broke, or had responsibilities (home, kids, etc.) that prevented me from dropping out of the workforce to do it.
So as to your question; Yes, it happens routinely, in my Canadian job market. At both the junior and senior level. Many positions won't even reply if they don't see the degree on your resume. I make it explicit in interviews just to get it out there because I have had too many unpleasant situations where the degree was at first assumed and then revealed to not be there. Reactions vary.
In the end I've had a successful career, but with some struggle. I work at Google now. But mostly only because I came through acquisition. I would not even be considered for an interview otherwise. I have faced some small internal attitude over not having a degree, tho only a little bit.
There are other things that result; grads from CS programs spend a lot of time in algorithms course studying the kinds of things that get asked as skill testers in job interviews but then almost never used in the real world again. (Not to say I haven't studied these algorithms, but studying them in school I think helps respond in the way an interview expects.) That also affects employability. And more and more because this is the direction more and more interviews are taking.
I think interviews are also a whole another can of worms for recruiting. Hiring a programmer isn't the same as hiring in many other professions; you're actually quizzed (university style) on textbook algorithms.
Granted, there needs to be a filter. However, how many algorithms does one need to memorize to be a good programmer? Is knowing how red-black trees work going to make one successful? Or is knowing how hash tables work Under the surface going to make one successful? Or is just being able to use the Hash data structure provided in Ruby good enough?
So has something changed or was I just 'lucky' before, because for the first 10 years of my career I almost never ran into these whiteboard/skillz-tester type of interviews. And never into a "we take your life for the day and drill you with multiple teams for hours on end, oh and also you have to point us to a very illustrious github and stackoverflow portfolio."
It was usually just a phone screen, an in person, a few questions to see if you were full of shit, and then call references. Ta da!
If you don't have a degree there's a good chance you won't get past the initial screening at some companies. In practice, if you get dozens of applicants for the same position you may be looking for excuses not to bring people in. And there are some companies that have a famously academia-focused culture, like Google. While most startups say that they don't care about degrees, the reality is that somebody with little experience who happens to have a CS degree from Stanford has a lot of doors open to them, especially in a place like Silicon Valley where so many founders -- and VCs -- are Stanford grads. This has happened to me more than once. Recruiter emails aren't a good measure for this; a dismaying number of recruiters only contact you based on keyword matches against your profile, and don't actually look at your resume. (Hence why I regularly get emails looking for contract Java developers in the northeast US, despite the fact that I'm a technical writer with a full time, non-contract job in Mountain View.)
I suspect there's going to be more of a focus on degrees going forward, not less, simply because it seems like more and more people are going to "developer boot camps" and trying to get out on the market without a CS background. I don't have a CS background, so I don't want to say that's necessarily a bad thing, but I suspect in a year or two we'll be creating more tech job seekers than tech jobs, and as the market tightens, screening will get more stringent. People with stellar track records are still going to get work, degrees or not, but people who are "merely good" may find that a degree tips things in their favor.
About three years ago I was fast-tracked to interviews at Apple via recommendation.
About 9 interviews later over 4 spread-out days, I was told I had done quite well during the interview process.
Eventually I was not given the position because 1. I did not have a degree, and 2. I was holding a beer in my LinkedIn picture.
They ended up paying my current employer (their vendor at the time) astronomical amounts of money to do the very same service, done by me, on-site. I still do it.
I quit in the middle of uni to start an IT support company, and have been bouncing around in the industry since. I have never had much of an issue with a lack of degree, but thats mostly because I operate by word of mouth for jobs, and I have a fairly unique level of experience for a sysadmin.
What I have seen being done though, not just to me, is companies using no degree as an excuse to underpay for a position. This usually only works with experienced people like myself. The company says, "ok, he seems like he can do the job, but he doesn't have a degree. That's good, because we can take 10-20k off the salary for the position and still get roughly the same level of work out of him."
Also, if I am ever doing contract/job searching, it's usually word of mouth. If a company requires me to resubmit my resume in their wierd online portal and reenter every detail about myself in someother HR system to make it past the HR gods, I don't even bother with them. I'm guessing places like that would be more likley to weed out non-degree holders, while word of mouth/good ol boy network jobs are much more about your experience.
> For people who don't have a degree, have you ever been rejected from not having a degree? The requirement might say it but I doubt it matters practically.
You mostly just don't get phone screens, and this is mostly from larger companies where the HR drives the initial recruitment.
TLDR version: you may have to deal with lower salaries, less respect, lower quality organizations or departments, lots of free time catching up/keeping current, more questioning compared to degreed peers, and occasional culture shock. Not everyone deals with all/any of those, but chances are higher with no degree.
I've been a dev for 17 years. I've worked at a mid-sized, a startup, and two BigCos, and can't remember anyone ever asking about my education. Hiring conversations are always overwhelmingly about projects I have done.
Nobody ever asked me about my education either. So last time I made a CV, I left my degree out, because it was just taking up space... and I got asked at the interview whether I had a degree or not. They looked at me a bit funny when I said I did, but appeared to give me the benefit of the doubt, since they offered me the job (however I didn't end up taking it).
Needless to say, my degree is now on my CV again, so people can go back to not asking me about it.
My undergrad advisor gave one of the best advices about why diploma is important. A college education is a social institution where you work with dozens of students, teachers and staffs across disciplines. Ideally, culminating with a diploma. That diploma doesn't tell others how good you are or you can be. It tells others that you can be part of a social institution and get some things done.
Greatness is independent of school or diploma. Some of the best minds of the world never set foot in a school campus.
It's worth pointing out that they came to this conclusion by looking at job postings.
If a company is large enough to have some HR person creating job postings, then they're going to come from this mindset that education acts as a convenient filter for separating "the wheat from the chaff". It can sound dumb as all hell, but it's the best broken solution they can come up with because it's easy to glance at a resume, see the letters "MIT" and put it in a different pile from the people who came from New Mexico State (or some other generic university in a predominantly rural area).
I don't agree a degree, and I've done pretty well for myself, but it's worth pointing out that I've never applied for a formal job ad. I've relied on friends and I've relied on networking events where I showed off some cool thing I made and found out after the fact that the person I showed it off to was an influencer when it came to hiring at their company.
So to sum things up, I think it's safe to say that companies hire by degrees because that process scales pretty well, whereas hiring by portfolio really doesn't. Nonetheless, if a dropout can prove themselves even modestly well, then they've got a job.
The best hackers I've worked with didn't have degrees. The best software engineers did. You need both.
On the hacker front, I noticed a lot of patterns--they had a lot of drive, were self-taught (obviously), and had other things about them that were remarkable. One can play any song on the piano that he's heard just once before. Another is a multiple-time CTF champion. Another is the best performance engineer I've ever met, and who can diagnose and fix site outages 10x faster than anyone else.
There's a difference between hackers and engineers though. I found that the engineers were good at breaking projects into milestones and driving their teams toward them, e.g. steady state development when conditions are good. And I found that the hackers excelled at exceptional or emergency situations like debugging complicated multithreaded code on the fly or figuring out which switch in a datacenter was corrupting packets for production traffic. There were exceptions in both directions (hackers who were great technical leads and engineers who were great detectives), but this was a pretty general rule I saw over the years.
I also worked with a number of people without degrees that weren't very good, so it's not like the lack of a degree makes you a hacker or makes you good at your job. You have to be very driven when you're self-taught and sometimes have to work harder than your peers who have a more evenly balanced education.
I ended up being a bit of a wildcard myself--I'm a self-taught hacker and did lots of cool debugging and detective work for 14 years, and then I was a manager for 5 years. I think hackers can make interesting managers since they are willing to upend traditions and try new things with their teams. I did a lot of that.
I've been developing professionally for nearly 20 years now. Though, since some of that time was as a high school teacher, it isn't all, super high end stuff, but even there was value in learning how non-programmers think about computers... (One darling example was "what do you mean by file->menu? Menus are for food"
With that 20 years experience (and two non-cs bachelor's degrees) I've now managed to fail interviews at both Facebook and Amazon.
While the Facebook one was (in my opinion) pretty deeply flawed, the Amazon one, the 4 hour version, gave me virtually every opportunity "get it right" and I felt like interviewers were all "on my side"
In the end though, I really felt like if I'd had the full CS experience in university, I'd have had the edge I needed.
Specifically there were portions of technical nomenclature that I fell short on in the object oriented design portion. "What is the word for that thing you're doing there?"
and the dozens of hours spent discussing various efficiencies of search and sort algorithms would have made the extra steps in the optimization portion feel more like second nature.
With all that said, I have recently been doing my research into how and where I might be able to go back to school for the stuff I've missed out on.
U of T or a Waterloo masters? Perhaps Harvard extension schools? (the online version of the school which apparently real Harvard grads sneer at but still has Harvard in the name)... Or maybe there is enough in iTunes U to get what I need.
Whatever I go with, after 20 years programming, I've decided that I may as well take this programming thing seriously. I suspect there is a future in it.
I don't live in Silicon Valley, but I've found that the "requirement" for a degree is more of a suggestion than law. I don't have a degree, and I still usually apply to jobs that have that requirement.
I don't always get an interview, of course, but I get them often enough to where I kind of feel like they're on the description as a formality more than anything.
So, I'm a college dropout, and for me not having a degree was an issue until I hit the 10-15 years of experience mark and was up for executive positions. Then not only was it not an issue, no one ever asked.
Yeah, I think there's probably a middle management trap in a lot of organizations where they want you to have an MBA for a director of product management role, but for a vp of product or cpo job they're actively recruiting the exact people they want usually based on job experience or prior success.
I think I skipped over that because I got acquired into the middle management role, no resume or job spec required.
I've regularly seen just about every method used to pick candidates bashed here and denigrated as unfair, useless, etc.: degrees, GPAs, SATs, IQs, phone interviews, in person interviews, whiteboarding, tests, puzzles, experience, etc.
Reminds me of the hoary cliché that democracy is the worst form of government except for all the others.
Employers use degrees as a proxy for intelligence now that it's legally perilous to give IQ tests. They don't want you because they think MIT taught you something people can't learn on their own. They want you because you were smart enough to get accepted at MIT.
If you dig in with employers to understand those job listings, there's a big difference between what they ask for and what they settle for in terms of qualifications.
Another significant percentage of those job listings are designed to game the H1B system as well. So, are basically fictitious.
"Self-taught developers dominate technology: 69% of the developers who responded to the survey are at least partly self-taught, and fewer than half hold a formal degree in computer science."
It's fascinating to read this article on SV wanting devs with degrees, then compare it to this article [0] on the annual StackOverflow developer survey. SV requires a very narrow skill set compared to the rest of the world.
Really ? I always thought them as synonyms and "Software Engineer" as a more "upscale" title (which is kind of stupid, IMHO).
From Wikipedia:
"The term programmer has often been used as a pejorative term to refer to those without the tools, skills, education, or ethics to write good quality software. In response, many practitioners called themselves software engineers to escape the stigma attached to the word programmer. In many companies, the titles programmer and software developer were changed to software engineer, for many categories of programmers."
Exactly! Me and most of my friends are doing basic front-end and app development. Nothing that required our degrees. And yet we are making the same high salaries as everyone else in the bay area.
I recently got thrust back into the job market here in Austin, and I've not gotten the response I was hoping for. I've only gotten two on site interviews, both of which ended with a No from the company in question. Even if I do get through the recruiter phase and get brought in, I'll get thrown algorithmic questions I haven't had to deal with since I left school. Even though I'm a capable dev with some team lead experience I can't help but think I am being passed over (in part) because I never finished college.
I've even considered going back, but due to the length of time I've been out it seems my credits have expired (even though I'm still paying the student loans). On top of that, I left school for a reason and it hasn't changed - I hated every waking second of my life while I was there.
But now I have no income and a wife and house to support. Maybe I'm just looking for a scapegoat. Everyone I talk to (outside the industry, I have only a few contacts within it) just say "Don't worry, everyone wants to hire smart nerds like you!".
I have a CS degree, and I still encounter countless algorithmic questions in interviews. I don't think the lack of a degree is much of a factor as far as whether you get asked those questions or not, sad to say, as I'm don't usually keep it too fresh in my head and/or somehow manage to study the wrong things when preparing ahead of the interviews.
Sometimes I just want to yell at these people "Just watch this video. I did that! That's my name in the credits, under 'Lead Programmer'! And here's my iPad, launch this app! Now click credits. See, my name!"
Instead I get asked virtually zero questions about my past work and get a test thrust in my face, or a marker shoved into my hand, or I'm asked to "sit and code this while I stare at you over your shoulder as you try to remember whether it's NSJSONReadingMutableContainers or NSJSONReadingMutableLeaves. But don't you dare make a Google search!." It's frustrating.
You're competing with UT grads and everyone else who moved to the area for tech.
Not having a degree in Austin puts you at a significant disadvantage when it comes to getting recruited. I had the same problem when I lived there and I, too, do not have a degree.
I hadn't thought of that, what with UT being right here. I was able to get hired with relocation 5 years ago. Since then I figured it'd be a good town to put down roots so I bought a house. And now here I am seemingly unable to find work.
Damn. Maybe I'll have to look to other cities. I put my resume into the big corps and either got nothing or had some asinine HackerRank test that lost my progress 1:45 in and then heard nothing more.
Well, you can relocate to the Bay Area, as expensive as it is. I did so, as well as a huge mob of Texans. Californians did the opposite: moved to Texas for cheaper housing/lower taxes.
The upside is they pay you more to offset the cost of living. The downside is that roughly 50% of my income before rent goes to taxes, and half of that goes to rent.
Bigger firms yeah, smaller firms care more about passion and knowledge. Both of which are usually attained outside of your degree (if you even have one). Degrees are good more for providing baseline mathematics and theoretical background for jobs that need more of that.
That said I think a degree is probably the least relevant aspect of hiring for 99% of developers.
There is a larger issue here than just what recruiters at the GOOG are looking for.
Historically, the difference maker between SV and Boston was the willingness of the former to take dropouts, divorced people, dreamers with gaps between jobs, and for the latter to actively filter out those people.
Remember, "disruptive innovation" occurs first in the low-cost product segment before working its way up into the the more recognized and lucrative markets. Given the rapid progress going into both:
- Alternative Learning Models: bootcamps, MOOC's, K-12 coding education, etc
- Dev Tools: StackOverflow replacing book learning, github/npm creating code of a thousand dependencies, etc
I would worry that forcing your entire company to be made of candidates of the most traditional and elite background sets you up to miss the next trend in how to profit from People->Software.
I do lots of recruiting / hiring at my job. I use a sliding scale. If you have no CS degree: have you written applications from scratch? Is your experience diverse or have you spent 5 years repeatedly writing the same Rails app?
On the other side, if you do have a CS degree, have you written application code before? If not, I want to see that you can apply your CS fundamentals to practical business problems.
Of course there are people without a degree who are phenomenal programmers, and people with one who can't write FizzBuzz! Is anyone arguing against this? When we're screening people we need some way of gauging your skill level. A degree is one indicator, practical experience is another.
Well, since software engineering is a field where the government is not able to settle the matter just by slapping the obligation to have a particular degree or certification just to be admitted to the job, employers are allowed to choose. If you have an aptitude for programming, you will be better off just programming for 4 years. Going to college and reading books about programming will turn out to be only marginally useful, and actually quite costly. Instead of learning, and making quite good money, you will be digging yourself into a debt hole, while you will still need to pick up the real skills afterwards, at the expense of an ever more skeptical employer.
The best programmers with whom I've ever had the privilege to work have had their degrees in mathematics, not CS, and I think that math majors have tended to be better hires, in my experience. Physics and astronomy students can also be great.
Article is looking at job ads, not actual employment.
Every job I've applied to had a degree requirement. Ive had offers from every place I've interviewed with no degree. Just because they ask for it doesn't make it a hard requirement.
The WSJ is often out of touch with reality and this article is no exception. They collected the data from job postings and stopped investigating. If they'd done any real investigation (like, polled working developers and correlated their work history with their education) they'd realize their reporting doesn't support their (sensationalizing) headline.
(I used to work at Hired; I have a decent sense of what gets noticed on an engineer's resume. And I've personally interviewed hundreds of developers.)
Degrees are a form of legit experience. They aren't the only form, but I can't fault a company for short-cutting their own process by requiring a degree. I think it should be their choice, even though I disagree with it from a effective-business perspective.
Personally, I might filter for someone with particular training or tool experience, and I see outsourcing your decision process to a college/university in a similar light. We can't investigate every competency, so we use proxies.
As anecdata from personal experience: It is possible to both get a job in Silicon Valley without a degree and an O-1 visa.
I'm just one data point, but I think having gone to college for a few years is the important advantage, not the degree itself. I did the former, never ended up having time for the latter. Too busy solving people's real world business problems in return for cold hard cash.
But I also started coding when I was 9 and started coding for money when I was 16 and still in high school. Your mileage may vary.
While likelihood of being hired and the expense of college are factors in deciding whether to attend, they should definitely not be the only ones, and maybe not even a major factor in your decision. To view things this way is to take an extremely narrow view of the benefits of attending a good university. It's not for everyone, but I personally took so much more out of the experience than just a notch on my belt for getting a job.
I'd love to hear some of your reasoning, but my impression is that the writing has been on the wall for MBAs for 10+ years and that anyone with a recent MBA shifting into tech is someone looking for a buck but doesn't have a clue.
I generally find that real world experience trumps what is being taught in MBA programs these days unless you're going into consulting or the like. It's not particularly hard to find someone who has built something instead of their MBA, and I'd much rather them around a few sage folks than some fresh faced textbook jockeys. Also: anyone with a recent MBA shifting into tech is someone looking for a buck but doesn't have a clue. ;)
I work for a university (not in SV), and the min quals for software engineers usually go something like:
(Bachelors of Science degree AND three years of development experience) OR
(Five years systems development experience) OR
(Any equivalent combination of experience, training and/or education)
In personal experience, once I hit about 10 years of experience, whether I had a degree seemed be only of passing interest to interviewers.
As someone with a journalism degree I've never had a hard time getting interviews anywhere, large, small, whatever.
I think it more matters that you have a degree at all and a decent sum of experience than strictly a CS degree. For instance, I can now lean on my professional experience more where before I had to have a portfolio of projects.
I don't think degrees matter that much. After the first internship/job, the prestige of the companies on your resume basically "becomes" your degree. I go to a mediocre school and the responses were night and day before and after getting an internship at a trendy company.
Someone once told me that school is such bullshit that if you can though it out for 4 whole years that means a lot about determination.. Of course real life is more nuanced but I thought it had a little bit of truth to it.
I have previously applied and gotten job postings that mention they want a CS degree, in fact no one has ever made a fuss about the lack of it in my experience.
This seems to be about job ads. Job ads almost always list a bachelor's degree as a requirement, but I don't think it's a hard and fast rule for most places.
By a similar philosophy, all you really need to do is this:
1) Persuade people you're good. Or, in other words, get people to believe you add value.
Being able to add value doesn't achieve this by itself. But it helps a lot. Not being able to add value doesn't preclude you from doing this. But it doesn't help.
(My comment is a somewhat winking... but I suspect some readers will recognize some uncomfortable truth.)
I don't understand why considering degree and reputation of the university when hiring so frowned upon ? It seems perfectly logical to me. Afterall, when you have 1000s of resume a day to sift through (not unusual for big companies like Google, etc), what criteria should you use to filter the candidates ? It's easy to fill a resume with lot of crap which is often fake or exaggerated. A degree and university reputation is a very objective measure that can used to quickly identify a potential good set of candidates, and then use actual interview to find bad apples from them. This approach optimizes toward having as few False positives as possible when hiring (False negatives on the other hand are plenty, and that's fine) - which is a stated goal of hiring for all big companies (Google, FB, etc), who are at luxury of having more candidates than they need, hence don't care much about False negatives.
Is it fair to people without degrees, esp, for cases where the only reason was that they couldn't afford it (considering how damn expensive higher education is in US) ? No, of course it is not, but then who said life has to be fair ? And of all things, why should we expect for-profit (and I use that word with respect, not derision) companies to hurt themselves to "just" try and make it fair to everyone ?
IMHO, education (both degree, and even more importantly the selectiveness of the university) serve as a very good proxy measure for how likely a candidate will be good. This is similar to say work-experience at a very reputable company, which is known for its selectivity. In both (university or top company) the scenarios you know that candidate had been filtered among a very large pool of candidates in past, so very likely to be bright.
As an example say, you want to select a dream team to attack the "Riemann Hypothesis" problem. Will you consider a candidate's credential (like education, university they are working at) as one of the big factors, or will you be just trying to interview anyone who applies, even if they don't have any exposure to higher math ? Say you get 100k applications, and can only interview at most 100 of them, does your answer change ? I know, that I will look at credentials, past work (which all correlate insanely with education & university affiliation) as the first measure to filter things out. Of course their will be outliers, and there will be exceptional people who are very good at Math without any degree (like Ramanujan), but there is no scalable way to find them in this scenario.
Similar example: What is the probability of some random dude on internet claiming he has a proof of P != NP being right vs say it coming from a reputed researcher (for the sake of argument say "Richard Karp") ? Whose proof are you going to read more carefully ? I guess the answer is obvious is this case. Now let's say it is between a random no-credential dude vs a PhD student of Richard Karp's (at Berkley) - who are you going to take more seriously ? Is it fair, probably not ? But statistically you will be much better with having these conscious & unconscious biases (backed up by data of course), then sampling uniformly from the world.
1. All else equal, and looking at the industry as a whole, having a college degree in CS is an advantage in getting hired over being self-taught. Things get more fuzzy if your degree is in math/physics/etc., but those still confer some advantage.
2. The advantage is very large for entry-level roles but diminishes greatly with experience. The advantage is even larger if you went to an elite school. The advantage is small if the school is mediocre, and negative if it's a diploma mill.
3. The advantage varies greatly with the company. Google definitely cares more than most startups.
4. The advantage virtually goes to 0 within a decade but never completely goes away, simply because of effects like your-interviewer-went-to-the-same-school, alumni networks, and the fact that more people irrationally care about CS degrees in senior devs than are irrationally biased against them.
5. Whether the advantage is worth the cost is a very complicated issue. This advantage is almost certainly not worth it if you have to go 100-250k in debt (private schools). The opportunity cost is also quite large, but this is complicated because what self-taught job you get depends on your own background. Coding bootcamps also complicate things. At a certain point depending on scholarships / parents paying / going to an in-state school, it makes sense.