1) I think a lot of start-ups want to hire "smart" people. Because they expect the new person to eventually wear many hats. Objective-C, Java, Android, CSS, server side concurrency, monitoring. An we've all seen Hunter and Schmidt reference that tokenadult usually posts when talk about interviewing comes around and it does seem that a general mental ability test (like an IQ test) combined with a work samples seem to predict future performance of that employee. Well except that one can't just straight up give IQ test to job applicants (there is a court case about that). So we are left with a job sample (which many forget to give, as is the point of the author). But instead many focus on the GMA and create proxies for it -- cute little puzzles about blenders, round manhole covers, and other such silly things.
2) Those interviewing don't know the technical stuff and are afraid you'd out-bullshit them. "How does an Ajax request work" well if the interviewer themselves doesn't quite know the details the might not be able to evaluate it properly. They could have it written down but well, some technical questions have many different levels of depth that a candidate might descent to. So a quick written answer to the question might seem wrong but it is really because the candidate is more advanced. So puzzles seems to be a generic and "easier" to handle.
But honestly, why can't we just start giving IQ tests? Or at least asking for SAT scores? We shouldn't have to run through training puzzles just to prove we're smart enough to build a site.
It's illigal. Or at least very very legally questionable. Theoretically good proxies could be attacked in the same way, but there's a difference between doing something that could conceivably be the basis of a lawsuit and doing something that the Supreme Court has specifically ruled on.
 See Griggs v. Duke Power Co. (1971)
Still, asking for SAT scores is still legal and they correlate decently with intelligence.
I do not see any way "historical wealth" could directly - without intervening variables - influence one's SAT scores. Of course, having affluent parents may mean certain value given to quality education, certain amount of care and access to development tools and so on - but then those should be primary factors considered, not wealth per se.
"Does test preparation help improve student performance on the SAT and ACT?
For students that have taken the test before and would like to boost their scores, coaching
seems to help, but by a rather small amount. After controlling for group differences, the
average coaching boost on the math section of the SAT is 14 to 15 points. The boost is
smaller on the verbal section of the test, just 6 to 8 points. The combined effect of
coaching on the SAT for the NELS sample is about 20 points."
I would bet that's far more likely.
So in fact, it is more likely that people from wealthy backgrounds are able to better utilize their intelligence, and thus retain their wealth and status, whereas people from poor backgrounds are at a disadvantage when it comes to escaping their position in life.
Maybe you should actually read the article I linked to, if it would help you understand what I wrote.
I just think it's a stupid use of "disadvantaged." It implies someone else has an advantage, in to quote you, "escaping their position in life." It's like saying a bad baseball player is at a disadvantage when trying to become a good baseball player. It almost doesn't make any sense.
Same goes with the idea that poor people are disadvantaged about making decisions wrt money. Of course they are, or they quite likely wouldn't be poor any longer. To use baseball again, or any skill really, the experts of course have advantages in deciding the best course of action, and typically have more ways to achieve it.
What I've gleaned here is that you consider poor people to be novices at the skill of acquiring wealth. I agree. For some reason people seem to think it's far different from rookies in other skills, because acquiring wealth is perceived by most to be a vital part of success, happiness, health, etc.
Id love to see Paxman interview sarah palin or Ted Cruz for example.
I didn't have very good grades and my SATs were ok but not great, both primarily because I didn't study or apply myself. I was completely uninterested in school. Get me to write code and you'll see what I'm capable of. I'm certainly not unique in this regard.
Both. They're not perfect, but I'm going to be picky and look for people who can generally reason well (both mathematically and verbally).
> but that doesn't mean they can code.
That's why you pair it with work samples.
The ideal hire would be an impressive GitHub + evidence of intellect. The GitHub shows they have coding chops, while an IQ test usually means they can react quickly and learn new skills.
It's entirely unrealistic as a business strategy. It sure is nice if you luck into it.
I still have a bit to show on Github and mean to put up more when I have a chance but still, most developers find that when you've got a decade or more of experience, you start to want to take on new challenges and experiences (whether family or woodworking) in your free time rather than more programming.
(Skill and interest tend to be highly correlated.)
For 5.5 years (2004-2009), I was a core developer and maintainer over at Xfce. Over that span of time I wrote tens of thousands of lines of code, perhaps more. I did this in addition to my job, which morphed from engineering project management to programming tasks that I didn't find very challenging.
After I left that job, I joined a tiny, early startup. The programming work there I found very challenging, and the insane hours quickly ate up any spare time I might put toward Xfce. Eventually I realized that lacking a life outside of work made me sad, so I left. Fast forward a little bit, and now I'm at another startup, which (while demanding, challenging, and rewarding) gives me time for outside pursuits and a social life. But I don't feel the desire to work on personal coding projects anymore. The job fulfills my desire to write code, and outside of that I'd rather be, well... outside.
It's interesting, because all my Xfce contributions are on git.xfce.org, and not on GitHub. My GitHub account contains 2 personal projects: a semi-finished Android UI library (which was really only relevant and useful in the 2.x days), and a script for building a Gentoo image for a Raspberry Pi (which I've since abandoned as I mainly run Debian nowadays). Looking at my GH account would be fairly unimpressive, and might even be worse than not having a GH account at all.
So I'd easily fail the GitHub test. If a particular company was making that a no-go for getting through an interview pipeline, well... their loss, I guess.
I'm responsible for a fair bit of hiring at my current company, and I rarely ask about personal projects anymore, unless a candidate has one listed on their resume. While I'm not always happy with the coding problems I usually give (they tend to be data-structure/algo problems that I'd probably have trouble solving in an interview setting), they do at least clearly show whether or not the candidate can write code, and I also get a rough idea of how cleanly they code, not to mention insights in how they approach and solve problems. And not being able to completely solve the problem isn't an auto-fail in my book either, as long as they tried to work on it and their approach (and whatever code they did write) was sound.
I do very strongly believe in the aptitude test + work sample formula as the best way to evaluate candidates, but the problem is more that it's not always so easy to apply those tests in a traditional interview setting. Maybe that just means we need to come up with a different way of interviewing, though.
My personal projects also include things like my very playing around with a new language (so it is freaking ugly and so I would never want it used as a job indicator) and old abandoned projects that I've salvaged and updated as a favor to friends, which means the entire architecture is alien and "I Don't Care If It's Ugly Just Make It Work Because Right Now It Does Not Work At All" is exactly what the 'client' wants.
I also reverse-engineer game protocols and find vulnerabilities in them. There is no social good to me releasing that stuff. (No, I really don't feel like being a soldier in your Full Disclosure army.)
I do lots of coding stuff in my spare time. I don't do it to get a job, I do it because it's fun.
>> But I don't feel the desire to work on personal coding projects anymore. The job fulfills my desire to write code, and outside of that I'd rather be, well... outside.
Another thing to remember is that you're 5-10 years older then you were at that point. Life priorities have changed. You might not be a caffeine-fueled 19 year old anymore, instead you're 28 with 2 kids and a mortgage. Or 34 and just have other things that interest you than tweaking Linux or exploring video drivers.
In this case, just mention it. It's not about github literally.
My assumption (which maybe is wrong) is that 5 years of OSS contributions that ended 4 years ago may not be all that impressive. Why did I abandon it? etc.
> So I'd easily fail the GitHub test.
The github test isn't about your what you have on github. It's about what code you can show, out in the public. Github just happens to be the common way to do that now.
If a company requires Github specifically, than it's just a stupid company you wouldn't want to work for anyways, so it saves you the trouble.
The problem is that IP agreements in the state of California say that the employer is not entitled to work done "on the employee's own time, without using the resources of their employer, and unrelated to the lines of business of their employer". Google claims to be in basically every tech-related business there is. Do something as simple as a mobile app or casual game and you can potentially get in trouble for it because it may compete with a division you've never heard of.
There's a procedure to get around this, but it's fairly slow and bureaucratic, and so many Googlers find it more efficient to do their "for fun" coding as 20% projects. Facebook has a similar system with their hackathons. Apple just works its devs so hard they don't have time for independent coding products.
I think that GitHub profiles are a good way to identify good devs who don't work for the leading tech companies, but once you're in one of them you a.) don't have time for personal programming projects anymore and b.) find that the stuff that your coworkers are doing is more interesting than pretty much anything you could work on as a solo dev.
I like spending time with my friends and family, some of which I have to travel far to see, for one.
I spend 40+ hours a week in front of a computer, when I get a chance to go out in the world, I want to GO OUT.
None of these things don't mean I don't love software (I do) or I'm not interested in it (I am). I just have varied interests.
Disregarding that, I used to work for a Big Nameless Faceless Corporation, and the legalize in employment agreement said basically that because I was a software engineer for them, they owned all the software I wrote while employed, even if I wrote it on my own time and with my own computer.
Google, on the other hand, appears to have done away with them, and now prefers to evaluate potential hires without giving too much weight to GPA or test scores:
And how old are you? SAT scores? I'm only in my 30s and I don't remember my what my SAT scores were or remember if they were "good" or "bad" I only know that they changed the SATs after I took them because my youngest sibling took a different one than I did, with some crazy scoring. I wouldn't be able to find my SAT scores even if I wanted to.
What does it really mean to be smart? Lately I cannot stop thinking about it. I have always been considered a 'smart person'. I am a self-taught freelance developer now - it used to be my hobby and somehow (mostly because I needed location-independent work quickly) it became my profession. I get by because everybody thinks I am smart but I feel like an impostor because the more I think about myself the more I realize that intelligence is not some general ability to solve problems - it's more just a set of very different skills that corelate to much lesser extent than people usually think and you can be really good at something that people use to judge your abilities and at the same time really bad at something else that is actually required to get the job done.
I studied sociology and I shortly worked as a data analyst. It seems to me that this kind of work requires... ehm... a different intelligence than programming. You need to be good at connecting the dots, noticing things, seeing patterns. This is my kind of thinking and I have always been good at this - doubting everything, seeing pure assumptions where other people saw 'truths', permanently creating hypotheses and alternative theories, trying to spot logical fallacies in prevailing theories... basically trying to spot things.
I remember our 'statistical analysis 101' professor always telling us 'remember, you are not really testing hypotheses, you are only testing indicators!' - if HR department picks wrong indicators for the skills that they actually need both company and employee are going to be unhappy - and I think this is very common because our understanding of the indicators for different kinds of 'being smart' is still poor.
Closures are not simple. They are a powerful concept, one which introduces a whole new way of thinking about programming compared to what most people start out doing. It's normal for it to take a long time, over many sessions, for the concept to sink in and become a part of your programming vocabulary.
Freshmen year of undergrad, it took me well over a week to wrap my head around this "public" and "private" concept of classes. I had only written C++ that was mostly C with structs and C++ input/output. I had never had to reason in an object-oriented way before, and it was different. It was completely alien to me that I would intentionally "hide" some parts of my code from myself. Now, it's completely natural to me.
What the author did not see was those same developers learn about closures for the first time. When she sat down with them, they had already reasoned with the concept many times. Don't confuse initial difficulty with some inherent deficiency in your mental ability.
I find the hardest park of programming is getting over hurdles as they come up, over and over and over again. It takes a while to get over fear of small failure. Also, if you're constantly reanalyzing and have a perfectionism streak you can be paralyzed quite frequently. Have you run into the same problems?
That's a real thing. Almost all of the wildly talented people in my life feel Impostor Syndrome at some level. Three Panel Soul even did a spot-on comic about it 
edited for sane line breaks
Knowledge, unlike intelligence, is in practice infinite. And now you can understand the inverse Dunning-Kruger effect: intelligent people have the capacity to recognize how little knowledge they have, and can ever have, about any given topic.
If you think I am wrong please explain how I am conflating intelligence and knowledge.