Two google interviews, and nothing. From what I hear from other people I consider way smarter than I, they also got nothing.
Google has a much copied process, but as a creator of something of huge value notes:
https://twitter.com/mxcl/status/608682016205344768
Mebbe their filter isn't quite as good as they think it is. Talking to a number of absolutely brilliant engineers who didn't get hired, it likely has nothing whatsoever to do with talent, algo knowledge, mathematics, etc. There are other factors.
Being an above 40 guy probably didn't help me, google and others seem to have lots of trouble with ageism.
Dan's article was not specifically about being the "top", rather, what does the "top" mean in context, and how do people judge. What is the opportunity cost of doing this? As he points out, as I point out, it can be very high.
The smartest programmer I met in my first decade of work, was a person who had a high school diploma. No college degree. The guy was brilliant, personable, humble. He is quite successful now, and still doesn't have degrees. Chances are, he doesn't have formal education around the math/algos, but has picked up everything he knows.
At the end of the day, hiring is something of a crap-shoot. Past performance is not a guarantee of future performance, either negative or positive. You are after passion, intelligence, fit, experience if it exists (re-inventing wheels can be time consuming/expensive if you are forced to do it, and getting a guide who has been down that path can save you making some mistakes/time/money).
I know people are telling themselves that google has a good process, but honestly, it looks like it enforces homogeneity more than it brings in needed talent. I am not sure this is a good thing. Poor replication of their processes is rampant throughout the industry. I am not convinced this leads to positive outcomes.
> Two google interviews, and nothing. From what I hear from other people I consider way smarter than I, they also got nothing.
Then you and your friends weren't fluent enough with algorithms. That is the point, they don't care about all of your degrees, years of experience, conferences etc, they care about your fluency with maths and algorithms. This means that even a person with a shitty background can get hired at Google while a person with a stellar background gets rejected. Should you have gotten hired? Probably, but their system lets them find a lot of diamonds in the rough who wouldn't get hired anywhere else which is why they use it.
"Maths" is a red herring -- a physics PhD who's still active in academia will definitely be very fluent in maths.
It's all about "algorithms", but I think a lot of software people have tunnel vision about that. There's a lot of fancy terminology you pick up in a CS degree; requiring people to know that filters out a lot of potentially good candidates, unless they've studied CS in their own time.
That's fine if the special CS terminology is absolutely essential for all programmers. But is it really? Realistically, 90% or more of your time as a programmer is spent working on other stuff (automation, testing, designing friendly APIs, catching sneaky bugs, scripting, just generally plumbing stuff together). If you're on a team, does every single team member need to have a great understanding of data structures? Or is it just nice-to-have, specialized knowledge?
I'd argue that it matters more for Google more than most employers. The combo of their scale, combined with their large amount of custom infrastructure, combined with their desire to be able to retask engineers on a whim, means that individual engineers will have pretty good chance of touching code where the choice of Big O could make or break a product.
On the flip side, though, I think many programmers (even programmers who are up to date on their CS) are fairly weak at mathematics. We think we're good because we can, you know, invert a binary tree, but how about figuring out an appropriate filter to smooth some data, or verifying that some randomized process is unbiased?
For something like digital filters, if you have basic knowledge you can just look up wikipedia for the details. But the same applies to data structures and big-O!
A lot of companies (including Google) can benefit strongly from people with good maths or stats skills. Do those people also need to be strong in CS? Or if not, do they need to be siloed into a separate hiring process, and placed in separate departments?
I reckon CS, maths, stats and other specialized academic training should all be treated as nice-to-have skills, of varying importance depending on the team balance and project requirements.
I didn't fail those portions. Actually did quite well on them. So did my friends.
You are making a number of invalid assumptions, starting from the assumption that their processes are fundamentally accurate or correct. My supposition is from the viewpoint that all systems are fundamentally flawed, and the goal is to minimize risk associated with a flawed system.
I know it is generally hard to acknowledge that google does things wrong, but ... IMO (and I am fairly sure I am not alone here) ... they have a number of significant issues that they haven't quite moved past yet, and this is one of them. Remember, they started out with brain teasers, and school pedigree. The new system isn't demonstrably better IMO, but it helps them convince themselves that it is.
Then I don't see your point, what are you saying caused you to fail? I have a physics degree from an unknown school, learned to code in my thirties and got a job at Google by just doing well at their algorithms and maths questions so it is definitely possible to get in without ticking any of the hip boxes.
Don't feel because you got in that you are some ordained snowflake. If you had interviewed on another day or with another group within Google you very possibly wouldn't have gotten in.
There are many variables at work when it comes to getting hired and hiring.
Just kiddin'. I think, inverting the binary tree probably means mirroring it. I had an interesting Google interview as well a few years ago where I aced the automated coding test but then the first human interviewer didn't get why I said that regular expressions run in linear time :) Our background was just very different.
Also, I'm curious about how you managed to even get your foot in the door at such large organizations and not just get swept out in a filter at the gate. I'm assuming of course that such large companies employ some kind of application tracking system (which may be in error).
Even if it's never used as a filter by Google, their hiring practices just don't apply to the rest of the industry - Google can afford to pass on 99.9% of the high quality talent that applies. Other firms who try this are only crippling themselves.
I don't think it's 'unreasonable' at all to put strong emphasis on education.
Surely, at the end of the day it's possible to be great without it, but having a good education is pretty strongly correlating factor with so many things.
'Being cool', I don't think is correlated with much at all. Unless it's super consumer facing and inner culture is gong to have to match outer culture on some level.
If you think the entire Silicon Valley is missed this, because it's not 'my' correlation.
People who study CS are probably more likely to better at CS that those who have not.
It doesn't prove or mean anything in general, and your personal situation is not relevant: of course there are tons of 'non-degreed' great techies out there. Nobody is denying that.
I've hired a lot of people and there's no doubt that you get better luck with degreed than non - and even school rankings matter.
In Canada, for example, you get consistently strong tech recruits out of U Waterloo. Impressively so. Not always but usually. Other schools in the region - much more hit and miss.
I don't think this is controversial.
Beyond that, software development is plagued by this mindset that college degrees are useless and that only self taught people are worth looking into. I've worked with many college educated people who can't write good code, and I've worked with many self-taught people who really don't understand what they're doing. The best has always been a person who went to school and then continued on learning after the fact.
Ugh, yes. I've worked for a leading SIM and smart card manufacturer and they required a 4-year degree to even get in the door. I interviewed countless people, including some who were able to answer some quite technical questions that others couldn't. And many of those had to get disqualified since we found out during the interview process that they didn't have a degree. There were so many degree holders there that didn't know what the hell they were doing, and it was obvious.
I've also been in the field for many years and held several interviews. My takeaway, to put it a bit clumsy: "knowledge is easy to fix, mindset and experience not as easy."
But yeah. I was reinforcing your point, not being counter.
"...expect to get turned down without a degree" and "...software development is plagued by this mindset that college degrees are useless ..."
My point is that there's a middle way. Only looking at degress is stupid because it doesn't guarantee anything other than that they got a degree. With that in mind it doesn't make sense to instantly disqualify people without a degree either.
Of course, in the past twenty four hours I've created an app and potential side-business from a technology stack I had absolutely no experience in any of it just to prove to a potential employer I can do 'front-end' stuff for them.
The average developer can't even CSS, don't even play with that 'degrees are the ultimate arbiter' mess.
This tells me you're wasting your time and potential. There are other ways to get a job.
Thanks for your reply though, I agree with you but then I run into reality and the need to pay bills.
What do you mean by that? How sophisticated is it to "do CSS"? When I've dealt with it, you basically look at the inspector and at your CSS libraries of preexisting classes, and basically do a combination of attaching classes and writing new ones with custom styles until you get it all to look right.
What should I be looking to learn?
There's an art-form to doing amazing pixel perfect web designs, and I really respect the people who are good at it. That's not me though, and it's never going to be me.
I've had to do similar things to find work: (started young out of interest and put it aside for a few years, then), spend time volunteering (UNOV), freelanced, voluntary freelanced for small businesses/local orgs, build pet projects, just build things in general and study.
Maybe it prepares one better as an engineer than a scientist in the field — the application of a science vs the theoretical and experimental work in developing the science.
--- To expand on the parent subject...
I've had interviews since where I've been able to lay out some of the things I've designed and built both independently and while working for a major media company and still had interviews last hours upon hours to receive no call to even notify me that they've decided to go another route all for some odd questions with no definite answer like:
Implement a poly-fill for bind by extending the Function object
Or, Explain what this css does "if you don't know that's okay,
but don't get it wrong – that's 'bad'.":
.box {
display: flex;
min-width: 1024px;
min-width: 52em;
margin: 0;
padding: 10px 15px 10px 15px;
}
.box--item {
flex-shrink: 2
}
.button {
appearance: none;
border-radius: 3px;
background-color: blue;
}
.button--green {
background-color: green;
}
In the case of the CSS, no DOM context was presented, and the class names I'm giving provide far greater context than the test I'm referring to did...Only to have every answer given either go unremarked-upon or just told "no", even though the answer could not have been a definite wrong. It was just not the preferred answer.
I was also informed you would be paid more just for having a Masters or PhD, regardless of your contribution. They had graphs and were happy to show me.
I'm talking smaller, trendier companies here though. Buzz words and egos seem to abound. It never made me bitter, but it just seemed so bizarre-o. Not really for me.
> If you're not willing to put in the work
Why should anyone who already knows everything for a degree have to waste 4-6 years of their life?
That has nothing to do with my CS studies, of which I have learned nothing from college and could have CLEPed a BS degree on day one if it was possible and moved on to a masters where I should have been initially placed.
> I'm sure you don't know everything.
I never claimed I knew everything.
Oxford’s distance Master’s will take experience in place of a degree.
And I still learned things my first year (especially in ancillary classes, I only took three computer classes my freshman year), I just didn't get much out of CS classes until sophomore year. One of those classes was a gimme class I really should have tested out of ahead of time in hindsight, though (basically computers 101, I had quizzes on identifying what was the desktop, mouse and monitor).
I did take some 400 level electives completely outside what I am interested in and had not studied which were great though. One professor for those asked in the beginning what each person expected from and I mentioned what I am actually specializing in and he consistently gave examples of applying it to what I do which was excellent.
...on the previous version of the system.
...the month before the training was updated to the most recently fielded version.
...taught by a retired Army guy.
...from Texas.
...who won't stop telling stories about his Army days.
But the hombre from Texas is not one of those people. He will drive for 30 minutes, past dozens of ordinary, mundane restaurants, to reach the nearest Texas-style barbecue restaurant, run by a fellow expatriate Texan, who shoulders the burden of living outside of Texas for the sake of fellow Texans who tragically cannot be in the best state all the time, yet need to regularly consume bits of Texas in order to survive.
Ironically, Texas has so many people in it, all constantly surrounded on all sides by Texas, that you cannot easily identify that guy until he actually leaves the state.
Also, the thing that's wrong with Texas is football. That is easily 120% of my problem with Texas.
I probably agree that for each student at least one of those 4 years is usually wasted; but this is different than whole program being a waste for a person.
I guess "community taught" would be better than "self taught" since I learned from so many people online. But I had been programming for 10 years before school, and while I was in the military (over 6 years) I took advantage of many MOOCs from MIT, Stanford, UNSW, etc. and many books from Knuth to most of the No Starch Press library which I understand is not the case for traditional students. It is frustrating though, especially not being just out of high school.
You were just overprepared for an undergraduate degree by the time you got around to trying for it. For anyone else taking a similar path, specifically the military part, you can often knock out an associates degree with that amount of military experience. Do it, you can skip most of the core curriculum and focus on the CS part and be done in 2-3 years (less if summer courses are available) and be in grad school in your 3rd or 4th your of full-time college education.
Having two kids getting their CS degrees right now at top 50 colleges.
I am not impressed.
A friend of my son goes to UNFS (North Carolina State Film School). For four years he makes films. After the first year he has to choose between photography, directing, writing, etc. Then he spends 3 year fine tuning his craft. Great program!
CS Programs seem to be a little of this and a little of that, none of it coordinated. Quality is teaching is varied, occasional a great teacher or TA, much more frequently poor teachers or TAs.
It forced me to study a wide variety of things I probably wouldn't have spent much time on if on my own (i.e. OS programming, making my own compiler, prolog, finite automata, assembly programming, etc).
Also did A.I., 3d graphics, network programming, and various other things, but I probably would have learned that on my own to a certain point (I developed video games for awhile).
Pretty much. Managed to work on about eight games in a row that didn't make back their investment for three separate companies while I was in the game industry. They failed for various reasons, and a few of them really should have been successful, in my opinion, but oh well. Bad timing (releasing at the same time as heavy hitters), bad marketing, bad luck with reviewers, getting screwed by platform holders, aiming at the wrong audience, bad choice of difficulty, bad choice of which idea to pursue, technical issues that weren't in the testing environment and not discovered until release, overly restrictive and expensive update patching policies with platform holders, all sorts of fun reasons.
On the other hand, I didn't start my adult life a few dozen grand into the red with student loan debt, which, from what I gather through long acquaintance with many who did, has very considerable advantages of its own. So I'd have to call it a tradeoff - but, then, that's my whole point: it's not accurate to say that either option is strictly preferable to the other.