Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

131 Neutral

About Rememberant

  • Rank
  1. Rememberant

    Getting Destroyed in Programmer Screeners

      Stop "studying" for interviews. It seems obvious to me that it isn't actually helping you and anyway you shouldn't need to study for a job interview. I always felt that if you study too much for an interview, then it isn't a fair test of your abilities - it's a test of your abilities after studying something for a while, which by and large is not a circumstance that actually happens at work. The only studying I ever did for a job interview was my own code so that I could talk about what I've actually done with the interviewer. This isn't to say that reading up on technical things is a bad idea in general - it's always good to refresh your memory of what you are claiming to know - but my overall point is that you're approaching this like a student preparing for an exam. Your wording and analogies confirm this to me. That is not what employers are looking for. If you're coming across as having "rehearsed" your answers to questions or "crammed" your knowledge the night before, they might think you're faking your abilities to get a job and therefore you aren't actually qualified, which is really not what you want people to think.   As you've rightly pointed out, you can't you can't predict what will be asked, and trying to predict that doesn't seem to be working, so try something else. Using your knowledge to do something related to what you're interviewing for (writing a demo, for instance) is a much better use of your time, I think. Remember that "I don't know" is an acceptable answer during a job interview, particularly if you can demonstrate that you know how to find knowledge that you don't have.    As for the easy vs hard questions throwing you for a loop, my advice is to stop and THINK for a bit before answering, and ask for clarification if need be. Never assume that you heard the interviewer right the first time. This will be much easier if you stay calm and relaxed during an interview. Most of the time I take before a job interview is actually relaxing, not studying. From what you're telling me, it sounds like you're quite nervous during interviews and employers are seeing that.    An interview is just as much a test of your demeanour and personality as your technical abilities.       Thanks! I do often forget that bit about "I don't know" and I should use it more.
  2. Rememberant

    Getting Destroyed in Programmer Screeners

    Thanks everyone for responding and such. Its helping.     So, that sounds very much like they are looking to see how comfortable you are with actually implementing and understanding data structures, rather than just using libraries. Yes, you probably won't be writing your own systems (and arguably, most of the time, you shouldn't be), but making sure you know how to as an open-book question seems reasonable to me.       Right, definitely understand WHY its being asked. I understand the importance of heap vs stack allocations and such. I know how to override new in C++ and all that jazz. But the inherent issue here is that the solutions linked in that thread are exactly how I did mine. Well technically, not exactly, but in the same vein with the bit manipulation and such. An extra map may or may not invalidate the question but the question NEVER specified if it was or not.   Now, my solution definitely wasn't perfect. I spent hours on it trying to cover all kinds of edge cases and stuff which indicated to me thats not the best method. If there are edge cases that constantly crop up, the design is poor.   So when I turn around and show these questions to other people - the responses are either so wildly different, they don't understand the question themselves, OR the worst kind of response - they "scoff" at it and say something like "You dont need to do any of that. Premature optimization is the root of all evil" completely misusing the quote (eg ALL of stackoverflow). So I have no idea what the optimal solution is and I've spent even after this interview mocking up about 3-4 alternative solutions. Issue is, I can't tell you which one they would've preferred or why they denied me in the first place. It drives me bonkers. I don't know what to do!   10 is not yet a large enough number to draw many conclusions from.  Unfortunately the industry you're attempting to enter has limited positions available and an over-abundance of candidates, so even if you're answering all of the questions perfectly and returning the test promptly you may not get the position.  Perhaps there are more qualified candidates (with actual industry experience, additional training, whatever), perhaps you got one question wrong and someone else answered perfectly, perhaps you answered perfectly but your test wasn't even looked at because they just proceeded with the first however many other tests also answered perfectly and yours wasn't one of those ,perhaps another candidate knows the recruiter, and so on and so forth.       The whole point of a screening process (however it's conducted -- testing is just one method) is to minimize the amount of resources used to find the right candidate.  Unfortunately that means that there won't ever be feedback if you aren't accepted for the next stage, as that would require additional time and effort from the recruiter.     If you feel like you're doing reasonably well on the tests, you have a good portfolio and you've got a good relevant qualification then it sounds like you're doing everything right.  I would suggest you simply continue trying to improve your skills and keep at it -- unfortunately you'll probably be rejected many more times before you get in, but if you stick at it you should get there eventually.     It does sound like lower-level development may be a weak area for you, and whilst that won't be a problem with all recruiters and for all positions it's an identified weakness that you can work to improve.       One of examples I mentioned above for why another candidate may be chosen before you is that they might have inside contacts -- this is quite common, and if at all possible you should put some effort into trying to make yourself that person who knows someone -- network with members of the industry to build contacts and get your name and portfolio out there.  If you have an active local IGDA chapter attend some meetings.  Attend industry conferences and make sure you make the most of opportunities to form connections.  If you're active on Twitter follow industry members and watch for opportunities to interact with them in a positive way.  Continue everything else you're doing as well, but also try to be that guy who doesn't just get in because of what you know but because of who you know.     Hope that helps!     That's 10 screeners since graduation. I've done more previously over 2 years hunting internships while in school. I had at least a dozen more prior to graduation. So in reality its kind of closer to 2 dozen screeners or more. I would actually maybe make an argument for one particular screener I had that asked me to optimize assembly code. I was a sophomore in college. I want to know what school does that and I would love to go there! We were only just being introduced to assembly and even though I spent a good amount of time outside of class learning about things like cache optimization and register manipulation, I still to this day don't immediately recognize how to manipulate that code. And yet again, I still don't know who to turn or what reference I can learn how.    "it's an identified weakness that you can work to improve."   And and day/night I'm working on improving that. I just am finding it ridiculously hard studying/juggling both high level and low level programming concepts at the same time. One interview I recently had that I referred to in the OP was WAAAAAAAAAAAY easier than that I initially anticipated and we covered so little content that I may have completely goofed some of the questions. So its like burnout. I can talk about all these little details about cache, bit twiddling, implementing the queue in a static byte array, blah blah - but then you ask something simple like.... re implementing a particular math operator without using said operator and I choke a bit. Not because I don't know it, I've done it before, I've read it before, but because I haven't done it in so long and my mind is somewhere else entirely due to preparation. I don't know if maybe my issue is memory or something. Like I'm all prepared for deep technical questions but ask me a question in an area that I otherwise would be ready for, and I may likely break down. Its akin to what everyone hates in school: you have a bunch of big exams in various classes right? Then you sit down in some other class and BAM - pop quiz. The content is nothing like what you've been studying vehemently over the past week or so and its like the Twighlight Zone. Your mind is everywhere but nowhere at the time. Its so frustrating and I don't know how to combat it.   One story - sorry for making this long - was definitely me setting myself up for failure. And I've learned to never do it again, although obviously too late.   So my internship ended and I went back to school to graduate. I was SO EAGER to jump back in that I sent applications flying at my ideal companies. One company, the one I wanted the MOST, got back to me so fast that I was completely caught off guard. And stupid me scheduled it immediately without really considering how rusty I now that work had just ended and a lot of the stuff I had been doing recently wasn't going to help. So ontop of school work that was entirely unrelated and all this other stuff, I went into this interview having crammed several days prior. I nailed some of their harder questions in what was like a 30 minute fast-round of technical questions over the phone - almost 15 questions total, but I completely bombed the easier question that I nearly was on the verge of tears after I hung up. I said some of the most dumbest things not because I didn't know the answers or because I was too green and didn't have the experience with the topics, but because I panicked at not knowing the immediate answer and immediately started to think of some recent work to pull the answer out of. One question was something like "whats the maximum number of children a binary tree can have." That question is so drop dead easy, and I just didn't expect that kind of question, that I babbled and visualized my recent work in AI. AI search trees are not binary trees and have like an infinite number of nodes, there is really not strict limit besides N actions an AI can take at any given junction. Stupid me panicked, didn't know what to say. Any programmer should immediately nail that question. I just had a super rough interview/day/week/month. I curl up in bed at night and cringe at that interview. It was with my all-time-dream company too, which will not go named here, and I bet I'm like on their red-avoid-at-all-costs lists (sarcasm). That was AWFUL.   But that kind of summarizes the position I'm in and I don't know how to cope with it. No interview I've had since has been as bad, I've assured that to myself. But its like I don't know how to combat those situations. Hard questions - I can solve them but inadvertently, some of the easier questions, I've now kind of overlooked and come off as completely stupid and uninformed. I recognize I need to slow down in these cases and not over complicate things, but it doesn't always solve my issue, and at times I don't feel like the interviewer(s) don't recognize this can happen. So that interview I had can't happen again for another year because I goofed. They, and rightly so, shouldn't want someone like me who would goof so easily. But I can't sit for another year unhappy and jobless either.       Grr, editor ate my post.    Keeping sharp on languages and math is important.   It is good for you to do what you described, studying the questions they gave you so in future interviews you can handle that style of questions more easily.   For keeping the languages sharp, I've found it useful to re-implement basic data structures and algorithms. This works well both for languages I know and for learning know languages. Implement containers like your own dynamic array, doubly and singly linked lists, heaps, trees, and more. Review twenty or thirty different sorting algorithms and why using quicksort is not always the best option, then implement a dozen of them. Crack open some of those CS books and do some of the programming exercises. This can keep you sharp in a language without too much effort.     Thanks for the input about the time. I definitely feel like even if the company that sent me that outrageous packet of information got back to me (btw, they STILL haven't after a month even after a followup email) that I would just say "not interested thanks".   I'm going to break my own rule here and mention one company by name - Disney Interactive - who has burned me a total of 3 times now over 4 years. They've contacted me, asked me questions, gotten back to me, confirmed another interview, and then just never showed up and no "sorry we've decided to move on". Waste of my time. How its not a waste of their time too is beyond me! But I feel like I should be more vocal about it, I just don't know how much more it will burn me vs hurt me.   Your experience of getting some that do appreciate that feedback makes me think I should speak up more. So thanks alot for that. I've been doing more of the reimplementing linked lists like dozens of times over in C++ that I've gotten so bored of it, but it has helped and I'm trying more of that as we speak (when I'm not on here anyway)       0. My advice is to bring demos to interviews. That's what I've done for every one of my in-person interviews (obviously couldn't for a phone interview ) and it's worked out pretty well so far.   1. A lot of the math might be implemented under the hood for you, but you will almost certainly need to understand how the math works to be able to use it in an effective and efficient manner. If you can't do even basic vector math from first principles, you're probably not qualified. Though you could always say "I could easily look this up" and then give ideas on the consequences of what the math could be.   2.  While asking specifics of how many cycles it takes to move memory between RAM and the cache(s) seems a bit odd, I could see them asking you this if the position was for low-level development on a console, where stuff like that starts to matter. It sounds like they're just testing your knowledge to see how much you know - you don't need to know absolutely everything. Interviewers will always push you until they find some gap in their knowledge, if given enough time. I think it's more likely that they're probing you to see if you understand why cache utilization patterns are important, particularly on modern consoles.   3. Depending on what you're doing, you will likely need to switch between 2-3 languages on the fly in your daily work, so this makes perfect sense to me. This is particularly true if you're on some sort of infrastructure team, like a AAA tools team or a build engineer. When I was a co-op I would often find myself debugging code in C#, C++, and Python all in the same half hour. You don't need to necessarily know a language in depth for this to work, since (again) you can always look stuff up when you're actually doing it.   4. This is probably a good thing, honestly. If you really know in depth what sort of questions are likely to be asked, then is that really a good test of your knowledge and reasoning skills? If you can "study" for an interview by practicing answers to likely questions, then you aren't showing your ability to synthesize knowledge, you're showing your ability to memorize the answer to a question ahead of time. The latter skill is very useful in an academic setting, but it's not worth nearly as much as being able to think on your feet.    The thing is, game development is a volatile field where you can expect to run into unexpected things a lot. We're in the business of inventing stuff, not building yet another business app. Being able to respond to the unexpected is a useful skill that's arguably necessary in some positions in the industry, particularly anything gameplay related (designers love to add, remove, and tinker with features at the drop of a hat).      I've worked on a couple of games that had data structures like that. That sort of thing is useful in any scenario where you want to avoid heap allocations - so quite often! Even in Unity you should be avoiding heap allocations during gameplay for the performance reasons alone. Heap allocation is slow, can lead to slowness (through cache misses), and in a managed language will eventually trigger a garbage collection run, which of course can lead to hundreds of milliseconds lost off your frame time.     I just feel there is a massive disconnect with what I can do in an interview room or one of these take home exam tests vs what I can do on the job. I don't feel MOST of these tests are doing a job of evaluating what I can or can't do in some of these subjects. It makes me seem like I don't know.... C# or something when I do, but its because suddenly we shifted gears and I'm put on the spot face to face and a whiteboard that I'm kind of jammed up. Put me on the spot with a strict deadline at work with C++/C#/Python, and you'll see sparks fly and the job get done. However, the "screeners" where they're supposedly testing this just doesn't seem to line up with what I'd actually be doing. So if I'm being tested on stuff that I wouldn't be doing on the job, how can anyone possibly make a correlation of how I would be on the job and getting those "sparks to fly" as I put it?   So example - a screener I received at home required me to redo a math operation (if you read the above I mentioned it too) without using said math operation. I nailed that no problem. I was able to sit, think, try it, didn't work perfectly, reevaluate, modify, test, perfect! It worked. Took me like 5 minutes no problem. So I guess thats one benefit of these take home tests right? Makes sense. But put me in a room face to face and we're looking at each other and I'm talking to you about it, doesn't work so smoothly for me. I just don't think the same and react the same. Took me like 15-20 minutes in a different interview, and I don't think they're too impressed.   I just find it to be very strange. Again I bring up MS and the other tech companies. Yes, they're bigger and probably have a ton of people applying so there is a bit of a different handling of how things get done. But they're ridiculously successful for the people they do bring on so their methods can't exactly be inherently weak either. It can be pretty volatile too I've heard and not too many realize that I think, and they can be just as cross-disciplined and low-level.   I'm aware of how its important to avoid heap allocations. I've aware of various methods of how to do that. But the question in particular isn't just about that. Its about a lot of different things, and nothing is immediately clear of what they expected/wanted out of that question even months after I answered it. I still don't know what the optimal answer is. I've re implemented 3-4 different designs and I can't really tell you which one they would've liked more. Perhaps NONE of them! I have no idea and may never.
  3. Rememberant

    Getting Destroyed in Programmer Screeners

      Like I said, the stuff I've been doing previously doesn't help with these tests thats why I'm looking for help and new suggestions.   I could make several more games and it wouldn't be related at all. I could go and make a dozen games in Unity or UE. Not one of them will improve my ability to "create a queue structure that has manual alloc and dealloc methods that do not use heap, but instead, a provided 2048 char/byte array as storage" I couldn't even force a scenario like that if I wanted to into an indie game. Why would I?   I guess maybe I'll make my own engine from scratch and learn Direct X or something and force myself to never use any of the STL libraries and wing it, which isn't bad to know, but DX going to just add to the pile of "general knowledge" and take quite awhile to do and not add any immediate knowledge for the first couple of weeks/months that I need for these tests, as someone who now is out of school and no job its rough.           I do the tests right away and send it back typically the next day after I get them. Earlier if possible, same day. Never implied I couldn't complete them in the time limits provided.         I don't send emails back and fourth. That's part of the issue.   for example maybe they made an error on the test or something but because I never asked I will never know - one studio handed me a math question which I had no idea how to do and could've come up with 3 different interpretations of the question. After being told off, I went to paid tutors and they're like "uummmm yeah it doesn't look like you can solve this." So what gives? do I email, do I not email? I don't email I can't decipher the problem (in question) so I fail vs I email and suddenly its about how to "interpret" the assignment so I fail. With no feedback, it makes it impossible to get good at that. At least, again, with that specific question that is one of the primary reasons I'm quite riled up about this. There are a bunch of stuff I could theoretically cover, but the issue is I don't know what to cover specifically and the people I expect to know how don't know either. Heck, WHO KNOWS if I did that question completely correct! Maybe it was the other 4 questions I got wrong. Maybe they just didn't like how I wrote code. I have no idea & I guess I never will. I can't get better at something I don't know I need to is what I'm saying.   EDIT x 19: Sorry if I'm venting while also asking for help at the same time. I don't mean to sound dismissive of suggestions, but I know they're unrelated so far in the my difficulties.
  4.   If we're discussing a position where alternative languages or competing technologies should be discussing (eg why is this compiler better than this compiler, or why would you use X database against Y) or something, sure, I can see why it would be asked.   But if you ask "Do you have experience with X" and its not on my resume, not on my previous jobs, not on the job description, I think its almost pretty much disrespectful and a total time waster for everyone. If the job description listed it as required experience, I would've just not applied and moved on myself. I would never apply to something that asks for, going with my example, VBscript when the position strictly listed C++/C# and my previous work experience matches the position details almost word for word :P I would list Vbscript if I had experience with it, and they should too.
  5. Rememberant

    Getting Destroyed in Programmer Screeners

        No nothing to do reading resumes. Here:         That test is a screener.   The way Microsoft or Google do a screener is they first have an HR rep reach out to you. Schedule a phone call with someone who will likely ask a technical question or two. That person might have you write code into a google doc live, basic questions. You do well with them, then they fly you out. Microsoft usually keeps it to one person who calls you while Google I had two people - HR and then purely technical screener.   A screener by game industry standards seems to be, at least 85% of my experiences, these "take home technical tests" or question packets before you talk to anyone. Such as the 50 question test I got from a company. Sometimes they're essay based, sometimes they short function questions, sometimes they're entire system design questions. One asked me to do a big diagram for some network backend system - databases and all - and I had yet to talk to anyone about the position and why I would even be asked a question like that. The point being, they are magnitudes more demanding and detail orientated than I've experienced before with any other companies. I feel really unprepared whenever one of these tests come my way out of blue, their topics are all over the place, and when I don't get feedback after spending 8 hours of some system design and implementation, its completely defeating.           I guess first contact person. Its usually an HR person who just sends the test. Most of the time, I don't even get to talk with the HR person. Its just "here's a test and how long we expect it back." There have been one or two studios where the HR person talks to me on the phone, asks me general behavioral and previous experience questions, maybe a technical question or two, and I go much further in those scenarios than I do the blind test or "screener" as I've seen it referred to elsewhere. I think part of it is that I feel much more confident talking to a person and being able to clearly ask questions about what is being asked of me, then some test where obscure questions with dozens of interpretations can be made, and sending emails back and fourth talking about technical details of a question isn't conducive.
  6.   THIS.   So much this.   I've had it with job listings that don't mention desired skills and out of nowhere, derailed by a question about a language you've never touched. Not on your resume or listing. "Hows your VB skills?" me: "Excuse me?"
  7. Advice I had been given for years by recruiters while still in college was "work on your portfolio, publish games, get your own experience, get noticed."   That has worked to some extent. As a graduate, I've been getting "cold" opens from recruiters from all over. They send me a test without speaking to me at all, very opposite of regular job recruitment processes at the like of Microsoft/Facebook/Apple/ect, and they're massive. Like, 4-10 hours massive. One game shop sent me a 50 question short answer, essay, math, and programming test. So, without even getting to talk to someone about the position and the team, I'm getting subjected to lots of work for a position that I may not even like the sound of off the bat. Its a little weird. And the advice given is not conducive at all. I've made games in Unity, Unreal, Construct 2, XNA. I have published some and have prototyped many. But almost none of that has given me the experience and knowledge necessary to push through these screeners to even talk to someone it seems. The amount of vector math theory expected has been pretty mind boggling to me. These engines almost entirely hide those theories and automate it for you, so when these screeners ask to implement them, I tend to get stuck. I eventually come up with answers that I can test and they seem right and when I look them up to check they work out.   But obviously something is wrong because at least 10 screeners I've gone through now since I've graduated,  the normal response is "Oh sorry, we've moved on with other candidates." No feedback, no obvious issue to me how I can improve other then general stuff. I've revisted tough questions that really eluded me such as some deep vector math questions which I admit I definitely need to improve on in general. But there are questions I've had where even presenting them to paid tutors (spent $150 total just to learn what this question was asking from 1 test), and still not get an explanation as to how to solve some of them optimally.   So I'm not sure what to do about the screeners and for the screeners that I do get by is another issue: I just find it weird how there are books dedicated to job interviews from Microsoft and such, but interviews in game programming require a seemingly random amount of knowledge for a graduate or junior programmer.   If I get past the screener, I then go into the phone interviews and there its "anyone's game" it feels like. I've been asked cache->ram cycles off the top of my head on one interview, another interview asked about a plane projection algorithm to be verbatim, a different interview wanted to know specific information about mutex locks and flags. I have experience or general knowledge I can talk about in all these areas, but I really struggle to regurgitate specifics on the spot. Some interviews, say for tools or generalist programmer positions, switch gears from C# to C++ to Python super fast and that throws me off too because its not like I don't know them, but to study 3 different languages in detail for an interview is seriously tough. I'm not exaggerating when I say these interview topics, regardless of the position, feel like total crapshoots as to what is fair game to ask. Its SO MUCH material at varying degrees of detail. I have an upcoming interview next week and I couldn't tell you the kind of questions I might get asked despite having already spoken to someone on the job. When I went to interview with Google in person, I knew the kinds of questions they would ask which doesn't necessarily make it easier but it makes it so much more approachable and I don't feel like a panicking mess when I get asked questions.   I'm going to keep trying no doubt. I definitely feel like I'm getting better at every screener I do and person I talk with. I'm super close. Heck, the interviews in progress right now I might have in the bag I hope, but the sheer variance/scope and time demand is throwing me for a loop. And at some point, I'm going to run out of studios to apply to believe it or not. I'm close to the point where if something doesn't open up soon, I'm not going to have any more applications in the wild.   Does anyone have suggestions or personal experience they can recommend? Right now I'm:   going back over screeners asking for second opinions I'm reading the heck out of several Vector Math textbooks and Engine programming books from Jason Gregory @ ND every day. I have most of Cracking the Coding Interview committed to memory, but those kinds of questions really never get asked to my dismay - only at MS/Facebook/Google as I've mentioned And I try to watch one or two programming talks when I can. Trying my best to keep both my C++ and C#... sharp. Sometimes if I spent too much time in one language, I get rusty in the other And I've kind of stopped prototyping and indie game deving in my own time. again, I've found it to not be helpful in the slightest getting past these interviews and I no longer have the time commitment to spend if I'm studying like a madman X.x   EDIT: And yes, I've read the FAQs. I've been/read/participated in most of those talks/discussions years ago or watched plenty of GDC/Gamasutra talks
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!