Most active commenters
  • mikeash(6)
  • empath75(5)
  • djsumdog(3)
  • zzzcpan(3)
  • throwawayIndian(3)
  • zeven7(3)
  • seanp2k2(3)

←back to thread

1764 points fatihky | 100 comments | | HN request time: 2.323s | source | bottom
Show context
DannyBee ◴[] No.12701869[source]
FWIW: As a director of engineering for Google, who interviews other directors of engineering for Google, none of these are on or related to the "director of engineering" interview guidelines or sheets.

These are bog standard SWE-SRE questions (particularly, SRE) at some companies, so my guess is he was really being evaluated for a normal SWE-SRE position.

IE maybe he applied to a position labeled director of engineering, but they decided to interview him for a different level/job instead.

But it's super-strange even then (i've literally reviewed thousands of hiring packets, phone screens, etc, and this is ... out there. I'm not as familiar with SRE hiring practices, admittedly, though i've reviewed enough SRE candidates to know what kind of questions they ask).

As for the answers themselves, i always take "transcripts" of interviews (or anything else) with a grain of salt, as there are always two sides to every story.

Particularly, when one side presents something that makes the other side look like a blithering idiot, the likelihood it's 100% accurate is, historically, "not great".

replies(28): >>12702181 #>>12702207 #>>12702219 #>>12702265 #>>12702346 #>>12702460 #>>12702555 #>>12702650 #>>12702692 #>>12702698 #>>12702714 #>>12702888 #>>12702998 #>>12703034 #>>12703135 #>>12703156 #>>12703184 #>>12703554 #>>12703778 #>>12704177 #>>12704657 #>>12705201 #>>12705560 #>>12705982 #>>12706518 #>>12707763 #>>12708151 #>>12714459 #
ozgung ◴[] No.12702650[source]
So you're saying Google's recruiters don't tell what position they are interviewing for and that they found a 20+ years experienced engineering manager holding patents on computer networking under-qualified for an ordinary site maintenance position. Well, that sounds like a dumb recruitment process.
replies(7): >>12702739 #>>12702813 #>>12702973 #>>12703024 #>>12703078 #>>12703204 #>>12704968 #
1. rb2k_ ◴[] No.12702973[source]
> they found a 20+ years experienced engineering manager holding patents on computer networking under-qualified for an ordinary site maintenance position.

To be fair, I've interviewed people at previous companies that had patents and 15 years at IBM on their CV and completely failed even the most basic system / coding questions. (fizzbuzz style).

There are a lot of people that read great on the CV but then it turns out that they mostly kept a chair warm and organized meetings over the last decade without actually retaining any technical knowledge.

Not saying that was the case here, but it happens and it's probably worth checking people on their stated qualifications.

replies(5): >>12703176 #>>12703177 #>>12703582 #>>12703619 #>>12706484 #
2. johndubchak ◴[] No.12703176[source]
Perhaps that suggests you're giving them the wrong interview.
replies(4): >>12703263 #>>12703279 #>>12703318 #>>12703423 #
3. socratees ◴[] No.12703177[source]
Agreed.
4. optimuspaul ◴[] No.12703263[source]
I agree. Why the hell would you ask someone at that level basic questions like fizz buzz? It's absurd. I also tend to shy away from asking coding questions in interviews, they don't tell me much about aptitude for critical thinking and culture fit. Skills can be taught but culture is much harder. ... But I'm not saying to throw in some questions that don't prove that they are actually competent, just be casual about it.
replies(5): >>12703458 #>>12703574 #>>12703706 #>>12703819 #>>12707873 #
5. wffurr ◴[] No.12703279[source]
Not being able to answer even a simple coding question with for-loops is a really bad sign, even if the question is "beneath" the candidate's level.

I'd expect any technical candidate to be able to do at least a fizzbuzz-type question.

replies(1): >>12703673 #
6. _t0du ◴[] No.12703318[source]
Well, general interviewing (unrelated to tech) contains various amounts of "are you lying on your resume" type questions. If someone walks in with a breakdown of 10 years dev, 5 years management, they should be able to at least comfortably answer system/coding type questions. As in, if you do something every day for 10 years, you don't forget all of it in 5.

I had a candidate in a few months ago that was interviewing for Software Development Manager, so he got an initial phone screen and then a face-to-face with myself and another dev on the team he'd be managing. I was impressed with how little he knew about programming.

"Name some data structures." "What does MVC stand for?" "Name some design patterns" etc. All of which were unanswerable. Generally when it becomes clear someone was dishonest about their skillset, the ability to get hired for any position becomes impossible.

replies(2): >>12703403 #>>12703503 #
7. zeppelin101 ◴[] No.12703403{3}[source]
How can you not know what MVC stands for? It's pretty much a buzzword!
replies(4): >>12703491 #>>12703535 #>>12705388 #>>12708117 #
8. lmm ◴[] No.12703423[source]
If the interview distinguishes between people you want to hire and people you don't it's a pretty good interview, surely?
9. sziwan ◴[] No.12703458{3}[source]
> Why the hell would you ask someone at that level basic questions like fizz buzz?

Because there are people applying for software engineering jobs that still can't answer those questions.

replies(1): >>12703580 #
10. weaksauce ◴[] No.12703491{4}[source]
I mean, yeah, 99% of candidates should know what that means because it is an extremely common initialism. Although, I could see some engineer who worked on networking drivers for 10 years might not be up to date on the design patterns of frontend engineering.
replies(1): >>12704411 #
11. djsumdog ◴[] No.12703503{3}[source]
My kick-out questions:

"Could you write out what an HTTP request and response looks like on the board?"

I'm really surprised at how many people can't do this. If you've spent five years developing web, surely you've had to look at raw requests, either debugging using netcat or with wireshark or just looking at the information in the Chrome/Firefox debugger?

"What's the difference between a GET and a POST request?"

"What is the difference between a statically typed and a dynamically typed language?"

I had one candidate try to tell me Java was dynamically typed and Scala was statically typed. It was for a Scala position. They also said "statistically typed" instead of statically, even after I corrected them.

-_-

replies(6): >>12703590 #>>12703703 #>>12703918 #>>12703969 #>>12704151 #>>12704340 #
12. ctdonath ◴[] No.12703535{4}[source]
Not all programming/engineering circles use the same buzzwords. For five years my mobile development groups used the concept without the acronym.
replies(2): >>12703946 #>>12704802 #
13. djsumdog ◴[] No.12703574{3}[source]
I think coding questions are really important. You see their logic flow. Now stupid coding questions (in a list, find all the number pairs that add up to another number in the list) are terrible. They're complex and even good programmers need time to think about them. Fibonacci is one that people expect, so they look up all the variations and you get people who are good test takers (would ace a GRE/MCAT) but not good designers.

You want a simple question that isn't common, but that shows how they break down a problem under stress. Example: you have an input with paragraphs at 80 characters. Write a function to return the same paragraphs wrapped to 40 characters. You cannot break a word and must maintain paragraphs.

Great design questions: a word problem (You have an autoshop with, staff and customers. Customers can own multiple cars. A staff member gets assigned to a car with a work order...) .. draw an ER diagram. This is actually a pretty low stress question. It should be straight forward. If someone draws a terrible ER diagram with lists in tables and no normalization, or unnecessary relationships (or you have to keep asking them to label 1-to-n/n-to-1 relationships and they struggle), you know they're not going to be good at designing database schemas.

Another great general knowledge question: "A user types in a web address into a web browser and hits enter. Describe what happens. Go into as much detail as you can." This gives people a change to elaborate as much as they can. People can talk about DNS, HTTP, load balances, HTTP request/response, cookies, load balancers, web apps vs static content...

Questions need to be geared to the job. You don't ask someone to draw an ER diagram if they're being hired to rack servers and setup VMWare. Likewise you don't ask a web developer to write a function to do matrix multiplication.

replies(2): >>12703806 #>>12705369 #
14. rizzom5000 ◴[] No.12703580{4}[source]
If you have a CS degree and cannot answer this type of question in your language of choice, you simply aren't ready for even a junior position in my opinion.

This type of coding exercise can potentially answer more questions about the candidate in two minutes than 30 minutes of softball questions about the candidate's past experiences.

I think that people who disagree simply haven't done much interviewing or haven't worked on a team with someone who couldn't do much more than copy/paste code from SO.

replies(1): >>12711466 #
15. clifanatic ◴[] No.12703582[source]
> completely failed even the most basic system / coding questions.

But could they at least tell you why quick sort was the best sorting algorithm?

replies(2): >>12704733 #>>12706825 #
16. GFischer ◴[] No.12703590{4}[source]
I believe 90% of my coworkers and former coworkers would be unable to answer the HTTP response question.

And 95% haven't used netcat or wireshark. I wouldn't have either, if it wasn't for some particular work related to messaging.

They're able to develop reasonable line of business websites in spite of that.

I would be extremely worried if they were unable to answer about the difference between GET or POST, or the difference between statically and dynamically typed languages, so I agree with those.

replies(2): >>12705955 #>>12706167 #
17. noobermin ◴[] No.12703619[source]
It's fair to discuss in the abstract, but seriously, in the OP the interview that failed him didn't fail him for an ordinary site maintenance position because he wasn't capable, it was because the recruiter was incompetent.

Of course, a sample of one (anecdota) which is most likely the min of the distribution is always the worst way to judge a distribution, but this is still upsetting.

18. zzzcpan ◴[] No.12703673{3}[source]
Now take into account stress, lack of preparation, environment the person is not used to, unusual syntax patterns for them, biases against them, their way of talking, their appearance, etc. and you get yourself people good at your kinds of interviews in your biased view. You can only hope they are at least average at their job.
replies(1): >>12704420 #
19. krzyk ◴[] No.12703703{4}[source]
Why it is important to know the difference between statically and dynamically typed languages? If one writes in only one of those (or one set) it is not important to him/her and doesn't specifically make him/her a worse programmer in that particular language.
replies(3): >>12703875 #>>12703901 #>>12705962 #
20. exDM69 ◴[] No.12703706{3}[source]
My company has been giving the fizzbuzz for students applying for internship, with any language they wish and extra for style points.

The results speak for themself. All the good applicants do it in no time, without hesitation and give a perfect answer and usually some style points on top. The ones who have second grade coding skills have always something wrong with it.

It's a good 5 minute test whether someone can code or not. It shouldn't be the only test, of course.

replies(1): >>12704582 #
21. HereBeBeasties ◴[] No.12703806{4}[source]
I often ask the web browser one and find it quite illuminating. Best answer so far started with something like "Well, there's a microswitch in the keyboard if it's a decent one, and a circuit that debounces the input - err, is it a USB keyboard or a PS/2 one? Hmmm... How long do I have to answer this question?" THAT is the guy you want to hire...
replies(3): >>12704409 #>>12705967 #>>12708150 #
22. HereBeBeasties ◴[] No.12703819{3}[source]
The question is, "why wouldn't you?" If the person is competent they will dismiss it in seconds and you can move onto something more interesting.
replies(1): >>12782564 #
23. steego ◴[] No.12703875{5}[source]
Knowing a cursory difference between a statically and dynamically typed language in this day in age is not an unreasonable requirement for many developer positions, especially web development where you're often using a mix of languages.

As always, this sort of question is a test of competence by proxy and there are usually outliers, but statistically speaking, I think you'll find a very high correlation between inept programmers and people who don't know the difference.

24. djsumdog ◴[] No.12703901{5}[source]
General domain knowledge. We do Scala and a little bit of Python here and there. You should know the difference to show you're well rounded. Senior devs sound have some experience in both types.

I have a follow up question, "What are the advantages of a dynamically typed language over a statically typed one?"

This one kinda exposes the "Java-zellot" side of programming. If you love Scala and you're applying for Scala position, you don't often think like this. Being able to think critically about the things that are harder in Scala, that would be easier in a language without strict type checking, is a another good way to gauge if people can think critically.

25. mst ◴[] No.12703918{4}[source]
The number of web devs I've encountered who regard my ability to talk HTTP over telnet as black magic makes me sad.
replies(1): >>12704548 #
26. delphinius81 ◴[] No.12703946{5}[source]
Agreed. I interviewed a few QA candidates at a previous company that used a term completely differently than we did. When I rephrased the question from defining the term to "what kind of test would you run in this situation" I got the kind of answers I would expect. It's far more important that a candidate understands the concepts needed to solve a problem, than that they have memorized a term.

Hell, someone could be able to define MVC and explain how you would use it, but have no idea how to actually implement something using it for a given programming language.

replies(1): >>12704056 #
27. rimantas ◴[] No.12703969{4}[source]
I'd be able to write HTTP request by hand, I've done that quite often, however I would not expect that to be a common skill. Looking at something, even often does not in any capacity mean that you would be able to reproduce that from memory.
replies(1): >>12708108 #
28. viraptor ◴[] No.12704056{6}[source]
Even then it's worth remembering not every MVC is the same. Fat/slim models. Intelligent/simple views. There's lots of approaches to even a well known paradigm.
29. throwawayIndian ◴[] No.12704151{4}[source]
> "Could you write out what an HTTP request and response looks like on the board?"

Why should anyone remember what an http request or response should look like? Statically typed vs. dynamically typed language?

Fuck.

Are these entry-level positions or for someone with 10 years work-ex? A simple search on Google can tell anyone the answer of these questions, why do you expect people to carry an imprint of it in their memory? If the problem they'll work on mandates knowing these things it'd be pretty easy to solve with just one search. It is exactly questions like these that are worth kicking the host organization back in the butt.

Either your interviewing process is hilariously stupid or you're just spiking it up to boost the ego here.

replies(3): >>12704371 #>>12704392 #>>12704848 #
30. gehel ◴[] No.12704340{4}[source]
Scala is statically typed.
31. whoops1122 ◴[] No.12704371{5}[source]
I would not want to work for or with him, if he asked me that in an interview, I'd walk out.... if he think thats what good computer scientist should know...
32. mikeash ◴[] No.12704392{5}[source]
Static versus dynamic typing is so fundamental that I don't see how a programmer could be remotely competent without having been exposed to those concepts enough to have internalized them. It would be like an accountant not knowing what the number 4 is. Yes, you can look it up, but if you need to then how did you ever get this far?
replies(3): >>12704462 #>>12705807 #>>12708333 #
33. mikeash ◴[] No.12704409{5}[source]
Last time I got that question, I started with nerve impulses.
replies(1): >>12706437 #
34. vskarine ◴[] No.12704411{5}[source]
That's exactly what happened to me. I was stuck in embedded systems world right out of college and then one day took interview with Google, they were asking me questions clearly looking to hear "MVC" in my answer but I just didn't know it back then...
35. whoops1122 ◴[] No.12704420{4}[source]
The most beautiful and elegant part of coding is the logic, Not how to use a for loop. Anything question that can be answered with google should be forbid from a interview test. show him a method, ask him how he can improve the performance. ask him a opinion based question on OO design.

if you hiring a house builder u would not ask him what a brick looks like right?

replies(4): >>12704882 #>>12705300 #>>12705993 #>>12707350 #
36. zzzcpan ◴[] No.12704462{6}[source]
It is also a ridiculously dogmatic question. Many people believe into a fallacy that static typing makes safer programs, for example, and expect that somewhere in the answer.
replies(2): >>12704804 #>>12704880 #
37. lazaroclapp ◴[] No.12704548{5}[source]
In all fairness, if you can talk normal HTTP 1.1 over telnet with some service, someone configured TLS wrong ;) And if you can talk HTTPS over telnet unassisted... well, I am truly impressed.
replies(2): >>12705236 #>>12797680 #
38. throw_away_777 ◴[] No.12704582{4}[source]
How do you know the people failing your interview process have "second grade coding skills"? The fundamental challenge with evaluating interviews is that companies don't hire people who flunk interviews - so there is no easy way to reliably measure the false negative rate. Does fizzbuzz ability correlate with coding ability? Maybe, but you'd have to hire people who fail fizzbuzz to definitely answer the question. I know that I use google extensively at work - interviews don't allow you to use search.
replies(4): >>12705382 #>>12705985 #>>12707163 #>>12708448 #
39. PetahNZ ◴[] No.12704733[source]
Because its quick, right?
replies(1): >>12706157 #
40. automaticearth ◴[] No.12704802{5}[source]
Knowing proper terminology is necessary in order to stay up to date with developments in your professional subject area. If concept X is an established concept in your professional area of expertise, and you don't even know that its name is concept X, then you likely have not read much about concept X, and consequently, are likely not up to date with current developments related to concept X. This isn't just semantics, it's about professional literacy.
41. brianwawok ◴[] No.12704804{7}[source]
Could you explain how static typing makes less safe programs?
replies(3): >>12705713 #>>12705898 #>>12707581 #
42. teraflop ◴[] No.12704848{5}[source]
That's a preposterous attitude. Just imagine if we took a similar approach to hiring for other kinds of jobs:

"OK, so you'd like to work here as a mechanic. What's the difference between automatic and manual transmission?"

"It's not fair to expect me to know that off the top of my head. If I need to know, I'll just do a Google search."

replies(2): >>12705784 #>>12706679 #
43. mikeash ◴[] No.12704880{7}[source]
How is it dogmatic? Sure, there's a lot of dogma around which one is better, but simply explaining what each one is and what's objectively different about them isn't remotely dogmatic.
44. zzzcpan ◴[] No.12704882{5}[source]
I think there is no point in assessing anything that doesn't take years to learn. And it's fairly easy for any team to come up with some fundamentals, that a candidate should know. There are more important qualities, than knowledge, though, as google-funded research suggests, like empathy.
45. micaksica ◴[] No.12705236{6}[source]
There's always openssl s_client
replies(1): >>12706883 #
46. CobrastanJorji ◴[] No.12705300{5}[source]
I see where you're going, and I generally agree with you, but I think that every programmer should at least be able to FizzBuzz, just as every architect or master home builder should be able to answer the question "which one of these is a brick?"
47. zeven7 ◴[] No.12705369{4}[source]
> In a list, find all the number pairs that add up to another number in the list.

You're saying this is a bad question because it's too complicated? Am I missing something? It really doesn't seem more complicated than the paragraph question to me, but maybe I'm having a brain lapse.

replies(1): >>12707114 #
48. zeven7 ◴[] No.12705382{5}[source]
I'm not sure about OP, but there is a tech company that has said it hires people who fail their interviews occasionally to see if their interview process is working. That company is the one that is the subject of this thread.
replies(1): >>12705448 #
49. darklajid ◴[] No.12705388{4}[source]
Right. Everyone and their mum know what M and V stands for, right? Now .. C? C is tricky. Please don't ask any further questions about C, will you?
replies(1): >>12705586 #
50. throw_away_777 ◴[] No.12705448{6}[source]
Can you cite your source? I haven't seen this anywhere.
replies(1): >>12705465 #
51. zeven7 ◴[] No.12705465{7}[source]
I haven't read it myself, but I heard that's what Laszlo Bock said in Work Rules.
52. fourthark ◴[] No.12705586{5}[source]
I'm not sure if this is a joke. Model and View are really clear. Controller I usually find munged in with the View and it's not always profitable or clarifying to separate it.
53. softawre ◴[] No.12705713{8}[source]
Static typing is basically a bunch of free type-based unit tests. You can write safer programs in dynamic languages, but you need to write and maintain a lot more tests.
replies(1): >>12705873 #
54. dsfyu404ed ◴[] No.12705784{6}[source]
That's a crap comparison.

You're gonna have a hard time drawing a comparison between a line of work where you build things and one where you fix things.

replies(1): >>12706838 #
55. ubernostrum ◴[] No.12705807{6}[source]
OK, ask me that question about defining the difference and I'll argue with the question, and back up my argument with examples of how type systems are far more of a spectrum of different cases than a stark static/dynamic binary.

And then your non-engineer phone screener who's expecting the answer to match the scripted sheet will conclude that I don't know this "fundamental" thing and thus am unqualified.

replies(3): >>12707203 #>>12707572 #>>12708053 #
56. brianwawok ◴[] No.12705873{9}[source]
You can't compare static + N tests, vs not static with M > N tests.

Compare static with N tests, vs not static with N tests. In what case would the not static be safer?

57. NhanH ◴[] No.12705898{8}[source]
If the type system is not expressive enough and you have to get around it?

The claim that "dynamically type language" allows code to more closely follows the business logic has merits. And you could follow from that to claim that type system could be causing more bugs (ie less safe).

58. empath75 ◴[] No.12705955{5}[source]
I basically lived in Wire shark for a couple of years working for a voip company and still use stuff like curl all the time and I don't think I could walk through an http request of the top of my head.
replies(2): >>12706401 #>>12706821 #
59. empath75 ◴[] No.12705962{5}[source]
If they didn't know it, I'd want to dig down into whether the understand the specifics of their particular language at least.

I actually just sat down in a meeting with a dozen programmers, some of them with decades of experience, and half of them didn't know what functional programming was.

replies(1): >>12706755 #
60. empath75 ◴[] No.12705967{5}[source]
I feel like there is a happy medium there.
61. empath75 ◴[] No.12705985{5}[source]
We actually do let people use Google during our code interviews. They'll use it at work, so why not.

We do watch them work though so if they just copy and paste from stack overflow and they don't understand the problem, it's pretty obvious.

replies(1): >>12708452 #
62. empath75 ◴[] No.12705993{5}[source]
Yeah, but if your have to get through 100 house builder interviews and half of them don't know what a brick is, it saves a lot of time, no?
63. thechao ◴[] No.12706157{3}[source]
It also sorts.
replies(1): >>12707818 #
64. jwatte ◴[] No.12706167{5}[source]
There is some truth to the saying that some people don't have ten years experience, they have two years of experience five times in a row.

Learning to use wireshark or tcpdump is a power tool that does show whether you got more experience in understanding the lower levels, or stayed at requirements-and-tests. (Not necessarily bad, but a good "fork" to jump off from)

65. figgis ◴[] No.12706401{6}[source]
But could you describe the general structure?

Yeah expecting many people to be able write out a complete http request from memory without a reference to look at. But the general structure of a http request is something so basic to web development that asking what the structure of a http request looks like isn't an unreasonable expectation.

Request line (method, uri), header(s), empty, body...

66. Terr_ ◴[] No.12706437{6}[source]
Still not enough: If you wish to explain a web-request, you must first invent the universe.
replies(1): >>12708048 #
67. weixiyen ◴[] No.12706484[source]
Agree with everything you said... but I find it not applicable to this particular candidate given his answers.

It's possible that he got frustrated, became condescending towards the recruiter, and the recruiter decided to screen him out.

There are plenty of companies who turn down candidates that are false negatives for various reasons. Author should probably not take that personally and just apply again.

68. jedmeyers ◴[] No.12706679{6}[source]
"OK, so you'd like to work here as a mechanic. What's the difference between automatic and manual transmission?"

Nope, more like "can you write out on the board what types of connectors are used in the car cooling system and in what order".

69. krzyk ◴[] No.12706755{6}[source]
And the half that didn't know where much worse programmers than those that knew?

Your example shows that not every programmer has to know that.

70. seanp2k2 ◴[] No.12706821{6}[source]
GET / HTTP/1.1\r\n and some kind of sensible response is not too much to expect someone to know. HTTP is super easy and I see the HTTP transaction test as "did you ever get curious as to how exactly a core part of the current Internet actually works". I'm sure that there are app developers out there who can spin crud stuff all day and have no idea about this, just as there are curious people who couldn't stand up todomvc to save their life, but in general, all of the most talented people I've worked with knew their stuff front to back, and had at least a few areas of expertise.

CGI is also cool to learn about the workings of, since it almost seems too simple.

replies(3): >>12707866 #>>12708028 #>>12709227 #
71. tankenmate ◴[] No.12706825[source]
Apart from the fact that it isn't always the best sorting algorithm and it's pathological worst case is in fact as bad as a bubble sort's worst case (O(n^2) with a higher base operational cost, as at least bubble sort's worst case is somewhat cache friendly). This happens in three cases; 1) all the elements are sorted in descending order, 2) all the elements are sorted in ascending order, or 3) a special case of 1) and 2) combined, all the elements are equal.
72. seanp2k2 ◴[] No.12706838{7}[source]
Ok, how about "What is the firing order on a Chevy LS1?" ?
73. seanp2k2 ◴[] No.12706883{7}[source]
Yep, and when devs watch me key in the s_client pipe to OpenSSL to dump the cert info it's like I've become Neo and entered bullet time. I guess they don't need to know this stuff, but trying to do things like editing a hosts file in OSX, flushing dns, opening an incognito tab, looking at the SSL cert through the GUI, manually comparing it to one in an editor....vs a pretty short one-liner with curl or OpenSSL and a diff....I guess I'm either biased or lazy. I also almost never get asked WTF I just did, just a "wow, thanks" at most.

A previous employer had a sysadmin wiki. We call it Devops now, but I really liked working with the plain-text files of Dokuwiki there. Confluence is good for some things, but as a notebook of shell snippets and when to use them, it's not great.

replies(1): >>12709795 #
74. vshan ◴[] No.12707114{5}[source]
The entirety of HN seems to have something against Competitive coding.
75. exDM69 ◴[] No.12707163{5}[source]
These were done in recruitment events at universities and the applicants were free to access Google if they wished. Some guys even went to the computer lab to do the assignments on a computer and then return a printout of their code. And we were completely fine with that.

But really, if an applicant needs to google to solve FizzBuzz, they don't have a firm grasp of the fundamentals. You're required to write one loop, a few if/then/elses and understand how the modulo operator works. Our jobs are much more demanding than that.

76. ojilles ◴[] No.12707203{7}[source]
Which would be true, or rather: over-qualified.
77. bmj ◴[] No.12707350{5}[source]
if you hiring a house builder u would not ask him what a brick looks like right?

The problem with this is that a home builder/contractor will have a long list of references, and possibly examples of her work available for examination. Many engineers search for jobs while still employed, so they generally don't include as references co-workers and current managers. Further, if your employer doesn't allow you to open source your work, then you need to do open side projects to have any sort of real resume prospective employers can examine (and this is problematic since your day job may already take more than 40 hours of your time).

So, no, I don't need to ask a contractor if he knows what a brick looks like, but I do need to look at his references, look him on Angie's List, post to local message boards about his work. And, of course, I'm not an expert on home building, so it would be unreasonable to ask him questions about carpentry or framing.

78. dspeyer ◴[] No.12707572{7}[source]
This isn't a question a non-engineer phone screener can ask. Coming up with first pass filters that don't require an engineer to interpret is harder.
79. dspeyer ◴[] No.12707581{8}[source]
I have yet to see a large static typed program that didn't -- somewhere -- run into the limits of static typing and contain a set of workarounds, using void* or linguistic equivalent. That's code a dynamic language doesn't need.

The only code you can be sure isn't buggy is code that doesn't exist.

replies(1): >>12721333 #
80. danesparza ◴[] No.12707818{4}[source]
Also: It has a cool name. It's much better than 'slowsort'
81. aninhumer ◴[] No.12707866{7}[source]
> I see the HTTP transaction test as "did you ever get curious as to how exactly a core part of the current Internet actually works".

Sure I did.

Then I forgot most of the details because they didn't matter, and I knew I could look them up quickly if I ever needed to write a HTTP client/server for some reason.

82. oxyclean ◴[] No.12707873{3}[source]
I don't ask multiple questions like FizzBuzz, but I do ask for FizzBuzz. (I will explain the modulo operator if necessary because it doesn't come up that often in web development and people many forget about it until prompted.) Everything else about FizzBuzz (loop over a range, use a conditional, define a function, compare, etc.) is so basic you would think you wouldn't need to test it - but then you run into a person with 10 years experience who can't do it.

It's a (sadly) useful screen. Even more sad when you realize how popular and widespread that particular question is.

83. dekhn ◴[] No.12708028{7}[source]
if you answer "GET / HTTP/1.1\r\n" I'm going to ask you if you left anything out.

Because you did: after that you have to provide a Host: <hostname>.

84. mikeash ◴[] No.12708048{7}[source]
"Describe an HTTP request? Tricky.... What's the mass of the electron in this hypothetical?"
85. mikeash ◴[] No.12708053{7}[source]
This is proposed as a question that an engineer would ask, not some base-level screener.
86. TheOtherHobbes ◴[] No.12708108{5}[source]
Exactly. These are memory tests, not ability tests. Beyond a very basic level, memory tests are too random to be useful.

I once aced a geography exam because I happened to read up on the economics of Nigeria just before I took it. By sheer luck, there was a question about Nigeria in the paper.

If I'd read about Zimbabwe instead I'd have been screwed.

Neither possibility provided much insight into my competence as a geographer.

Even if a job spec needs specific knowledge of key facts, you can't generalise from pass/fail memory questions to broad spectrum competence, or lack of it.

If a candidate has no idea what an HTML request is, that's one thing. If they know damn well what a request is but can't list all the elements in a stressful interview while you're staring at them, - because in fact they spent the last year working on database code, and the API stuff was the year before that - that's something else entirely.

87. TheOtherHobbes ◴[] No.12708117{4}[source]
I'm sure a lot of people know what MVC stands for. I don't think there's anyone on the planet who can be sure they know what it really means.
88. david-given ◴[] No.12708150{5}[source]
I did actually start my answer to that one with 'Look, I'm just going to skip over the microcontroller in the keyboard and the USB protocol --- is that OK?' and was met with a calm, 'That's fine.'
89. throwawayIndian ◴[] No.12708333{6}[source]
> It would be like an accountant not knowing what the number 4 is.

It's a hypothetical no-go! Every person, even the fourth grader knows the number 4. So why ask a question that measures their ability to remember 4, say 4 or show that they know 4.

> I don't see how a programmer could be remotely competent without having been exposed…

Share this link with them:

http://stackoverflow.com/questions/1517582/what-is-the-diffe...

Invest in people and people will invest back in your business. Interview process that I follow at my workplace has just one goal to assess: whether or not it'd be great to work with this person and spend over ~50 hours per week with them.

replies(2): >>12708354 #>>12709725 #
90. mikeash ◴[] No.12708354{7}[source]
Are you hiring fun people who know nothing about computers? Or are there actually more criteria than you let on here?
replies(1): >>12714684 #
91. ◴[] No.12708448{5}[source]
92. Kurtz79 ◴[] No.12708452{6}[source]
It depends on the questions.

If you require using real, compiler correct language in a coding exercise, and the problem is not trivial, than allowing search is more than fair.

But the point of Fizzbuzz is being such trivial problem that it really should not require nothing more than an understanding of basic programming logic and constructs.

In my (limited) experience, there were instances where the candidate could not even decide on a programming language to use, I told them to use pseudo-code and they still flunked horribly.

Aside from that, Fizbuzz is rarely a dealbreaking task in itself, it tends to correlate pretty well with the overall performance, I would be surprised seeing someone failing fizzbuzz and excelling in the rest of the interview (once again, in my limited experience).

93. ninkendo ◴[] No.12709227{7}[source]
You would've gotten it wrong though!

You need two newlines to finis the request, plus the HTTP 1.1 standard requires clients to send a Host: header for all requests.

Not saying every interviewer would care about that in an early screening process.

94. lonewolf_ninja ◴[] No.12709725{7}[source]
Well, following Netflix's mantra - it is a team and not family that you are hiring for. Anyone can Google and find answers, doesn't mean you would hire everyone, would it?

There are a number of basic items that a competent programmer needs to know off the top of his head. If they had to google for every single item, then their productivity goes down the drain and so does the entire team's productivity. You should fix your hiring.

95. micaksica ◴[] No.12709795{8}[source]
> I also almost never get asked WTF I just did, just a "wow, thanks" at most.

Asking "wtf did you just do" is responsible for probably 1/5 to 1/4 of the professional knowledge I have today. It's sad that many people ignore that people will often teach you their little tricks if you ask.

96. jdbernard ◴[] No.12711466{5}[source]
> I think that people who disagree simply haven't done much interviewing

Absolutely. Last time I went through trying to hire people was about a year ago. Easily 90% of the applicants we saw were completely unqualified. You have to have a way to weed them out.

97. throwawayIndian ◴[] No.12714684{8}[source]
> hiring fun people…

Absolutely! This is super super important. Fun to work with, not annoying to waste time with.

> know nothing about computers

It's sad that you think this way of people who couldn't answer your questions at the expected level.

> Or are there actually more criteria than you let on here?

Yes! One way to know if they're any good or not suitable is by giving them a problem statement like so:

'Design X, feel free to choose a language that's suitable for this problem', and then may be proceed to hint with: 'You might want to look at advantages of Static versus dynamic typing'… and then let them ask whatever questions they want to ask or read up or search or start implementing whatever.

Observe what they do -- and how fast can they get to the decision of what language and why. And how to make X (break down of steps) or if they can dive and start making X there itself. Note, if they had theoretical knowledge of what you seek during an interview it will work to their advantage naturally. Or sometimes not.

Of course, this process may not work for you as it does for us -- therefore seeking direct answers about static vs dynamic language may not be such a bad question after all (I get it), but expecting people to accurately remember what an http request or its response looks like may not be fruitful at all. It can throw good people off guard and ruin the rest of the interview for them.

98. friendzis ◴[] No.12721333{9}[source]
void* is usually not a symptom of limits of static typing, but limits of the [type system] design or human brain. You can think of it as "ok, I give up. Anything can be passed here, proceed at your own risk, compiler will not save you here, errors will show up at runtime". Even the memory safe Rust does not do without such unsafe blocks. In dynamically typed languages that is everywhere, though. I have said this before: safety benefits of static typing show up when you are working with at least data structures, not simple variables. Imagine you have an external endpoint or library call that is specified to return a single object and does exactly that. At some time after release you are the maintenance programmer responsible for implementing spec changes:

  * The object returned no longer has member/property x, it is obtained by other means;
  * The endpoint returns list of such objects.
How sure are you that tests in dynamic language cover these cases? My experience shows that tests very rarely get designed to anticipate data changes, because data is driving test design. Which is more likely for a test: a) to test whether object returned contains keys x, y and z; b) to check if the object returned is_list() (see appendix)? Static typing covers such cases. Static typing is not something that magically saves oneself from shooting them in the foot, but is nevertheless a safety tool that CAN be used. It is of course a burden if one does not intend to use it and that is the core of the debate.

Fun thing: in the second case if your code manages to convert input list to a map and assign one returned object to a key that coincides with the removed property and map access looks syntactically the same as property access (a very specific set of assumptions, though), the bug can butterfly quite deep into the code before manifesting :)

99. optimuspaul ◴[] No.12782564{4}[source]
But this is Director level. You are wasting your time and their time. Far more important things to be factoring in for a director level.
100. recursive ◴[] No.12797680{6}[source]
What? HTTP 1.1 doesn't require TLS.