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."
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.
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.
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.
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 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.
[0] https://archive.org/stream/briefhistoryofed00cubbuoft/briefh...
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.
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.
But a degree in general does seem to be requisite for even professionals with decades of experience.
According to whom? Multiple Google recruiters have quite explicitly told me that they don't care that I don't have a degree.
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?
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.
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.
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.
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.
Here's a neat story about how one student was implicitly recruited to one of them: http://www.theguardian.com/education/2014/dec/06/shimer-coll...
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.”
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.
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.
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.
Doesn't describe my degree at all.
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).
So I got a job offer from them without a degree, but they certainly did care.
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.
At the beginning of my senior year in college, I sent them a resume containing my GPA (3.9/4.0) at a public school (Clemson).
I heard back from Google within a couple weeks, had a few phone interviews, and then they flew me out for an on-site interview.
I had friends with similar credentials, but lower GPAs (< 3.5/4.0) that never heard back from Google.
Having a degree or high GPA doesn't matter to them once you're interviewing, but its tough to even get an interview without one.
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.
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.)
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.
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.
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.
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.
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"
FTFY
> 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.
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.
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.
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.
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.
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.
If you happen to be in that 10%, then yeah, maybe some higher education on those topics is necessary.
If you know developers writing their own distributed system, chances are they are wasting their time, BS or no.
> They're incredibly productive, but sometimes waste too much.
> time trying to solve known problems in an inefficient manner.
As a self taught with 20 years in field, I agree and am even in the process of getting ready to go back to school because of it.
He sure can build a great ecommerce system in Rails though.
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.
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.
OP seemed to hint at a master's degree or Phd, but then also mentioned doing one's "homework".
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'.
edit: typo
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)
"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."
http://www.joelonsoftware.com/articles/GuerrillaInterviewing...
Also, you probably haven't interviewed for entry level software jobs at a BigCorp in many years.
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.
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.
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.
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.
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.
It's definitely not "opportunity costs win every time."
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.
If I see someone who's done interesting things, then realize they don't have a degree, that is a plus, and I'm interested in them.
But generally, if they've got 10+ years experience, I never even look at the education history. It doesn't matter.
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.
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.