Programming interview FAIL

Started by
5 comments, last by pressgreen 10 years, 8 months ago

So I have read many of the FAQ and how to break into the business of games on this forum which are very informative. After much reading I went and looked at questions that interviewers ask to find out if programmers know how to program and OH MY GOD. I have to admit I am kind of speechless lol. I thought I knew something, wow WAS I WRONG.

I have recently, completely written my own game engine using C++, Opengl. It can import any type of geometry file type. I have a fully operational scene graph to manage my game objects and animations. I have written a math library that include Vectors, matrices, quaternions, and the combination of all these into my own Rigid Body Transformation class which i thought was totally awesome lol. I have created glsl shader programs to implement effects such as bump mapped textures, specular, Cube map shadows, Ambient occlusion, super sampling, and even vertex displacement for like cool distorted lens affects. I am also using physX for all my collision detection, character controllers, projectiles and what not. All while trying to keep the cleanest and commented code calligraphy.

I am so passionate about learning how to be a better programmer and the whole game development process but after reading this article I feel like a complete failure.

Five-Essential-Phone-Screen-Questions

I do how ever feel like I could probably accomplish many of the exercises form this article

Programming-Interview-Questions

The thing is I am not a CS graduate So i guess many of the questions are just common place for some one with a 4 year CS degree. I mean I think what scares me the most is that I don't use many different languages. I pretty much only use C and C++. I have made a few silly apps to calculate things for my android using java and xml but nothing like serious. But reading a C# program is pretty easy i mean it all looks very familiar as well as Python and Java. But I think if i was asked some of those 5 essential phone screen questions i would be done LOL, like never seeing the inside of an interview office. I have a masters in architecture and while in grad school had taken a few CS classes, but for the most part I have taught my self much of what I know. I really want to try to work with a game company, and reading the forums because i don't have a CS or equivalent degree I need to have something to show i can do what is needed. But I feel like i wouldn't even be able to make it past phone screening. I have come such a long way with it and i love this so much but I am not sure there is a place for me. Like with all that I feel i have learned i don't think its even like a tenth of what a programmer is expected to know. and to play catchup on all that i feel at this point might be a little futile i mean I'm 32. I feel a little beaten at this point and the only reason i am placing this post is i don't really have any one to talk to about this. All the people i know are architects making buildings. Buildings are is soo boring to me. Every time I get even a small function to work I feel like the KING OF THE UNIVERSE. And as much as i would absolutely love to learn every subject discussed in those five essential questions, in and out, i just don't know if i have time any longer. plus i also read an article about how even programmers with years of experience are often passed up because of their age these days. so I don't know, perhaps i am psyching myself out or perhaps i am just now seeing the light.

I guess my questions is what do I do just keep studying and continue making programs to prove myself. Is making programs really enough to show like i know how to program? and on top of making things do I also need to crack open my copy of "The Art of programming" while knocking out every one of those topics discussed in that Five essential articles. I think at this point i need to pic and choose my battles. Like what is the hierarchy of importance or do i just need to know everything?

J-GREEN

Greenpanoply
Advertisement

As someone who has done SE interviews, I can tell you a working demo of the game engine you described would trump any of the "Acid Tests" listed in that blog. If someone asks you something you don't know, don't try to fake it... Admit you don't know, and ask intelligent questions about the topic.

Any good engineer can teach you the difference between overloading and overriding (or whatever) in five minutes. What can't be easily taught is the work ethic needed to complete a complex demo on your own. Plenty of people can talk the talk, then fall apart when they actually have to write software.

I think the Five-Essential-Phone-Screen-Questions describe pretty much what I experienced myself in the interviews of the companies I worked for and what I would expect in future interviews. So I would practice for these kind of interviews. Don't be worried about it. If you were able to achieve all these things you described above you should be able to learn this.

If you've done what you say, you actually understand it and didn't just copy & paste, and its reasonably well put together, then you probably don't have anything to worry about if you were to try and go into game development. But, on the other side of the coin, the things you list are fairly straight-forward and fairly narrowly focused too, so its really difficult to say exactly what it says about your skills without seeing the code and how its organized.

What I mean by that is that the things you list *could be* something that a moderately-experienced programmer with no real graphics experience could knock out in a week, or *could be* something put together by a dedicated amateur over months. It *could be* something wholly more amazing than that. The answer that an interviewer is trying to suss out, is which one are *you*, and how does that fit with the companies needs. Its not even a linear scale when other business concerns come in, like cost of employment -- if they need an entry-level guy to knock out gameplay code for 50k/yr, then the dedicated amateur might be more appealing than the guy with the amazing code. On the other hand, if they need a mid- or senior-level engine programmer...

Ultimately, you will always be well-served by knowing at least a little bit about a lot of things. It's this broad-based information that allows you to think laterally about solving problems, rather than forcing the problem into your particular toolset. Its exactly as the article said -- Ask a programmer who's sole experience is C++ to find all the phone numbers in 50,000 files, and they're going to write a monster C++ program that would take weeks to build and test; But the guy who knows even a little about *actually using* linux is going to jump straight to grep, or awk, or perl, and be done in an hour. Hell, even if you had only heard of grep and never used it before, just knowing that its out there solving problems like this, you could literally download grep for the first time, learn enough about it to solve the problem, and be done before lunchtime -- and you get to add grep to your tool-belt for next time. In this one example, knowing just a little bit of something outside your usual box just saved the company an entire week of salary!

Valve described their model employee as "T-shaped" -- that is, having shallow-intermediate knowledge of a wide variety of topics, with deep knowledge of one or more topics.

throw table_exception("(? ???)? ? ???");

My first interview as a C++ programmmer sucked. I answered some basic phone questions such as what does pure virtual mean and what is the vtable. The the actual interview I had to use a laptop that had visual studio set up with all RTTI disabled and I had to reimplement my own type system in code then I had to write a program that would convert a string containing a roman numeral into a decimal number. This stuff all went fine. However after this was the usual talking interview with the lead programmer.

The guy filled an entire white board with greek letters and then said "what is this eqution doing". This is where I failed.

Nowadays when I interview as a senior role I barely get asked any actual coding questions at all. I'm usually just asked "what do you know about scrumm?", "what can you tell us about test driven development?" and "What do you think about <insert exciting new tech here>?". The codeing questions I do ask tend to be more class architechture and design pattern oriented.

Ok, So after I climbed out of the fetal position and dusted my self off a bit, I went back to that article and read it again. Then I read a few other articles of what is expected of a programer. And I think I might have just gotten spooked because of the guys unforgiving tone in the article. I mean in his defense he is trying to get some one that can do the job and do it efficiently the first time with out bogging every one down from having to clean up after them or explain things all the time. Its just man he talks as though he is weeding out the mentally deficient.

"For example, you may find a candidate who decides that a Vehicle class should be a subclass of ParkingGarage, since garages contain cars. This is just busted, and it's un-fixable in any reasonable amount of training time."

I mean Its kind of hilarious as long as i don't think of the plight of the misinformed here lol. But after going back and looking at some of the concepts I am rusty on as well as checking out some of the languages programmers are expected to know I don't think that its unobtainable knowledge. I actually do believe that these are things that I should know. Who am I to walk in off the street and expect every one to dumb down the situation just for me. Also knowing these things are only going to make my work and work flow better. In fact your right, if given the problem "find the phone number in 50,000 files" I would have totally tried to write some nasty beast of a code in C++ instead of just using grep which actually seems pretty awesome.

I will say I am not trying to be the best programmer out there. I mean I don't know if I would ever apply to Valve as a programmer. I mean I know that Gabe says they have hired a kid that was working at waffle house when he got hired but that was like 10 years ago. I am almost positive there is an army of Massively talented kids banging down the door on that position. So lets face it, the new Mr eggs/waffles guy and I probably don't have a chance in hell to get hired there. But I do how ever want to be the best programmer I can be, and I do believe if I lean these things, in and out, it will definitely move me in that direction. I think what would be nice though is working with professionals and being able to see exactly how they code and their work flows. But i guess i need to be at a certain level of concrete understanding before that happens. Any ways if it's what I got to do, Then it's what I got to do. I enjoy it to much to stop now.

J-GREEN

Greenpanoply

This topic is closed to new replies.

Advertisement