30 ms·
Dear Startups: stop asking me math puzzles to figure out if I can code
- rdtsc 13y agoTwo possible reasons: 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.
- morgante 13y agoI think (1) is probably the primary reason, along with the fun factor I mentioned above. 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.
- deluxaran 13y agoWhat kind of IQ tests? Math thinking? Language? Other? These tests are kinda old and don't prove anything besides the fact that the person has a certain level of intelligence but that doesn't mean they can code.
- kenster07 13y agoExactly. I would feel much more comfortable testing the job's requisite domain-specific knowledge directly.
- morgante 13y ago> What kind of IQ tests? Math thinking? Language? Other? 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.
- robryan 13y agoWhat if all your most relevant work is owned by previous employers? Restricting hires to people with decent personal projects and/ or extensive open source contributions isn't ideal either.
- morgante 13y agoI'm fine with only hiring people who have done some work outside their workplace. If they're really great at programming, they have the drive to try new things outside work. Indeed, a couple good personal projects is probably the best predictor of skill you could find. (Skill and interest tend to be highly correlated.)
- mariozivic 13y agoI've heard one too many times that I have to react now and voice my confusion. When you have students and you want then to have had some work done outside of coursework, I'm perfectly ok with that as I understand the merits but I wonder is it true for people 10+ years into their career. I see great people having great jobs who, if they have free time, code something that can help their current job but that code also ends up being own by the employer and is very rarely released as open source.
- bradleyjg 13y ago> But honestly, why can't we just start giving IQ tests? It's illigal. Or at least very very legally questionable.[1] 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. [1] See Griggs v. Duke Power Co. (1971) http://finduslaw.com/griggs-v-duke-power-co-1971-401-us-424-91-sct-849 http://finduslaw.com/griggs-v-duke-power-co-1971-401-us-424-...
- morgante 13y agoI meant that mostly rhetorically in that I think that was a poor decision, or at least applied poorly. (Correct me if I'm wrong, but if you can show a high IQ is necessary for the job, isn't an IQ test acceptable?) Still, asking for SAT scores is still legal and they correlate decently with intelligence.
- jacobgreenleaf 13y agoActually the primary correlate of SAT scores is not intelligence but wealth.
- thomasz 13y agoI'd guess that there exists a causal relationship between "intelligence" as measured by standardized tests and the sum of dollars poured into someones education.
- epo 13y agoThe causal relationship is with "success", i.e. exam results and college acceptance rather than "intelligence" per se.
- smsm42 13y agoI suspect the actual correlation is not with wealth (i.e. giving money so somebody with low SAT scores would not actually improve their scores - unless he would have enough money to bribe whoever is overseeing the test of course ;) but with some things that correlate with wealth.
- redschell 13y agoManagement consulting firms and Wall Street banks have employed somewhat strict GPA and SAT/GMAT cutoffs for quite some time, but even they can't resist the allure of brainteasers during the interview process. 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: http://qz.com/96206/google-admits-those-infamous-brainteasers-were-completely-useless-for-hiring/ http://qz.com/96206/google-admits-those-infamous-brainteaser...
- nerfhammer 13y agoGPA and SAT correlate well to IQ. With those two pieces of information you could estimate IQ pretty accurately.
- driverdan 13y agoStandardized tests like SATs and school grades are a terrible way of ranking a potential employee and have significant biases such as income and age. 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.
- aestra 13y agoBecause SAT scores are a very very terrible indicator of if you have 1) the ability and 2) the work ethic to build a site. 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.
- dinkumthinkum 13y agoIn what way will an IQ or SAT test give you an indication if the applicant even knows what a compiler is? Your comment is cute but I'm not sure how useful it is ... :(
- deleted 13y ago[deleted]
- rdtsc 13y agoOh I agree, I am just saying they miss both the part about how GMA is best when paired with a work sample and that those puzzles are not necessarily good equivalents to an IQ test.
- thraw 13y ago1) I think a lot of start-ups want to hire "smart" people. 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. Programing is very different (at least it seems to me - so different tat it's even difficult do describe it). I guess it's about creating stuff, not just observing stuff. You need to build very complex and abstract mental models, keep them in your head and be able to operate with them - and this is the part of intelligence that I seem to be lacking. It just does not feel natural. I try to solve some problem and I am thinking... if this condition and that condition but at the same time not that condition... and bang!, suddenly I am lost and I don't even remember what I am doing. I cannot keep it in my head. I totally get what OP was saying about passing anonymous functions in JavaScript - I had the same experience. The first time I encountered something so simple as JavaScript closures it took me two hours to get it. And the day after that I had to repeat the whole mental process to get there again because I somehow lost it over night. This is simply not how my brain works and I think I am really bad at this. Yet people pay me for this... which is just depressing (and you understand why I write this under throwaway). 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.
- morgante 13y agoIt is rather unfortunate how little correlation most tech interviews have with their respective jobs. It's largely a lose-lose situation for everyone. Developers who could easily build great systems but aren't experts in graph theory get passed over while brilliant mathematicians who can't necessarily code get hired. Result? Companies simultaneously having to fire employees while facing a supposed talent crunch. Given that this hurts everyone, how did we even get into this situation? Probably because the only person who doesn't lose from this is the interviewer: they get to have fun. Honestly, when you spend all day buried in code, it's fun to play with puzzles for a change. Perhaps it's time we started optimizing interviews for hiring success rather than interviewer happiness.
- kenster07 13y agoOkay, but any specific suggestions on how to do that?
- morgante 13y agoStart with a simple interview which simply checks that the person (a) has a brain; (b) is somebody you're comfortable working with. Then do a short-term contracting gig (maybe just 1 day). If it works well, hire them. Edit: clarify length which even the best people could do.
- nagrom 13y agoGenerally speaking, high quality people won't take a short-term contracting gig. They are probably working elsewhere and don't need that level of uncertainty; they're looking for something better, not just anything.
- morgante 13y agoI'd hope that by that point I'd have sold them on my company enough that they really thought it was better. Also, I don't think it needs to be a long gig. Maybe even just a day, which isn't much longer than the gauntlet of technical interviews some companies will put you through. Even that short period should be enough to see if someone works well.
- deluxaran 13y agoMy opinion on this is that most of the interview processes is pretty old(over 20-30 years) and back then a good programmer was also a pretty good mathematician, and now most of the people that do interviews just use the same old patterns because, maybe, some of them don't know any better or because that is what they found in some books they have read. I tend to hate the interviews that ask me to solve math and logic brainteasers because I don't see the value in them regarding my knowledge of programming.
- eksith 13y agoThis may be another reason people are eager to start their own company in lieu of working for someone else. If the questions are rubbish and completely unrelated to the actual job, then there's a huge disconnect between the interviewer (or HR company, as a lot of places outsource that) and where the actual work is to take place. I blame both. The irony is that, in an effort to hire the "smartest" people, they leave out the wisest. Which is arguably more useful.
- jzzskijj 13y agoThis may be another reason people are eager to start their own company in lieu of working for someone else. If it is so, then it is a good thing. Right?
- eksith 13y agoWell, if they really enjoy the challenge (and it is challenging), then yes. But I think there's something sad about being forced into it because hiring practices are archaic elsewhere. It doesn't have to be this way. I don't like it that so many new startups fail and I have a feeling many of these (besides lacking an idea, failure in implementation etc...) are due to a lack of other options. If you can't get hired with the skillset you have, even though it should be more than enough, it can drive you to do desperate things. Including becoming a founder.
- capisce 13y agoI'm sure there are a certain amount of people who have simply given up on or refuse to subject themselves to the standard interview process and will either become freelancers or get their jobs through networking.
- collyw 13y agoDepends. They will likely work on the sort of problems they are good at solving. But at the expense of spending a large part of their time running a business, rather than solving the problems they are good at.
- Xylakant 13y agoI actually like asking math questions on interviews. It shows how people approach a problem. Asking code questions in an arbitrary interview setting shows just about nothing - no access to a reference doc, somebody peering over your shoulder. Heck, I couldn't code my way out of a wet paperback in that setting. Certainly, asking only math questions is stupid as well, people should know at least a little about the stuff they're supposed to work with, but teaching an actual language to a smart person eager to learn is a breeze compared to teaching problem solving to someone who memorized the reference manual.
- kenster07 13y ago"...a smart person eager to learn is a breeze compared to teaching problem solving to someone who memorized the reference manual." I would guess that there is actually significant overlap between these two groups.
- morgante 13y ago> I would guess that there is actually significant overlap between these two groups. I wouldn't. Smart people get bored sitting around memorizing things. They'd rather be thinking. Purely anecdotally, the smartest people I know rarely have encyclopedic knowledge of anything.
- pdonis 13y agoBut thinking has the side effect of storing lots of stuff in your memory. So you can end up with encyclopedic knowledge of subjects that you've spent a lot of time thinking about. It just isn't knowledge that got stored by explicitly trying to "memorize" things (which means it's more reliable anyway, since it's knowledge that's connected to other things you know).
- Xylakant 13y agoI store a lot of "I've read the solution for that problem somewhere while researching something else." I still can't recite the stdlib doc for any of the programming languages I work with. There's only so much stuff I can cram in my head and reference docs are fairly easy to look up.
- kenster07 13y agoThe interview questions cited in this article are more CS questions than math questions. These questions are perfectly valid if the job will require lots of coding using said CS concepts. But if the job DOESN'T use those CS concepts on a regular basis, the graph algorithm test will generate some false negatives. On the other extreme, testing knowledge of language syntax is just as bad. A smart programmer will be able to figure out the syntax of any language in short order, especially if it belongs to the same class of a language with which they are already familiar (such as functional vs imperative, dynamic vs static). An effective interview process would test both reasoning and coding capabilities, and it can be done simultaneously -- i.e. code the solution to reasoning puzzles. There can be an air of intellectual masturbation to some programming interviews. Lots of otherwise reasonably smart people are close-minded about what is predictive of productivity on the job, and I think that is the real issue that this article should address.
- jph 13y ago> Breadth-first search from both ends. I believe this is deeply valuable. For some roles, I would much prefer to hire someone who can quickly see the value of breadth-first search from both ends. If he/she doesn't happen to know the syntax of Ruby, or Java, etc. it's less important to me.
- dagw 13y agoI agree as such. Given the the choice between someone who's really smart and can solve hard problems, but a mediocre programmer or someone who's a good programmer, but sucks at problem solving, I'd chose the first one. That being said, if you hire someone in the first category, don't expect them to be happy and competent at writing an iPhone CRUD app in two weeks after seeing Objective-C for the first time. I think that was the thrust of the article. If you're hiring based solely on someones math and algorithm skills with zero concern about their coding skills, you cannot turn around and be angry when their coding skills aren't what you needed. It's not math vs programming as such, but more generally about tuning your interviews to finding the skills you actually need (as opposed the skills you think you need).
- greendestiny 13y agoI think you're still suffering from same mindset that led to the problem described in the article though. He wasn't a mediocre programmer - he was a bad programmer. If you make a lot of assumptions about people in an interview you will probably be disappointed.
- tylerkahn 13y agoI mean this as a genuine question: http://sixarm.com/ http://sixarm.com/ This is your company, correct? (I stalked your Github profile) Seems like the types of problems you're solving are exactly those which require far more domain experience with Ruby/HTML5/Javascript/whatever than the ability to see the value of various graph-searching techniques. Would you hire this guy even though he's said quite plainly that he lacks the experience with these technologies (and has difficulty picking up new ones owing to that lack of experience)?
- deleted 13y ago[deleted]
- eaxitect 13y agoTotally agree, asking math puzzles (sometimes really hard ones) to develop a copycat iphone app? Interviewing like this is really off the rails. I really understand that a startup with scarce resource would like to do its best shot. However as discussed long ago (https://news.ycombinator.com/item?id=2385424 https://news.ycombinator.com/item?id=2385424), it is really frustrating that asking math puzzles are assumed as the best way to hire the best for the job.
- michaelpinto 13y agoAfter reading this I have a dumb question: The person behind the post is a CS major but only played a little bit with the C programming language in college — is this pretty common these days?
- tylerkahn 13y agoHe said he went to a small liberal arts school. We definitely do C programming at my program (shell, malloc implementation, thread pool, web server, MIPS assembler/interpreter etc.). I go to Virginia Tech, a public university.
- austinl 13y agoCurrent college student, probably have written 5,000+ lines of C directly related to class assignments
- coreyja 13y agoI go to an Engineering school, and there are only two classes that use C and are required for my CS major. The first one is the second programming class we take and is three quarters java and one quarter C. Pretty basic stuff. The second class is Operating Systems, and is C the whole quarter. I'm pretty sure those are the only two required classes that use C. And I didn't have to take the first one cause I tested out of it with AP credit, and I didn't do C in HS. So some people will only take one class in C when they graduate.
- dagw 13y agoCertainly at the school I went to you had quite a lot of choice over what courses you took. I imagine it would be quite possible to get a CS degree without ever touching C, especially if you took either a more math/theory approach or a more UX/HCI approach to your degree. Of course it was equally possible to spend half your degree writing operating systems and programming micro-controllers in C and assembly if that was your cup of tea. Basically CS is a huge field and any assumption you make about someones skills just because they have a "CS degree" is almost certainly false to a greater or lesser degree.
- danieldk 13y ago
- dpiers 13y agoHiring engineers is hard, and companies haven't really figured it out yet. Even the best companies rely on puzzles and gimmicks that often have little to do with day-to-day programming. At one company I interviewed with, I was asked to implement a queue using two stacks. At that time in my programming career, I had worked with C, C++, Obj-C, Lua, Python, JavaScript, SQL, and a handful of DSLs developing games, game development tools, and web applications. Want to know what I had never done? Written a queue using two stacks. My immediate response to the question was, "Why would you want to do that?" If you really want to know if someone has the capacity to pull their weight as an engineer, ask them about what they've built. Even if they are fresh out of college, the best engineers will have projects they can talk about and explain. Ask how they approached/solved specific problems. Ask what they're most proud of building. Ask what was most frustrating. Those are the kind of questions that will provide insight into a person's problem solving capabilities and offer a decent picture of what they're capable of doing.
- austinl 13y agoI definitely agree with a model that places emphasis on past work/projects. "To find out if they can get stuff done, I just ask what they’ve done. If someone can actually get stuff done they should have done so by now. It’s hard to be a good programmer without some previous experience and these days anyone can get some experience by starting or contributing to a free software project." http://www.aaronsw.com/weblog/hiring http://www.aaronsw.com/weblog/hiring
- Techasura 13y agoBest way to go is to ask them about their projects and hear them as to how they will explain them and how enthusiastic they are about building new things and ask them to probably build one in 2 days with the help of google. Then i think the quality would just come out naturally and now you can decide whether to hire this guy or not.
- angrycoder 13y agoExactly. "Tell me about your last project" can easily turn into a 2 hour conversation with any developer who has built anything of substance. It will tell you everything you need to know about them.
- tbassetto 13y agoOur current hiring process at my startup: - After a first non-technical call, we ask the candidate to create a very small project based on our SDK. We send him the documentation and a very small sample. He can almost use every tools he wants to create that small project and, of course, we do not set any deadlines. It allows us to see how the candidate architecture his applications and it gives us a project to discuss during the following call. - If all goes well, we invite the candidate on site to present our code/project and eventually brainstorm together. So that both parties can see if they can work together and the candidate has an insight about how we work, how our code looks like. Clearly, it's far from perfect and we are often considering changing it. Imagine if every company where you are applying would ask you to create an app from scratch with their SDK? We may lose some candidates, but at least we hire only people that fit the company's culture.
- nappy-doo 13y agoI have experienced "interviews" like this from the other end. I told YC funded founders I'm not interested in their job if this is how they interview. In my opinion, it shows inability to make a decision. I am an excellent developer, with years of experience in the industry. I know lots of technologies, and already have a great job. There is no reason for me to spend personal time writing your projects, when I would be rewarded by spending personal time on my employer's projects. "Interviews" like this will only grab candidates with nothing better to do than to fulltime interview with your company. In my opinion, the best people already have jobs, and you're excluding them from the process.
- tbassetto 13y agoI forgot to precise that if the candidate has an (significant) open source project we use it instead of sending the assignment. I hope no company will make their decision just because a candidate says that he is an excellent developer ;)
- epo 13y ago"I am an excellent developer, with years of experience", but seemingly unable or unwilling to complete a small practical test. Sounds to me like they are good at weeding out the wrong people.
- biot 13y agoMath puzzles are great if the problem is easily understood, the solution achievable without a math degree, and you ask them to solve it by writing code. For example: "This database contains 100,000 problems with standardized parameters. The problem definition is defined in the file spec.txt which you can grab from our code repository. Write the code to solve these problems efficiently, passing each solution to a remote service via POSTing to a REST API, the documentation for which you can find here. Bonus points for parallel execution. Feel free to use any editor/IDE and reference online documentation, Stack Overflow, etc. that you want. If anything's not clear or you need a hand with something, just ask as you would if you were an employee already. Ready to get started?" The great thing is that once you've identified a candidate, you can do remote screen sharing and have them write code before they even have to come into the office. I've interviewed a fair number of remote people this way and it's excellent for weeding out the people who can talk the talk but can't program worth a damn. And it limits bias because you don't care about much beyond their communication ability plus their technical ability.
- x0054 13y agoHere is an interesting idea that I had reading this. As a startup, what if you were to create a simple computer language that looked different from most other computer languages, at least somewhat different. Alternatively, just use one of the many really obscure programming languages out there, just make sure the applicant does not know it ahead of time. Give the applicant a 10-20 page reference manual for the language and ask them to make a simple program of some sort. Have them read the manual and write the program, hopefully while not looking over their shoulder, so they can relax. In the manual you give them omit one critical function or API reference, but make sure that info is available online (make it available if you made up the language). Then see what happens. This would test programmers ability to learn a new language.
- seanmcdirmid 13y agoYou would be testing them on the ability to learn a new language. You could test the same abilities using just a custom library. This is a test I used to use on intern candidates. I didn't even provide documentation, just examples of API usages, and was testing their ability to learn from example.
- Tichy 13y agoHm, maybe if I ever have to hire somebody I'll challenge them to a Corewar duel :-) Before the internet my friends and I sometimes used to get to together, everybody got some time to write a Corewar warrior on paper, and then we'd watch the tournament together. It was great fun.
- collyw 13y agoIt takes me a month or two to be comfortable with a new language. How long do you expect your interview to last?
- _ak 13y agoI guess that proposed interview is supposed to get people out of their comfort zone and test whether how quickly they can adapt and learn from a manual and simple examples and then at least be able to write simple programs.
- anuraj 13y agoIt is a good strategy, if the company is interviewing freshers as programming is teachable and the assumption is that new inductee will take few months to become productive. If you can't wait, the best strategy is to give a live coding problem and test the person's proficiency in the required language/technology. I invariably do the latter as my requirements are always very specific. Most start ups I suppose, are themselves undecided on product/market/technology choice and thus the former strategy.
- ek 13y ago> Spoiler alert: to solve this problem, you need to know how to enumerate the rationals. This problem was addressed nicely in this functional pearl by Jeremy Gibbons, et al.: http://www.cs.ox.ac.uk/jeremy.gibbons/publications/rationals.pdf http://www.cs.ox.ac.uk/jeremy.gibbons/publications/rationals... . As interesting as the result is, however, it's a pretty well-made point that research-level ideas from the programming languages community are not really software engineering interview material in the vast majority of cases. This is yet another example of "rockstar developer"-itis, wherein startups are given to believe that they need the best of the best when in fact they do not. This particular example is entirely egregious because they asked her about something that requires enumerating the rationals when what they really wanted was an iOS code monkey. Then they fired her, based on their own shoddy interview.
- AUmrysh 13y agoThe worst part of it is that it's easy to feel like it's your own fault when something like this happens. The real problem was the hiring manager misleading the applicant about what the job would be, but the OP clearly felt responsible for it. I had a similar experience (working for family, at that), where I joined their R&D group and it went well for a while, but eventually they decided they wanted to get into selling solar power and didn't need a software/electrical engineer, so I was lectured about this or that bullshit and eventually brought into a meeting with the IT director and offered a position on his team. I realize now that they were trying to make me feel unwelcome, but I felt entirely responsible at the time. I never felt like I had a choice in taking the IT position (or lose my employment there entirely), and I hated it. The new boss was, for the most part, a nice guy, but he turned into a major nitpicking asshole over little things. I'm at a new place now and it's still hard to kick the habit of trying to avoid coworkers because you know they don't like you and want you gone. Culture has a huge impact on hiring and working. I wish I had been taught about culture when I was in school, I could have avoided the problems I faced had I realized the warning signs earlier.
- yogo 13y agoThe need the best of the best but they are identifying the best the wrong way. Maybe they need the best CRUD developer, well if all you look at are candidates with strong research-level knowledge then they will not be the best at building CRUD apps. Sure we can all say that the research-level code is harder and naturally that makes that candidate smarter, but it's like trying to find the best doctor for a nursing position.
- mariozivic 13y agoIMHO, the post is more about the interviewers not understanding what is important for success in the job they are interviewing for than about anything else. If you need a person that will have to switch technologies, languages and paradigms, you have to test for that, make sure a candidate has done it before or is capable of doing it in expected time with expected depth. If one is good and quick in problem solving or has high GMA, that does indicate that he has the capacity to handle new and difficult things in general, but says nothing about the speed with which he can handle a particular new thing. Author's example with JavaScript is very good illustration how difficult can it be to learn a new paradigm for the first/second time.
- progx 13y agoBecause they don't know you, you don't have a well known name, they don't know what you can and if it is true. E.g. if somebody hire John Carmack (ID Software), nobody will let him do some math test or ask him trivial programming questions. But you are not John Carmack ;-) It is like in every other job: if you are not a rockstar you are nobody.
- progx 13y agoI know: the truth hurts.
- keithgabryelski 13y agoThere is a job at Google to ask legendary-coders coding questions. It is reasonable.
- josephlord 13y agoDid you even read the article? The author was not saying she was above simple coding tests but that she was an inexperienced programmer who was GOOD at the maths puzzles and got the job then struggled and the interviewer's assessment of her software development ability would have been better with some software related questions.
- progx 13y agoExperienced or not, if you have a known name, nobody ask you silly questions. Thats all what i want to say. We life in a world of casting shows, now we (the programmers) are in that shows too. They run only in companies.
- mindwork 13y agoI am stopping to talk with people who ask for such a bs. Check out the last technical interview task that I got ``` Objective: Write a program that prints out a multiplication table of the first 10 prime numbers. The program must run from the command line and print to screen one table. Notes: - DO NOT use a library method for Prime (write your own) - Use Tests. TDD/BDD - IMPRESS US. ``` I mean I can impress you but how will this correlate with production code?
- lotsofcows 13y agoI agree. But for a different reason: I'm shit at maths puzzles. I just don't have the experience or tools or interest for them. And yet, somehow, in 20 years of business geekery I've never come across a problem I can't solve. Maybe when writing Tetris for J2ME I would have saved myself 10 minutes googling if I'd had the experience to realise that right angle based matrix translations don't require fp maths and maybe when writing financial indicators, I'd have saved myself half a day if I hadn't had to look up integrals but this sort of stuff is definitely in the minority as far as my experience goes.
- yeukhon 13y agoI don't play Sudoku, I don't solve puzzles. I don't want to solve mathematical puzzles. I just want to deal with system and deal with security and none of them requires me to understand the tricks to solve a puzzle. Sure I can learn some cool algorithms but no thanks. I don't want to solve puzzles. Exactly.
- mcphilip 13y agoAfter much experimentation giving interviews for server side positions, I've come to favor questions that involve routine real world problems that can be handled in increasingly sophisticated ways. One example I use is getting the candidate to write crud, list, and search controller actions for a simple category data structure. Given a basic category data model (e.g. Name, Parent), the candidate starts with the crud actions. Crud actions aren't meant to be difficult to solve and serve as a basic screener to verify the candidate has working knowledge of the basics. The only edge case I look for the candidate to ask about is if orphaning child nodes is allowed (I.e updating parent node, deleting a node with children) List action(s) start getting more interesting since recursion comes into play. A basic implementation of an action that can load the tree given an arbitrary category as a starting point is expected. If the candidate has some prior experience, a discussion of what performance concerns they may have with loading the category tree is a follow up question. The tree loading algorithm is then expected to be revised to handle an optional max depth parameter. An edge case I look to be considered is how to signify in the action response that a category has one or more child nodes that weren't loaded due to a depth restriction. The search action implementation has a degree of difficulty scaled to the candidates experience level. All candidates have to write an action that returns a collection of categories matching a search string. Those with previous experience are asked about a paging solution. Senior level candidates are asked to return matching categories in a format that indicates all ancestors ( for instance: "Category 1 -> Category 1.1 -> Category 1.1.1" result for search string "1.1.1") For an added degree of difficulty, candidates can be asked to recommend data model tweaks and algorithms supporting tree versioning requirements necessary to allow for loading the category tree's state at a given point in time. The candidate's performance to this exercise seems to give some insight into their level of experience and ability to implement algorithms from a common real world example without having to ask much trivia or logic problems.
- dionyziz 13y agoOP would still blow you away by using the Nested set model: https://en.wikipedia.org/wiki/Nested_set_model https://en.wikipedia.org/wiki/Nested_set_model Although if you've been doing this interview for a while, you're bound to have come across someone who mentioned it, so I'm sure you're familiar.
- codecrusade 13y ago1. Most IQ tests are Bullshit 2. We all know what happened to the company famous for " Who moved mount fuji" 3. Math Puzzles are good if they are of the IMO level- but these things need a lot of concentration and joy to solve- Not under stress interview conditions. 4. Expecting someone to show brilliance by solving a math puzzle in under ten twenty minutes is a lot like a public willy wagging competition 5.Even more disgusting is the semi dumb questions at Mckinsey inerviews like - "Estimate the number of mineral water bottles in London" 6. 7.In 'Jobs', Walter Issacson says Steve was never into much of these puzzles- I can understand the reason. 8. ' I think a lot of what people call intelligence just boils down to curiosity'-(great quote from an inspirational friend-http://www.flickr.com/photos/elizabethbw/8373942339/ http://www.flickr.com/photos/elizabethbw/8373942339/) 9. People who ask these kind of puzzles end up creating a lot of CPU without any GPU. Very Little beauty. Very Little love. Disclosure- Im a member of Mensa Inernational. No Offense meant.
- yeukhon 13y agoI just saw this on HN... http://www.datagenetics.com/blog/october12013/index.html http://www.datagenetics.com/blog/october12013/index.html This is like solving your submarine problem. Jeese.
- conductr 13y agoI can relate on the opposite. I am not great at those complex math problems. But, I have been coding for 15 years at >20 hours a week average. Mostly web stuff. I've built dozens of full products, that we're complex, and I generally feel like I could build anything I wanted. Every time I use a new site I can visualize how I would have built it, usually not a question of if I could; time permitting. Yet, I have never had the balls to pursue it professionally. I build stuff and usually never launch it. I have learned several times over that marketing is not my strong suit. That said, I'd actually like to work for a startup. Hit me up if anyone wants to talk.
- CmonDev 13y agoStart-ups can afford asking candidates puzzles? I thought everyone was struggling to find developers.
- seabee 13y agoStruggling to find good developers maybe? (Or at least ones that get through their weird puzzle interview process)
- 10098 13y agoDear god, what kind of startup hires a person with only basic Java and Python knowledge, then hands them K&R and expects them to churn out production-quality code?! That's unfair.
- 14113 13y agoThe kind whose interviewing tactics don't hire staff with the skillset they need.
- shindevijaykr 13y agoreally true
- shurcooL 13y agoWhy not just look at the person's recent commits?
- PhasmaFelis 13y agoBecause most paid coding work is not public, and many excellent commercial programmers prefer to do other things in their off time. Honestly, this is a weirdly naive question. Gung-ho startup culture does not represent the industry as a whole, and you don't need to eat, breathe, and sweat code every waking moment of your life to be a great coder.
- Beltiras 13y agoFunny. Just made a hire and this story made me think of it. The position I was filling is a part-time position for a CS major, sort of like an internship. I devote time to develop his/her skills, s/he would get real-world experience, and a little money to help with cost of living. If everything works out, a position could open up for full employment. I had a pretty good idea what I was looking for. Someone that had good grasp on theory but had no experience coding. Preferably enrolled in Uni. I had 5 applicants but the only candidate I interviewed is enrolled in Math-CS. I basically tried to gauge if he had deep interests and asked him to code a bit, solve a simple control (find me the article with the highest hitcount from the day a week ago, gave him 10 minutes). He failed the coding test but I made the hire regardless. Reason why was 2 things out of the 4 hours we spent together: When I asked him who he considered the father of CS he rattled off von Neuman, Djikstra and Knuth. Yeah, you can make that argument I suppose, but he knew who the influential people were. The other thing was: even if he failed the coding test he failed it by not reading the code examples quite right, he was using my code to try to help himself solve the problem. I'm sure he'll work out. We as a field should employ internships a lot more than we do, get the college kids and undergrads working on real-world problems a lot more than we do.
- Tyrannosaurs 13y agoOn one hand I completely agree, on the other my experience of most CS graduates is that you can't code, at least not in the way that anyone codes in the real world so it's not a great thing to spend too much time on. That's not the fault of most graduates, it's what and how they're taught. Most people coming out of university know a little bit about a lot of languages and theories. That's good for giving them an overview but not great when it comes to having actual usable skills on day one. Because of this I've pretty much given up on hiring graduates based on their technical skills so instead I'm looking for someone smart, who gets that they've got a lot to learn, who is interested in technology and can get on with the other people in the team. I don't think asking people math questions per se is a great idea, but if you've studied a maths degree it's a good way of working out if you're smart and if you were paying any attention at all during university. (Incidentally this may be different in other countries (I'm in the UK) or in a company where you're able to attract the very best who have picked up really solid skills, but for most organisations that's not the case as most graduates spent more of their own time in the bar than coding.)
- sudomal 13y agoI am willing to bet that tests give an advantage to applicants with no commercial experience, as well as those that have no life outside of technology. If that's what you want in employees then sure, it's a good way to find them, otherwise just look at their code samples and give them a trial. Programming isn't difficult and you don't need to know complex maths or be able to solve mind bending puzzles to be a great developer.
- Jugurtha 13y agoThe "Kevin Bacon" stuff was about degrees of separation (Does the expression "Six degrees of separation" ring a bell ?). Not long ago, Facebook made that 4.74 degrees of separation on its networks. Meaning a maximum of only 4.74 persons are necessary to connect any two random persons on the network. https://www.facebook.com/notes/facebook-data-team/anatomy-of-facebook/10150388519243859 https://www.facebook.com/notes/facebook-data-team/anatomy-of... You can also find an article on Wikipedia about the "Kevin Bacon" reference.
- tommorris 13y agoHere's the test I've used in the past: Before the interview, I ask them to write some code to access an HTTP endpoint that contains exchange rate data (USD, EUR, GBP, JPY etc.) in XML and to parse and load said data into a relational database. Then to build a very simple HTML form based front-end that lets you input a currency and convert it into another currency. I ask them to send me either a link to a repository (Git, SVN etc.) or a zipball/tarball. If the job specifies a particular language, then I obviously expect it to be in that language. If not, so long as it isn't in something crazy like Brainfuck, they have free range. If the code works and is basically sane, that goes a long way to get them shortlisted. During the interview, I'll pull the code they sent up on a projector and ask them to self-review it. If they can figure out things that need improving in their code, that weighs heavily in their favour. Usually this is things like comments/documentation, tests, improving the structure or reusability. If it's really good, I'll throw a hypothetical idea for refactoring at them and see how they think. The reason this works is that, despite Hacker News/Paul Graham dogma to the contrary, "smartness" isn't the only thing that matters in programmers. It's actually fairly low down the list. When hiring programmers, I want people who are actually able to do the daily practical job of writing code, modest and self-critical enough to spot their own mistakes, and socially capable to actually communicate their decisions and mistakes to the people they work with. I interviewed a guy who was intellectually very smart and understood a lot about CS theory. I asked him why the PHP code he sent me didn't have any comments. "I don't believe in comments because they slow the PHP interpreter down." Sorry, he can be smarter than Einstein but I ain't letting him near production code.
- sillysaurus2 13y agodespite Hacker News/Paul Graham dogma to the contrary, "smartness" isn't the only thing that matters in programmers. It's actually fairly low down the list. [...] I interviewed a guy who was intellectually very smart and understood a lot about CS theory. I asked him why the PHP code he sent me didn't have any comments. "I don't believe in comments because they slow the PHP interpreter down." Sorry, he can be smarter than Einstein but I ain't letting him near production code. That isn't what Paul means by "smart." Worrying about trivial inefficiencies like that is a sign of an ineffective coder. That's the opposite of a great hacker.
- gregjor 13y agoThis is sadly common in a community keen on logic, evidence, and avoiding fallacies in thinking. Worse than puzzles are pointless faux psychological screening questions like "Tell me about something painful that has happened to you and how you dealt with it." I would (and have) asked if the interviewer or organization has any evidence to show that interview puzzle performance (or shit like Myers-Brigg) predicts job performance. No? Not surprising. Google did look into it and found no relationship. (http://www.businessinsider.com/how-google-hires-2013-6 http://www.businessinsider.com/how-google-hires-2013-6) Programmer interviews are so crazy and sometimes sadistic that I catalogued some of the more common interview patterns: http://typicalprogrammer.com/thirteen-patterns-of-programmer-interviews/ http://typicalprogrammer.com/thirteen-patterns-of-programmer...
- theanirudh 13y agoEven after reading Jeff Atwood's post[1], it still amazes me how many programmers fail the fizz buzz test. We dont even get the chance to ask tough programming qustions. Simple questions like fizz buzz, loops and recursion were good enough to filter out a lot of applicants. [1] http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html http://www.codinghorror.com/blog/2007/02/why-cant-programmer...
- hmsimha 13y agoIs this really the case? I read this a lot, but have a hard time imagining that there exists a wealth of people who have such a hard time with such a simple task, and yet I am having a hard time finding an entry-level job when they are (presumably a substantial part of) my competition.
- GFischer 13y agoIt is. There are a lot of really bad programmers out there. However, you're probably not looking at the places where such programmers would apply... try an entry-level job here in Uruguay (pay: about U$ 800 / month after taxes), you'll get a lot of people that fail fizz-buzz . The original poster (Imran Ghory) was from the UK, and Reginald is from Canada. Neither are Silicon Valley. http://imranontech.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/ http://imranontech.com/2007/01/24/using-fizzbuzz-to-find-dev... http://weblog.raganwald.com/2007/01/dont-overthink-fizzbuzz.html http://weblog.raganwald.com/2007/01/dont-overthink-fizzbuzz....
- nnoitra 13y agoI don't believe this.
- taude 13y agoWhile we're at it, can we stop treating and thinking of web development (which seems to be a lot of dev positions these days) like it's rocket science?
- trendspotter 13y agotl;dr Stop asking this fine young lady math puzzles to determine her programming abilities. She is good at solving your seemingly pointless math puzzle, because she was practicing problem-solving since she was ten. But she is not anywhere near as good at programming, yet - which caused her problems at the actual jobs she had to do after she was hired.
- fayyazkl 13y agoFinally some one pointed out the importance of the ability to actually code and produce something that works. Algorithmic problem solving ability is far less utilized in actual every day job compared to being able to code. Just imagine how much of your math skills did you actually need going well through all those bad experiences? Would you still be considered slow learner and fired if you knew how to code pretty well but just wasn’t so good at figuring out shortest path in a graph. Isn’t it possible to know the CS basics well i.e. familiar with complexity, big Os, basic data structures and sorting and being able to learn any advanced standard algo when needed by looking it up? Just wondering….
- enterx 13y agoYou speak wise, my friend. Isn't XY years of records in the same field of interest working for a successful companies a good sign that I can code?! Ask me theory - pay me to code.
- sokoloff 13y agoSadly, it's not. I can't tell you the number of 5-8 years' experienced candidates from respectable companies who couldn't solve very easy interview problems. Yes, I get that a whiteboard isn't an editor, and you don't have google/SO, and some people just freeze in an interview, but I've long ago stopped assuming people can code just because they've got coding on their resume for successful companies. (For all I know at the interview moment, they didn't have a coding role, or may not have even worked there.)
- joeblau 13y agoI would say that you should keep at it. There are strong parallels between math and programming, but interviewers should definitely be asking you to write pseudo-code on a whiteboard and do a paired programming session. That would probably be a good way to relieve the awkwardness later when they realize that your programming skills aren't as strong as you'd like them to be. Definitely keep at it, soon you'll be able to think of a Markov chain as a for loop multiplying two arrays and not only as a matrix multiplication.
- cicatriz 13y agoHere's a writeup about a recent study that showed interviewers couldn't predict GPA any better when the interviewees answers were accurate versus random: http://www.danielwillingham.com/1/post/2013/10/why-job-interviews-dont-work.html http://www.danielwillingham.com/1/post/2013/10/why-job-inter... Anyone who supports math puzzles (or whatever else) in an interview would have to argue that their perception of the candidates performance offers a clear enough data point that it doesn't dilute other information available to them. Given Google's study finding data otherwise, they certainly have the burden of proof.
- tokenadult 13y agoThere are many discussions here on HN about company hiring procedures. Company hiring procedures and their effectiveness is a heavily researched topic, but most hiring managers and most job applicants haven't looked up much of the research. After reading the blog post kindly submitted here and some of its comments, and then reading most of the comments here on HN that came in while I was asleep in my time zone, it looks like it's time to recycle some electrons from a FAQ I'm building about company hiring procedures. The review article by Frank L. Schmidt and John E. Hunter, "The Validity and Utility of Selection Models in Personnel Psychology: Practical and Theoretical Implications of 85 Years of Research Findings,"[1] Psychological Bulletin, Vol. 124, No. 2, 262-274 sums up, current to 1998, a meta-analysis of much of the huge peer-reviewed professional literature on the industrial and organizational psychology devoted to business hiring procedures. There are many kinds of hiring criteria, such as in-person interviews, telephone interviews, resume reviews for job experience, checks for academic credentials, personality tests, and so on. There is much published study research on how job applicants perform after they are hired in a wide variety of occupations.[2] EXECUTIVE SUMMARY: If you are hiring for any kind of job in the United States, with its legal rules about hiring, prefer a work-sample test as your hiring procedure. If you are hiring in most other parts of the world, use a work-sample test in combination with a general mental ability test. The overall summary of the industrial psychology research in reliable secondary sources is that two kinds of job screening procedures work reasonably well. One is a general mental ability (GMA) test (an IQ-like test, such as the Wonderlic personnel screening test). Another is a work-sample test, where the applicant does an actual task or group of tasks like what the applicant will do on the job if hired. (But the calculated validity of each of the two best kinds of procedures, standing alone, is only 0.54 for work sample tests and 0.51 for general mental ability tests.) Each of these kinds of tests has about the same validity in screening applicants for jobs, with the general mental ability test better predicting success for applicants who will be trained into a new job. Neither is perfect (both miss some good performers on the job, and select some bad performers on the job), but both are better than any other single-factor hiring procedure that has been tested in rigorous research, across a wide variety of occupations. So if you are hiring for your company, it's a good idea to think about how to build a work-sample test into all of your hiring processes. Because of a Supreme Court decision in the United States (the decision does not apply in other countries, which have different statutes about employment), it is legally risky to give job applicants general mental ability tests such as a straight-up IQ test (as was commonplace in my parents' generation) as a routine part of hiring procedures. The Griggs v. Duke Power, 401 U.S. 424 (1971) case[3] interpreted a federal statute about employment discrimination and held that a general intelligence test used in hiring that could have a "disparate impact" on applicants of some protected classes must "bear a demonstrable relationship to successful performance of the jobs for which it was used." In other words, a company that wants to use a test like the Wonderlic, or like the SAT, or like the current WAIS or Stanford-Binet IQ tests, in a hiring procedure had best conduct a specific validation study of the test related to performance on the job in question. Some companies do the validation study, and use IQ-like tests in hiring. Other companies use IQ-like tests in hiring and hope that no one sues (which is not what I would advise any company). Note that a brain-teaser-type test used in a hiring procedure could be challenged as illegal if it can be shown to have disparate impact on some job applicants. A company defending a brain-teaser test for hiring would have to defend it by showing it is supported by a validation study demonstrating that the test is related to successful performance on the job. Such validation studies can be quite expensive. (Companies outside the United States are regulated by different laws. One other big difference between the United States and other countries is the relative ease with which workers may be fired in the United States, allowing companies to correct hiring mistakes by terminating the employment of the workers they hired mistakenly. The more legal protections a worker has from being fired, the more reluctant companies will be about hiring in the first place.) The social background to the legal environment in the United States is explained in various books about hiring procedures,[4] and some of the social background appears to be changing in the most recent few decades, with the prospect for further changes.[5] Previous discussion on HN pointed out that the Schmidt & Hunter (1998) article showed that multi-factor procedures work better than single-factor procedures, a summary of that article we can find in the current professional literature, for example "Reasons for being selective when choosing personnel selection procedures"[6] (2010) by Cornelius J. König, Ute-Christine Klehe, Matthias Berchtold, and Martin Kleinmann: "Choosing personnel selection procedures could be so simple: Grab your copy of Schmidt and Hunter (1998) and read their Table 1 (again). This should remind you to use a general mental ability (GMA) test in combination with an integrity test, a structured interview, a work sample test, and/or a conscientiousness measure." But the 2010 article notes, looking at actual practice of companies around the world, "However, this idea does not seem to capture what is actually happening in organizations, as practitioners worldwide often use procedures with low predictive validity and regularly ignore procedures that are more valid (e.g., Di Milia, 2004; Lievens & De Paepe, 2004; Ryan, McFarland, Baron, & Page, 1999; Scholarios & Lockyer, 1999; Schuler, Hell, Trapmann, Schaar, & Boramir, 2007; Taylor, Keelty, & McDonnell, 2002). For example, the highly valid work sample tests are hardly used in the US, and the potentially rather useless procedure of graphology (Dean, 1992; Neter & Ben-Shakhar, 1989) is applied somewhere between occasionally and often in France (Ryan et al., 1999). In Germany, the use of GMA tests is reported to be low and to be decreasing (i.e., only 30% of the companies surveyed by Schuler et al., 2007, now use them)." [1] http://mavweb.mnsu.edu/howard/Schmidt%20and%20Hunter%201998%20Validity%20and%20Utility%20Psychological%20Bulletin.pdf http://mavweb.mnsu.edu/howard/Schmidt%20and%20Hunter%201998%... [2] http://www.siop.org/workplace/employment%20testing/testtypes.aspx http://www.siop.org/workplace/employment%20testing/testtypes... [3] http://scholar.google.com/scholar_case?case=8655598674229196978&q=Griggs+Duke+Power&hl=en&as_sdt=2,24 http://scholar.google.com/scholar_case?case=8655598674229196... [4] http://books.google.com/books?hl=en&lr=&id=SRv-GZkw6TEC http://books.google.com/books?hl=en&lr=&id=SRv-GZkw6TEC [5] http://intl-pss.sagepub.com/content/17/10/913.full http://intl-pss.sagepub.com/content/17/10/913.full http://www.economics.harvard.edu/faculty/fryer/files/Fryer_Racial_Inequality.pdf http://www.economics.harvard.edu/faculty/fryer/files/Fryer_R... [6] http://geb.uni-giessen.de/geb/volltexte/2012/8532/pdf/preprint_j.1468_2389.2010.00485.x.pdf http://geb.uni-giessen.de/geb/volltexte/2012/8532/pdf/prepri...
- VLM 13y agoSomething I've always wanted to ask, are contractors hired the same way? I've never contracted although my father did in his retirement years. I'm curious if modern contractors have to put up with this kind of behavior at interviews, or if its a more professional atmosphere oriented around the actual job requirements.
- lucasnemeth 13y agoI believe there is some kind of inferiority complex, we don't believe software engineering is actually worth it. Probably, it is the result of an academic mindset that is taught at colleges, where the applied fields are seen as less important than the "pure" ones. But good software engineering, that is, writing complex systems, with a lot of requirements, maintainable, scalable, nice APIs, etc. it's very, very hard. And we know it! If we applied our hiring methods to writers, we would be asking them to improvise a rap rhyme, when we wanted to hire a novelist.
- mrcactu5 13y agoIt looks like Emma's math prowess is working against her. It's ironic the app developers - who need her help the most - are pushing her away. OK, so there is a difference between computer science and programming. that's why there are two different stack-exchanges: cs.stackexchange.com stackoverflow.com And we can make even finer distinctions if we wanted to. it's actually really fucking INCREDIBLE that * you can know tons of CS without being able to build a decent app * you can a decent facebook clone without having any idea how it works I feel really bad for Emma. I was a math major, but app developers won't even look at me b/c I'm not a full-stack whatever. So now I'm a Data Scientist at an advertising firm in Puerto Rico.
- fnbr 13y agoHey, I'm a math major looking for jobs/internships in data science. Any chance I could ask you a few questions about your experience finding work?
- mrcactu5 13y agoit was a nightmare due to most programmers' ironic contempt for computer science, let alone mathematics. they consider it a waste of money. I moved to another country (Puerto Rico) have 2 excellent data scientist jobs and have enjoyed every day since.
- keithgabryelski 13y agoMy observation is that a lot of interviews come down to "stump the chump" questions; a question that is meant to show a single issue the interviewee has under their belt and is used to gauge the entirety of the interviewer's ability. Math puzzles/logic puzzles are in the same category: they require domain knowledge that probably doesn't translate to any job I've ever worked on. That aside, one must have a way to measure the abilities of a candidate -- and asking the same set of questions to many people allows you to compare the answers as apples to apples. I generally don't restrict my people from asking any particular question, but I will ask them to consider what a failed answer really means for the specific job (questions are generally adjusted then). As an aside, some questions of mine that aren't specifically about coding: * do you code outside of work (a love of coding translates to good coders) * send me a link to some code you've written that you are proud of (let see what you got) * tell me about a problem you had where your solution wasn't correct (how have you dealt with failure).
- meshko 13y agoI don't get it. He got hired? He learned how to do his stuff? If we require people to know how to work right out of college, no fresh grad would ever got a job.
- rexreed 13y agoIf you're running a startup, the most important thing to hire for is fit. Do they fit in your culture? Do they fit a need that will help you achieve your milestones? Do they fit in the overall growth trajectory of your company? Do they have competency in the specific area you are hiring for and/or where your startup is building overall competency? Can they manage themselves and their time well? The likelihood of failure of a startup approaches 100%, so you should optimize for likelihood of survival, not for IQ. If you're not a startup, then the top ranked comment applies. But it doesn't really otherwise.
- Thrymr 13y agoExcept that what a lot of startups mean by "fit" is "they think just like me" or even, "they have a similar background to the rest of the team." Sure, that may make them easier for you to talk to or hang out with, but it reduces the diversity of the team, and increases the likelihood of groupthink. The other things you mention (after "fit in your culture") are not what most people mean by "fit". "Fit" is an intangible that can be used by screeners to keep from going out of their comfort zone.
- DigitalSea 13y agoI failed mathematics in school, for the life of me I can't grasp them beyond the basics, but give me laptop and a copy of Sublime and I'll code anything you want. I can code, but I would fail any mathematical test given to me. This kind of approach has always bothered me, there are a lot of good developers out there bad at maths but posses strong problem-solving and highly analytical skills. Being a developer is 80% Google and 20% actual coding knowledge. We are hackers at the end of the day, not miniature Einstein's with encyclopaedias for brains.
- gboudrias 13y agoI've always felt like I was supposed to like maths, but I learned (basic) programming before I learned algebra, and I couldn't figure out how I would be using it. After years of being a programmer, I still can't.
- onezeno 13y agoActually... “Never memorize something that you can look up.” ― Albert Einstein
- rehack 13y agoThis is a great post. And also from the other side of the fence. As typically we see, these kind of posts, from people who did not like Math puzzles, and as a result suffered in the interview rounds. But this one talks about getting inadvertent benefit of being good in Maths to get selected for programming, and suffering the consequences later on. Also, it highlights the importance of what is mostly taken for granted and thought of as mundane stuff, of programming - the idiosyncrasies, jargon, and best practices of various languages and OS environs.
- jroseattle 13y agoI'm dealing with this now, having been interviewing for different engineering roles over the past two months. It hasn't been as bad as straight-up conceptual math problems, but there have been plenty of questions that I have questioned for validity. Interviewer: "How can we optimize the character replacement in a string such that we use no extra memory?" Me: "We do this and that and this. But, should we consider what situations we would need this optimization?" Interviewer: "What? Why?" I can now use this as a filter as I interview organizations. Optimizing algorithms by creating your own core data structure classes (instead of using the built-in ones) is great in certain circumstances, but an absolute waste of time in many others. And if you're not going to ask me about those times when making those improvements is important, then you're not asking questions for a programmer -- you're asking them for a theoretician who can recall syntax. It's poor practice, and I've seen it everywhere.
- deleted 13y ago[deleted]
- fnbr 13y agoI found that Facebook was really bad for this. I'm a math undergrad, and I applied for a bunch of data analysis positions with them. I was asked, as part of my application, to take a programming quiz. The quiz consisted of a graph theory problem. I did pretty poorly on it, given that I have no real knowledge of graph theory. Had they asked me a question about statistics (or something similarly related to data analysis), I think I would have actually been able to answer, or at least been at a point where my programming knowledge- not my math knowledge- was what was holding me back.
- jpgvm 13y agoWhen I hire programmers I try to favour ingenuity, knowledge and as best as I can gauge it, work ethic. For instance I might ask them about a theoretical task, possibly something like a scheduler or packet filter etc and give them domain specific data about how it will be used and ask them if there are any optimization they could make if they had this data about the systems use case. Or I might ask them to describe how an event loop works.. or what the I/O path between their program and the disk looks like in as much detail as they can. Someone that loves the field is going to have a decent idea about these things even if they never had to build one before. caveat: these examples are very system level but you can substitute them with appropriate web, financial etc domain specific knowledge.
- jpgvm 13y agoWhen I hire programmers I try to favour ingenuity, knowledge and as best as I can gauge it, work ethic. For instance I might ask them about a theoretical task, possibly something like a scheduler or packet filter etc and give them domain specific data about how it will be used and ask them if there are any optimization they could make if they had this data about the systems use case. Or I might ask them to describe how an event loop works.. or what the I/O path between their program and the disk looks like in as much detail as they can. Someone that loves the field is going to have a decent idea about these things even if they never had to build one before. caveat: these examples are very system level but you can substitute them with appropriate web, financial etc domain specific knowledge.
- jpgvm 13y agoWhen I hire programmers I try to favour ingenuity, knowledge and as best as I can gauge it, work ethic. For instance I might ask them about a theoretical task, possibly something like a scheduler or packet filter etc and give them domain specific data about how it will be used and ask them if there are any optimization they could make if they had this data about the systems use case. Or I might ask them to describe how an event loop works.. or what the I/O path between their program and the disk looks like in as much detail as they can. Someone that loves the field is going to have a decent idea about these things even if they never had to build one before. caveat: these examples are very system level but you can substitute them with appropriate web, financial etc domain specific knowledge.
- Killswitch 13y agoI'm absolutely horrible at math... I think I graduated high school (my only schooling) with the equivalent of just above grade school in math... I can code no problem though. I'm very good at it. Anybody asks me math puzzles I say thanks for your time, but I am done with the interview.
- jsun 13y agoI think a lot of companies use brain teasers or math problems to test general mental aptitude, whether it works or not is under serious debate, but in my opinion that's the right thing to test for (if it's even possible). The reason is smart people can figure out git, or databases, or objective-c, or whatever, in a fairly short amount of time. For example, my co-founder learned objective C off free online video tutorials and built an iOS app (talking an app with serious firepower and back-end transaction logic) from start to end by himself in less than 3 weeks. That's why we're not as concerned about what you know right now as what it's possible for you to learn in 3 more week.
- swelly127 13y agoI have the exact same problem as OP. Getting tons of job offers because I've been doing competitive math and algorithms since grade school but really have hard time understand technology. I'm pretty ambitious and I want to join a small, high growth startup and have the excitement of being part of a founding team but I'm afraid of letting people down. I could learn heroku/RoR/whatever other technology but news things are always coming out and some people keep up with it so easily. I'm not sure being a dev is right for me if I take so long to understand such basic stuff. But I love coding and algos! I write python scripts to do all my homework... and then run them in codecademy labs because doing it in unix makes me so confused. If anyone has had the same problem please let me know how you got over this hurdle. Thanks. background; sophomore, cs major, cornell
- tylerkahn 13y agoYou say that unix is confusing. Unix isn't confusing. It's just unfamiliar to you as it was to me at one point. The way you get better is that you push through the unfamiliarity and keep going until you solve the problem you're facing. Sometimes it's painfully slow to acquire the knowledge you need, but that's just part of the process. All that knowledge accumulates over time and you build skills about how to learn new things. That's what allows people to pick up new technologies easily. Hard work, previous experience with similar technologies, and some intelligence (which you obviously have already). I would recommend that you install Ubuntu in a virtual machine (VirtualBox is a good choice) and see if you can get some Python programs running. That process alone will teach you a lot. For what it's worth, RoR and the Heroku stack are not basic and you shouldn't feel bad for not picking the up quickly. There's so much context that you need to have to understand what's going on and to use those technologies effectively. I bet if you polled your classmates the majority of them haven't even heard of Heroku.
- Xyik 13y agoIn my experience, only the really big companies focus heavily on algorithms and math puzzles. That's because they don't really need to hire anymore people, they just want to steal 'smart' people, and they don't need to iterate as quicky. Start-ups and smaller companies have in my experience, typically asked full-stack type of questions that dive into things like networking protocols, databases, scalability, and so on. And I believe thats the way it should be. Start-ups that focus heavily on math puzzles and algorithms are doing it wrong.
- mcgwiz 13y agoDear poster, don't imply all startups are equal. If a startup asks you to solve math puzzles, it's possible that the work you will be doing heavily involves the creative use of math or information analysis. (This is more broadly valuable than many people recognize.) Also, it's also possible that that particular startup doesn't know how to effectively interview. It doesn't sensationalisticly mean all Startups (capitalization yours) don't know how to effectively interview. Also, rather than focus on your ability to learn, I would humbly recommend you reconsider the basic nature of employment. An interview should be considered a two-way conversation. You're not selling yourself as a slave, you're entering into a mutually-beneficial, private, voluntary arrangement. Thus, even someone who goes into an interview willing to accept anything and everything they offer could be expected to ask simply, "And what exactly will I be doing?" But better yet, grill them about every nitty-gritty detail you can think of. Although some insecure interviewers may be taken aback (I'm guilty of asserting the interviewer was wrong on more than one occasion, both times still receiving an offer), I for one am impressed when a candidate demonstrates a sharp, critical and skeptical mind in this way.
- jasey 13y agoThe interview is a 2 way street. While the company makes you jump through hoops to see if your good enough, you also have a opportunity to determine if you want to work for them. I like to ask "what will I be working on in the next 6 months" that way you don't rock up and than the second day they through you in the deep end of building a iPhone app. Granted, startups only have a vague idea of what they will be programming with short periods but it helps. Also ask "what will be my performance indicators". If they don't include "being able to very quickly learn new technologies" its hardly your fault.
- czarpino 13y agoWhile I agree that puzzles and mind games are silly ways to appraise coding skills, they do give an insight about a person's raw intelligence, or knowledge, or potential. As CS is an application of math and programming is an application of CS, being good in math does not necessarily mean proficiency in it's application; same goes for CS. IMO, a good programmer must, at least, have: + knowledge - generally mastery of math/CS concepts and can be thought of as the potential + application skills - modeling a real world problem into a theoretical, computable, and (ultimately) programmable form + execution skills - implementation (coding) of a solution including the ability to utilize requisite tools/technologies such programming languages, DBs, OS, and so on That said, hiring process should cover each of these areas and programmers should work on all these as well.
- dschiptsov 13y agoSo it boils down to "show me your code" and then "please write a few test examples". To staff up a cheap coding sweatshop this method is good-enough. In most cases an applicant must be able to read English (to google some code to copy-paste and occasionally search through documentation) and able to install and run Eclipse. The real problem with hiring is that a HR middleman is ignorant and can't tell a good code form a restaurant menu. So he must give a very few simple exercises from common text-books with known answers. The even bigger problem is that almost no one needs coders, everyone wants programmers which is a complete different set of analytical and engineering skills. Coding is just a process of translation of a ready-made by someone else, poorly understood (if at all) specifications into a spaghetti [Java] code by calling poorly understood methods of ready-made classes, coded by someone else. Programming is a process of understanding and describing reality (in terms of design documents, protocol specifications, and then, least importantly, source code in a several languages). The criteria of success for a coder, btw, is when it just compiles (unit-tests? what unit-tests?) by the industry-strength most advanced compiler of the most sophisticated industry standard static-typing language (static typing is a guarantee from stupid errors, everyone knows) which is even verified to run correctly on the most advanced VM which incorporates millions of man-hours of optimizations, unless.. Never mind. Success of a programmer is when it, like nginx or Plan9 or OpenBSD, is good-enough.)
- etler 13y agoSome reasons why math puzzles might be popular: * CS majors take math in college, but there's lots of other stuff going on with their CS classes so it's hard to remember math class. If you can actually remember anything from math class, you must be smart! * Programmers like math, even though it's not their job, so interviewing is the only opportunity to have fun with it! * We had to deal with this crap when we were interviewing so now it's time to make someone else suffer! >:)