This is why we only hire coders by internal referral. Nobody wants to be the one to let a slacker weak link onto the team so we only recommend people that we know for an absolute fact will be able to perform.
Pisses off HR no end that they can't gatekeep but fortunately the CEO has our back.
Interviewed an early-20s chick candidate a couple weeks ago for my team that works on a 3d rendering engine. She was currently working for a well-known company and had been there on a multi-year internship while working on her degree.
She was nice, but really vague on most of her answers. Then we get to the quick weed-out coding example where she's asked to write a function that does a 2d vector rotation around the origin, where we provided the rotation matrix and gave an example of how to multiply a vector by a matrix.
She got to choose her language (C# in this case). The tool we use provided her with a "Hello World!" main() function. She was utterly lost. Kept trying to use Unity libraries to do the rotation, and didn't seem to understand that we expected her to write the function herself. After she flailed for a few minutes and it was clear that she wasn't going to get anywhere, we helped her get a shitty program working that did the job.
After this, we asked what sort of position she was looking for and she was very clearly expecting to get an intermediate-level SDE gig. We said thanks.
It's unreal. This girl had no idea how out of her depth she was because I'm sure she'd been coddled her entire goddamn life. The best thing we could have probably said to her was, "you really need to up your game" but it probably wouldn't have done any good.
I gotta admit I hate those coding tests. I work much better when there aren't any one looking over my shoulder and I can occasionally refer to my notes/prior work.
Yes, I can easily code a login handler and db look up and all that other shit. But I dont really want to reinvent the wheel every time.
I've been coding for 40 years, but I use such a variety of languages and IDEs that if you asked me to code on the spot with no computer, I'd look like a complete mess. Sometimes when switching languages I struggle to properly syntactically write a for statement.
and I can occasionally refer to my notes/prior work.
Say so during those tests. You are encouraged to talk during those tests. "Hey, I wrote something very similar for X, I would look up which library I have to import and how the function is named. Alternatively I would look up the API to get the function name".
It isn't really important if you forgot if you access a vector's size by .size or .length (well you should know that in your language of choice, but you get the point). A good interviewer would then tell you if it's .size / .length to keep you going and not weight it against you.
Same with the example from OP - if you forgot how the 3d rotation matrix around the x-axis looks like... say you would look it up. If you want bonus points say where the "1" is placed, but where you have the "-" is ... not important to your skill as a programmer.
I hate them too, and I've been on the other end of them where I just had a complete brain-fart and whiffed it.
But damn, you would be amazed at how useful they are to weed out people who are clueless.
In this case we weren't going for a gotcha, it wasn't any sort of trick question. It was a very basic 2 or 3 line function to take a vector and an angle and perform a transform on it, and return the result.
It would be one thing if someone were looking for a junior gig and would expect a lot of hand-holding. It's something entirely different when they think they're a mid-level developer, and they have this perception only because nobody in their lives have ever told them that they don't know anything.
So I only had somebody explain to me how matrices are involved in 3D rendering in passing about a decade ago, but just to clarify, that task is the absolute basics of the basics, isn't it?
Look at this wiki page. They gave her the first R (the 2x2 matrix with sin/cos).
They showed her how matrix-vector multiplication works (the Rv = stuff example).
And they wanted her to program that. Basically this:
Of course you can do more fun stuff depending on your language of choice (pass by reference/copy, initialize vars, ...), maybe you have to import a math lib for cos/sin, ... but that is the absolute basic.
It's "Here's a math formula, please make the PC do it".
3d rendering is basically 2 things: 3d math, and shuffling large amounts of data from main CPU memory to the GPU, and doing it efficiently.
The 3d math is frequently so basic that you do it once and then never touch it again through the life of the application. But multiplication of a vector by a matrix is absolutely fundamental and we even tell them how to do it. All they have to do is write the code.
Wait, she had to take your equation and make it into code? That's it? Even if I didn't know the language, I could look up tutorials and make something out of it.
I didn't even go to school for coding and I could probably do that. That is pretty damn sad. I've been fortunate to have some competent women as coworkers, but it doesn't surprise me that it's that bad in a field like that.
This is why we only hire coders by internal referral. Nobody wants to be the one to let a slacker weak link onto the team so we only recommend people that we know for an absolute fact will be able to perform.
Pisses off HR no end that they can't gatekeep but fortunately the CEO has our back.
Interviewed an early-20s chick candidate a couple weeks ago for my team that works on a 3d rendering engine. She was currently working for a well-known company and had been there on a multi-year internship while working on her degree.
She was nice, but really vague on most of her answers. Then we get to the quick weed-out coding example where she's asked to write a function that does a 2d vector rotation around the origin, where we provided the rotation matrix and gave an example of how to multiply a vector by a matrix.
She got to choose her language (C# in this case). The tool we use provided her with a "Hello World!" main() function. She was utterly lost. Kept trying to use Unity libraries to do the rotation, and didn't seem to understand that we expected her to write the function herself. After she flailed for a few minutes and it was clear that she wasn't going to get anywhere, we helped her get a shitty program working that did the job.
After this, we asked what sort of position she was looking for and she was very clearly expecting to get an intermediate-level SDE gig. We said thanks.
It's unreal. This girl had no idea how out of her depth she was because I'm sure she'd been coddled her entire goddamn life. The best thing we could have probably said to her was, "you really need to up your game" but it probably wouldn't have done any good.
I gotta admit I hate those coding tests. I work much better when there aren't any one looking over my shoulder and I can occasionally refer to my notes/prior work.
Yes, I can easily code a login handler and db look up and all that other shit. But I dont really want to reinvent the wheel every time.
I've been coding for 40 years, but I use such a variety of languages and IDEs that if you asked me to code on the spot with no computer, I'd look like a complete mess. Sometimes when switching languages I struggle to properly syntactically write a for statement.
Say so during those tests. You are encouraged to talk during those tests. "Hey, I wrote something very similar for X, I would look up which library I have to import and how the function is named. Alternatively I would look up the API to get the function name".
It isn't really important if you forgot if you access a vector's size by .size or .length (well you should know that in your language of choice, but you get the point). A good interviewer would then tell you if it's .size / .length to keep you going and not weight it against you.
Same with the example from OP - if you forgot how the 3d rotation matrix around the x-axis looks like... say you would look it up. If you want bonus points say where the "1" is placed, but where you have the "-" is ... not important to your skill as a programmer.
I hate them too, and I've been on the other end of them where I just had a complete brain-fart and whiffed it.
But damn, you would be amazed at how useful they are to weed out people who are clueless.
In this case we weren't going for a gotcha, it wasn't any sort of trick question. It was a very basic 2 or 3 line function to take a vector and an angle and perform a transform on it, and return the result.
It would be one thing if someone were looking for a junior gig and would expect a lot of hand-holding. It's something entirely different when they think they're a mid-level developer, and they have this perception only because nobody in their lives have ever told them that they don't know anything.
I have never sat on the other side, but I understand why they are used nonetheless. Though I still hate them.
So I only had somebody explain to me how matrices are involved in 3D rendering in passing about a decade ago, but just to clarify, that task is the absolute basics of the basics, isn't it?
Fuck you pal, I'm a welder, not a mathematician
My two younger coworkers wanted to give her the next interview. =\
I mean, she was a solid 7.
Look at this wiki page. They gave her the first R (the 2x2 matrix with sin/cos).
They showed her how matrix-vector multiplication works (the Rv = stuff example).
And they wanted her to program that. Basically this:
2dvector rotate(2dvector v, double theta) {
r[0] = v[0] * cos(theta) - v[1] sin(theta)
r[1] = v[0] * sin(theta) + v[1] cos(theta)
return r }
Of course you can do more fun stuff depending on your language of choice (pass by reference/copy, initialize vars, ...), maybe you have to import a math lib for cos/sin, ... but that is the absolute basic.
It's "Here's a math formula, please make the PC do it".
You're hired.
You'd be hard pressed to come up with a simpler question related to rendering. The only thing I can think of is scaling.
3d rendering is basically 2 things: 3d math, and shuffling large amounts of data from main CPU memory to the GPU, and doing it efficiently.
The 3d math is frequently so basic that you do it once and then never touch it again through the life of the application. But multiplication of a vector by a matrix is absolutely fundamental and we even tell them how to do it. All they have to do is write the code.
Wait, she had to take your equation and make it into code? That's it? Even if I didn't know the language, I could look up tutorials and make something out of it.
I didn't even go to school for coding and I could probably do that. That is pretty damn sad. I've been fortunate to have some competent women as coworkers, but it doesn't surprise me that it's that bad in a field like that.