In my quest to find a new job, I've had a lot of interviews. I'm talking
$interview = range(30,40);
In person, over the phone, quizzes, tests, projects - you name it.
So I figured I would share some wisdom to anyone whom may now, or eventually be in the same boat. Through this sometimes hellacious process I've learned a few things.
The best interviews that test my true abilities are project based ones.
I know it sucks, and you have to work for free, but doing an ACTUAL project is the best reflection of the real-world application of your role. I don't know about you, but when I'm on the spot during an interview, and someone pulls the pop-quiz out of their pocket, I freak. They may ask something like, "What's the difference between an abstract class and a interface?" Something I know well and good, but at the time I can't even seem to remember what a computer is, let alone what my own name is. My brain literally does an exit(); and I have to recompile it again.
While I'm on that topic, I think the pop-quiz format is the worst way to interview a candidate. (I'm talking to you employers!) In my humble experience you don't want to work for someone that enjoys seeing you squirm like that anyway. You want to work somewhere that cultivates growth and where you can thrive as a Developer.
Go back to the basics.
A lot of the positions I have applied for are all across the board. I'm a PHP Developer, so I've been applying for Full-stack, PHP Software Developer, Web Developer, Drupal Developer, Laravel Developer. They all have very different names but are all under the umbrella. PHP/DB integration, some JS frameworks, CSS3 and maybe some DevOps as a secondary function. Sometimes I really did feel like a ping-pong ball each time I had an interview studying between those things. I found though, what helped me most was going back vanilla concepts without the help of a framework and re-learning the fundamentals. If you have those down, sticking a framework on top of that will seem less like magic and you will truly understand what is going on in the background.
I read somewhere that Ryan Dahl the creator of NodeJS said something like, It's impossible to know everything, but you can push yourself to learn the system. (I can't find the damn quote anywhere, but even if he didn't say that, it's true.)
Alright, I'm talking to you again employers! With new frameworks, new hosting services, new workflow processes coming out every day, please for the love of god stop trying to find Developers that only have experience with your specific stack. If a Developer is good with another framework or CMS that's structurally the same as the one you need to do the job, they can learn it quickly. Technology is always evolving, and again in my humble experience you want someone that can adapt to new things quickly, just as much as you want someone to have experience working with your specific technologies.
The worst thing you can do is be nervous.
I know, that may be easier said than done, but when I look back on this whole calamity the first couple of interviews I had after I lost my job were TERRIBLE. My voice was shaking, I couldn't quite articulate things the way I wanted, and I was incredibly insecure about the things I didn't know. Fast forward a couple months, and each interview is like riding a bike and you get a little better. You have your script, but you also feel comfortable going off script a bit too. You have to look at from the employers' perspective. In their mind they're thinking, I have to sit with this freaking person for a long time and 8-9 hours a day. The last thing they want to do is sit next to some sweaty, shaking robot who sounds like they just digested PHP.net. As much as it's hard, just relax and be yourself. Strangely every time I feel like I'm not too interested in a position, those are the people that are scrambling to get me on board. Which brings me to my last point.
Never stop interviewing.
I loved the previous team I worked with, they were like family. I thought I would work there forever. I got comfortable after 6 years. Then BAM just like that, corporate restructuring had me out on my butt as fast as I could blink. I really feel like if I had continued with the interview process, I could have had a better leg up on some of the earlier positions I applied for. Who knows, maybe I would have found something better suited for me than before. The world is your oyster as they say. When you see something come across your plate that looks great, you gotta jump on those opportunities, or someone else will!
Good luck coders, it can sometimes be a jungle out there and you're not alone. I wish you all the success in your future, and may the force be with you.
Latest comments (32)
Love this article and loved that you are a PHP dev! Yay php! I totally freeze up on interviews. That exit() was a perfect way of putting it. Lol. I appreciate the encouragement and that I have someone else to relate to. I even write up a post about how the interviews we have these days just don’t work! Can’t remember where I wrote that but I will have to post it. Thanks again!
"Never stop interviewing." I have told people this for years. As soon as you have a role start looking for the next one. In two to three years you'll have the experience AND the connections to step effortlessly into your next role.
All the other points you make are equally as valid. Keep up the good writing!
I hated quizes when I was in applicants’ chair and I loved them when I was in interviewers’ chair.
Our industry is chaotic and emerging, there is no standartization at all. For other industries your degree matters way much more and there is no need to do such a check. When this will be true for IT, that would mean the boring times have come )
Ha, good point. I definitely learn something new every day. I do wish that problem solving skills were more accounted for in the interview process, so you don't get pegged to a specific stack when seeking a job.
I can see that as being as disadvantage for most companies.
However, since mine is a startup, offering (VERY) part-time remote internships. Since it's an early-phase startup, everyone (even me, the owner) gets paid in equity. That, plus our schedule requirements, had made this opportunity perfect for full-time college students, or for developers with full-time jobs outside of the tech field, who need to expand their experience before seeking a full-time programming job.
Thus, ironically, the downside you describe is actually an upside for us. If an applicant is unable to find the time to complete this challenge within a week, especially since it only requires a couple of hours of coding at the most, that precludes them from the company in most cases. If they cannot find a couple of hours in their schedule for independent work, we know they cannot find several hours a week to set aside for this remote internship.
That said, again, yes, our "take-home" coding challenge may not work for some companies, for the reasons you described. Even so, there is something to be said for keeping it simple. We've deliberately kept the spec minimal, and the goal heavier on the thinking than on the actual coding, so that it would be very rare in any case that someone cannot find a couple of hours to solve it. With occasional exception, even busy people usually have a few spare hours a week, often used for Facebook-browsing, game-playing, or Netflix-watching. That should usually be left for them to unwind, but this would be a one-time exception if they wanted employment.
Great stuff! I really wish there was a more uniform system in place. I've had a couple white board interviews as well, and wasn't too fond of it. I even had one that did a combo of all three. Whiteboard, 3rd party test, and written test in person. Although that was overkill, I would trade all the of those in place of a pop-quiz.
Now, for the record, I don't really grill candidates in a quiz-like fashion, but I will ask them to describe object oriented programming and a couple of other things; simply because, their philosophy behind it is more important and insightful than the technical definition. (One terrible applicant laughed, shrugged it off, and said "eh, it's just a metaphor, really." Full answer. Dead serious.)
Instead, I give applicants a week before the interview to do a legitimately interesting (and original) coding challenge in any language they like. They turn it in 24 hours before the interview, and we review it. Then, during final interview, we have them describe their design, and then fix a bug or make an alteration right there.
Perfect! I like it, and LOL at that answer. During a pop-quiz someone asked me what are the negatives of dependency injection patterns, and since I had just gotten done implementing DI in another test project and explaining its positives, that really sent me through a loop! Funny because I could have answered with my thought process alone: "It adds complexity".
Well, to play "devil's advocate" again, look at it from their perspectives. A lot of questions you/we would judge as a "pop quiz" question is actually the best, or only, way to probe knowledge of the more theoretical aspects of programming...especially those important to the job!
I was once asked to describe virtual classes, and why you'd use them over normal classes, in C++. That's theory, it can't be "whiteboarded", but I understand why he asked.
So, if those sorts of questions cause you to freeze up, it goes right back to your main point: practice. There's no other solution.
And that's what my original statement about "pop quiz" questions referred to; all the things that cannot be adequately measured by any other method in an interview. We have to ask, simply because there are a LOT of applicants who flat out don't know, and they'd be a liability in that particular position.
See what I mean now?
I would agree with that, but when it's a little more open ended it gives your brain a second to process the information and retrieve it from memory.
The interviewer is at a way bigger advantage to make a judgement call on this, because well, they know what the questions ARE.
So if someone asked me to draw and explain polymorphism for example, I could take some time to think about my answer while drawing it out. Unlike the 5 seconds you have to dig it out memory and describe it. All the while worrying about every second that goes by so you just start flapping your mouth with the first thing that comes to mind. LOL!
Sometimes just having an interviewer say "take your time" makes all the difference in the world.
Yes, but then all eyes on you! Haha it's just super stressful either way, definitely doesn't work the best for me. I do like the fact that it's quick though, so if you do well, you might be saving yourself a 6 hour project that you have to build out for free.
I have got an interview at AWS in a week. And although it was me who had applied, and as I read my own CV over and over again I see it’s all true, I can’t help feeling like a total imposter. It feels like the force have left me and I’m freaking out. Learn everything anew? But where’s the bulk of knowledge I had accumulated and where’s my confidence?
I have been there! Most people that really know their stuff feel this way, trust me. There's really no other career that completely 100% relies on your cognitive abilities, and being confronted with the failure of those on a daily basis as much as being a Programmer. It's a tough job and you have to be smart to do it! If you made it this far you can do it! Now you just have to convince them of what's on paper.
Thank you for the encouraging words. It was important for me to express my fears I guess, so that I could start working my way back to confident from there. Found this article useful too: medium.com/@coreyhowell/impostor-s...
I agree that it isn't (or shouldn't be) a deal killer if you mess up on some of the questions in a quiz. However, These kinds of questions kept us from pursuing individuals that looked good 'on paper' but didn't have any real skills in the environment we were in.
We had one person who had an impressive resume but, when asked basic questions about C/C++, couldn't explain even the simplest things. Needless to say we didn't take it any further with him.
Others, who at least demonstrated a moderate amount of basic understanding, we went on to ask more pointed questions in an attempt to see if they were a good fit for our specific environment.
Unfortunately a lot of people do fluff up their resumes for sure. What would be some of the pitfalls in your position as an interviewer to give someone a small project? Do you feel like the pop-quiz is more time efficient?
There are two primary issues I see with giving someone a project. The first is related to IP. Most of the stuff we develop is considered "company-secret" and not to be disclosed to non-employees. So, handing company code to an "outsider" is not allowed.
The second issue is one of time. First is the time needed to explain the development environment. Then there is the time needed to explain the product - and the piece the interviewee is to work on. Finally, there is the time required to review the code produced by someone not really familiar with what we are doing or how it fits into the overall system.
If we don't give a small 'project' related to our overall business, then how is it really different from a quiz of some kind? It amounts to handing some toy problem to a developer and seeing what kind of code s/he produces. And we still have to deal with the time element for the review of the code.
Great piece! As someone that is now in the whole interview process, I too get extremely nervous that I forget everything I've know through my years of experience. Last interview I couldn't answer a question and after I left, all the sudden I remembered the answer! So frustrating!! And also, I agree with the damn pop quiz. I prefer the coding challenges. And yes, also agree that all the employers want people that know the latest buzzwords in the business, instead of getting someone who can learn it really fast and take advantage of that knowledge for the company. That's what I've been stating in my latest interviews: "I may not know all of those frameworks, tech stacks, etc. but I'm the type of developer that learns fast and a problem solver
Literally every time! Sometimes even 1 or 2 minutes later. There's just something about being put on the spot like that, and knowing that it all comes down your answers that makes it hard to think clearly. Being able to sit down and think something though and come with a solution is what you're going to be doing on the job, and it seems more applicable. I wish you luck and I hope you find something great!
Nicely written!
I'm dying over this! I remember my first technical interview. I choked so hard they hung up on me! I sat down at the kitchen table after this and solved all the questions in less than 15 minutes. It was painful at the moment, but now it's a great story to tell when commiserating over the garbage fire that is the technical interview.
Haha! I completely understand.
For this specific one I mentioned, it went from about an hour of seeing if culturally it was a good fit. All good! Then completely out of left field I was prompted to go into the technical interview pop-quiz, which I was totally unprepared for. There were so many, "UHHHHHs" I lost count!
The silver lining though is all of the questions that were asked, have been tattooed into my brain. I actually did a lot better than I thought when I went back thought about my answers, but it was still a total embarrassment. I will say this though, if ever asked on the spot any of those questions again, I will have them down! :P