For anyone who has been turned down by 38 companies
blog.hackerrank.com
blog.hackerrank.com
Because of this, I tend to apply at jobs where my hiring is a slam-dunk because it's so routine and easily within my skill-set.
It results in jobs that aren't particularly fulfilling but gives me plenty of time to work on technology I'm interested in my spare time for personal projects.
In essence, a day job of simple Linux administration may pay the bills, while in my spare time I'm working on large infrastructure automation, deep learning, developing new blockchain technologies, etc.
I don't know how sustainable this is. I have three children and a wife, and I'm getting tired of only being paid for work I can do while asleep just because I'm afraid of rejection.
Any suggestions on how to "toughen up"?
1. Take mock interviews from experienced engineers
Go one topic at a time e.g. Recursion or Trees or DP or Multithreading etc. Before you walk into the interview, practice well. Do at least 20 problems on that topic, if not more.
2. Do practice interviews at companies you don't want to work for
Don't feel an imposter in doing this. Realize that companies also go thru several candidates before they pick one. They are normal people like you, they have a learning curve to fill the position, and so do you. Finding the right company, at the right stage of your life, is not a trivial thing to do; it's a project and needs to be managed like that.
Going thru various interviews hardens your skills of negotiation, your understanding of business models, and more importantly, gives you clarity about what your strengths and limitations are.
3. Practice the right mindset
Never go to interviews with a loaded agony of getting a job. Go simply with the intent of solving interesting problems with interesting people ("to add life to your character"). Nobody explains this better than Bryan Cranston (possibly one of the most successful TV actors of recent times): https://www.youtube.com/watch?v=v1WiCGq-PcY
I make these observations based on my experience running a successful bootcamp for interview prep (http://interviewkickstart.com) and also being an early engineer and a hiring manager (Director of engineering) at Box prior to that.
[Edit: specifically mentioned Bryan Cranston by name, based on the comment below]
That clip just increased my already substantial respect for Bryan Cranston, though I feel as though calling him the "meth guy" does him a disservice. Yes, Breaking Bad brought him a great deal of exposure, but I think that even his role in Malcolm in the Middle showed how capable he is as an actor. The fact that he performed both roles excellently is also a testament to his skills.
He's also won a Tony, and was nominated for a few director awards. (https://en.wikipedia.org/wiki/List_of_awards_and_nominations...)
I think if more people took this attitude of employment being an arrangement of mutual benefit that both sides are engaged in, the world would be a better place.
It absolutely is a two-way street, as you describe. When I go on interviews, I get into the mindset that I should interview them as much as they interview me. It's actually saved me from taking on a couple of bad roles.
The other option is to look for companies that put emphasis on past projects, open source contributions, take home problems etc and apply to those positions. At least this way, he can spend time making things he is interested in.
However, once you start practicing, a funny thing happens: assuming you're doing it the right way, with the right mindset, you start to enjoy doing those problems. Your intuition hardens and a certain level of system-design clarity sets in by seeing similar problems across topics.
In some ways, that's what I'm looking for as a hiring manager, by definition: do you enjoy a problem that is new to you, but still up your alley? Do you have an urge for efficiency? Can you express your thought process and work with me to build a solution? The problems asked in the current interview process are good enough to tease these things out.
Take home assignments and OSS contributions are also another credible method of interviewing, and has its own pros and cons. To see a good treatise on different ways of interviewing, see this: http://www.gayle.com/blog/2015/6/10/developer-interviews-are...
You're in a position where you have a job. Anything you interview for you -don't need-. You may want, but you don't need. You also sound very comfortable in a specific role. That's a great place to start from, because if someone rejects you...what are they rejecting? How does it effect you? You know you're good, at least in certain areas. Either they don't need your knowledge in those areas and aren't convinced you'd be an asset in others (which is fair, and a reflection not on your abilities but your experiences), or their process is broken. Neither is a reflection of you.
I've gotten a lot more comfortable in interviews just recognizing that, that I have successes under my belt, I've already proved I can learn and adapt and get difficult things done. So if in an interview I don't get an offer...that speaks more of their process, or the minutiae of what they're looking for, than it does of my capabilities.
And what's funny is that that devil-may-care attitude, has made me both more willing to speak confidently about what I can do, -and- to more readily admit what I can't. I don't fumble and stutter when asked do I know about (a thing I don't know about), and give some half-truth, I just flat out say "I don't. What is it?" And that has led to better interviews, and more offers, than I ever got when I was a scared junior dev looking for work.
I believe this is called having a great BATNA. You always want to have a plan B, and preferably a plan C. That's why you should always be networking (and, if you are a company or hiring manager, always be recruiting: http://avc.com/2012/07/mba-mondays-guest-post-from-chad-dick... ).
I find that contracting is a great way to practice "not giving a damn" because you can cycle through 3-5 contracts (of various sizes) in the time that 1 w2 job would take. That means you get all kind of experience with different colleagues and processes and tech sets.
Also, the act of repeatedly putting yourself out there will thicken your skin and let you realize that sometimes it isn't about you, but rather is about the company/client.
That's to say nothing of the benefits of learning to run your own business and marketing and budgeting. (If that floats your boat.)
Interviews are much like tests in school. The pressure is high, you only have a moment to recall the information and act correctly, you have very little leverage over the situation... and in both cases they are probably poor indicators of what is being measured :-)
Maybe the similarity to tests in schools is the origin of programming interviews came to be the way they are...
And more than that, the interview process is also to determine if you actually want to work for them. You can reject them, even if they want to hire you. Interviewing becomes a much more symmetrical affair. You have power too. You can afford to say no, and you can afford them to say no.
Like someone saying "I don't care" implies... yes, you do care, otherwise you would not state such a thing.
Obviously, "not giving a damn" is hyperbole; as I said, if I really didn't give a damn I'd not be interviewing in the first place. But it is the most accurate description of the attitude I find myself having when interviewing. "Toughening it out" was what I did as a college student and junior dev, trying to fight the impostor syndrome as I try to convince strangers I'm worth hiring, and trying to hold down the feelings of depression and self-loathing afterwards as I criticized every single thing I did that I thought was a mistake in the interview (even successful ones that in hindsight I realize I absolutely aced), and tried not to think about how I just blew my chance at a dream job (because every company that I talked with was a dream job, after all; someone who would actually -pay- me to write code and solve problems!)
I instead describe my current attitude as "not giving a damn" to demarcate it as very much different than that prior experience; my feelings now are "I am good, I know a lot, I learn fast, and I have a track record to prove it, and if you say no it means either you want someone with different experiences who is looking for something very different than what I am, or you've been interviewing for (and thus hiring for) the wrong thing; in either case I don't think I'd enjoy it here. So, while I hope this works out in the affirmative...I will view a 'no' from you as a positive as well, because it tells me more about you than it does about me. Regardless of your response, I am relieved to hear it, hence, I don't give a damn what it is".
I had stage fright. In several weeks I'll do my second public show, for a small audience. It can really turn your view of yourself around.
You can read books about it, but you have to do it, experience it. It's much less frightening when you do it then you think, because of the small steps. But you need a good teacher here, one that knows what he does and has done it for years. In general, it's really fun!
* Try to get ahead in your day job. This doesn't necessarily mean making the big bucks. It means being someone who deserves the big bucks. To find better work and more money you'll probably have to leave. Maybe not, but probably.
* Find new jobs through word of mouth, networking, etc. In my experience, this does not equal a slam dunk hire, but it'll get you an interview and they will actually converse with you. They want to find out why you were recommended, and that's a whole different feeling that being "screened".
Potential sources of recommendations and job leads include former coworkers (and bosses!), people you meet at user groups, interest groups, etc.
My advice is go on interviews you don't even care about in hopes to get rejected. Some places might tell you to leave like half way through an interview which is awkward, but most will shoot you an email or you just never hear from them.
Once you get a few rejections under your belt, you learn its not a big deal. I've know some incredibly smart people get rejected. Most times you get rejected because its not a culture fit so its for the better.
This was an immense help when I recently decided to switch companies. I applied to places I didn't really want to work at so that I could either:
1. Get rejected and get used to hearing/reading those words while not taking it personally.
2. Work on my negotiation skills if I actually got an offer.
Either way it was a win-win for me in terms of what I was really trying to achieve.
You may come across a dream job posting one day and if you can block out the worry of rejection you'll have a higher chance of success.
Up until recently I would take two or three interviews a year at minimum just to see what people were asking about, how they asked, and just to stay comfortable with the process.
Worst case scenario, they say no, and you might get a hint as to why. So now you have an idea of something you can improve on.
Best case scenario you wind up interested in a new company, get a raise, and learn something new.
Either way, it's time you're spending to improve your career- and it is likely more monetarily valuable than the same amount of time you would have spent writing code.
Keep doing the admin work to pay the bills. Switch off when you leave.
Work towards turning the other work into a viable consultancy/small business.
Stop thinking like an employee.
If you're running your own micro-startup - and it sounds like something you're perfectly capable of making this work - you won't need to worry about getting rejected.
In fact you'll probably get recruiters reaching out to you.
This may not result in a job, but it's a lot easier not to care what happens in an interview if you have a secure income stream as well as an impressive resume.
This runs afoul of the same mental-block when it comes to worrying about your self-identity. It's trading the possibility of "Oh man, what if they think I'm incompetent?" for the self-certainty of "Shit, I'm a horrible person who lied to them and deliberately wasted their time."
Anybody already self-assured enough to "be the jerk" probably isn't that worried about "being rejected".
Why wouldn't you do the same with companies?
It's fine to interview at multiple companies that you might consider taking an offer from, but interviewing at a place you know you'll say no to strikes me as, yes, wasting their time (and money, as we usually have a few people interviewing one candidate at the same time).
No reason to feel bad about it especially if it is a big corp. These days employers throw careers under the bus at the whim of asshole mba's. And, no, employer's won't agree to "informational interviews" any more.
In any case no one has to know except the interviewee.
Tech interviews are an exhausting, often humiliating experience. Some companies claim to do it better (e.g., see Asana's post a few days ago) and more humanely, but by and large the process is designed to break the candidate: to see the limits of their skills and aptitudes. Excellent in theory for the company, but very hard on the candidate.
Even if you do mostly-great in an interview, you'll probably not quite finish the programming assignment, and feel like a dunce for it (and you'll know the answer on your walk back to your car). If you don't get an offer, it will serve as confirmation of your ineptitude and you'll kick yourself for it.
It's super tough and I have very good friends --and easily world-class 1% engineers-- who have crumbled during the process.
My advice: you seem to know yourself pretty well. That's so valuable. Play to your own strengths and don't bother trying to toughen up for interviews.
Oh, advice #2: get into an awesome job via a friend, if you can, and maybe your friend can make sure they don't haze you too hard.
Good luck!
Personal experience is important in terms of rapidly evaluating a candidate! If a team is composed of 10 people and you interview with each and each brings something a little different to the table, that seems OK to me. It gives a candidate exposure to the people they would be working with, kind of like dating.
You find the job and tell her you are too nervous to apply, let her know it's OK to apply for you.
Sometime seceding that bit of control is enough to get over the problem - especially when you have self awareness of it.
Once she applies you will probably feel an urge to take over and continue the conversation with the employer - so do that, and take it to an interview. (Or have her do it for you, while you hover in the background looking worried and telling her what to say :)
It's kind of a way of forcing/tricking yourself.
(Hopefully she doesn't say something like "man up and do it", ask her not to if you think she might, tell her you need her to help you with this.)
Honestly getting a job is way easier.
This might just be something you have to confront. But I think constantly confronting your fears is healthy, even if it's difficult and stressful.
It sounds like you're genuinely enthusiastic about engineering and computer science. I think talking about your side projects (deep learning, blockchain, etc) will show this very effectively. Actually, having side projects to talk about is sort of like a secret weapon at job interviews. You'll find if you learn how to talk about these your interviews will go really well, so long as you can do a somewhat above average job on the technical questions (which can happen with practice and luck).
That being said, I can't give much help on being shy as I've never really dealt with that. I did used to be kind of.... not the best with social situations, and I found that by being chatty and going out of your way to meet people randomly, you end up getting good at it pretty quickly. Of course I sucked at this at first, but I had a friend who was extremely chatty and whenever we hanged out in public he would always be talking to random people. By joining in I sorta got the hang of it, and that helped a lot.
Also never be afraid of being silly. Making mistakes can make people feel more comfortable around you because they stop worrying about keeping up their own image of being a normal human being (what does normal even mean?). That works more for meeting people and MUCH LESS in job interviews, but meeting people will make you less shy, which in turn can help with interviews.
Don't fall into the trap of believing you can't change yourself. Simply by acknowledging what you'd like to change about yourself, you've already begun the first step. I think you already know you need to do something. Hopefully this is the impetus. I've seen friends totally change personalities and go from being shy to confident, or silly to mature. You can overcome your fear of rejection. Just get rejected a lot so that it becomes a trivial thing you can laugh at.
And if CBT doesn't work there's always beta-blockers, heh.
Jumping through arbitrary hoops is completely normal for most professions. The main issue here is being so anxious that one finds it impossible to work up the courage to interview in the first place.
Sounds interesting! Did you try to give presentations on these things? Start with small conferences/hackathons/user groups. Use YouTube if there is nothing local available.
Also, theater worked really well for me as well.
My biggest recommendation is, of course, google: https://www.google.com/search?q=how+to+toughen+up&oq=how+to+...
For a better site, I'd suggest The Art of Manliness. Brett McKay likely has a degree or 2 in Men's Studies at this point on his site. I like him because he gives good advice, tell you when something is not going to be easy to think about, and he lives what he talks and tracks changes to his advice, sometimes calling out old posts of his as wrong. Here are some links on toughness, but the whole site is great:
http://www.artofmanliness.com/2015/10/26/the-sioux-guide-to-...
http://www.artofmanliness.com/2015/05/07/men-and-scars/
http://www.artofmanliness.com/2014/07/17/keep-your-head-4-ex...
http://www.artofmanliness.com/2013/10/03/you-may-be-strong-b...
http://www.artofmanliness.com/2013/11/04/dig-deep-youre-stro...
http://www.artofmanliness.com/2015/03/12/podcast-105-resilie...
If you's like some reading on toughness and the more historical view on it, no better book is there out there than Dr Carlin Barton's 'Roman Honor: The Fire in the Bones'. Her book is really a masterpiece in manliness, toughness, and much more. Available here: http://www.amazon.com/Roman-Honor-The-Fire-Bones/dp/05202252...
Finally, no real discussion and initial voyage into toughness would be possible without mentioning the patron saint of toughness and hardihood, Teddy Roosevelt. The Edmund Morris Trilogy on our manly lord is the best biography I know of, though I think the 1st one is the best: http://www.amazon.com/Edmund-Morriss-Theodore-Roosevelt-Tril... (bonus points for the Churchill series too: http://www.amazon.com/Last-Lion-Box-Set-Churchill/dp/0316227...)
Hope it helps!
I hate to sound alarmist but, I fear many younger tech people may not realize how lucky they are currently. If the economy turns south you are not going to get 38 job interviews unless you seriously have some needed skills.
Don't be like this guy and accept you are bad at interviews thinking there is plenty of opportunity. Don't blame the white board if every job in your field expects you to be able to white board. If you plan to survive during the next downturn or bubble burst you better be someone companies really want to hire. You may be lucky to land one job interview and it will be hard to stay motivated as months start to go by.
I've noticed that many employers have copied google and have stated to interview with as many people as possible. Lots of them take pride in their acceptance ratio, some even advertising that on their careers page. Def a sign of times but might not in a way that you are suggesting.
Getting an interview is not all that hard these days, you can get an interview with google/facebook ect pretty easily.
Yep getting an interview isn't hard at all these days. The economy is great and jobs are dime a dozen. My point exactly, it's 1997-1998 all over again. I've practically stopped using my phone and had to get a new email address. The recruiters have literally been driving me insane.
Plus, companies expect you to work more hours if interviews have delayed a must have feature.
Maybe... I got contacted by 2 google recruiters in 2 separate instances. I replied to them, but I never heard back.
I would've probably failed at the whiteboard, but I never even got a chance to attempt the interview.
What the fuck.
Was I not enthusiastic enough? What was it?
Some more info: https://www.quora.com/Why-does-Google-recruiting-take-as-lon...
Also down with kt, long live cj. :(
The only way I see software engineering (or at least quality SE) not being a scarce resource in the near future is if we dramatically rehaul our education system within the next 10 years, dramatically increase programmer efficiency, and potentially invent an AI to do basic CRUD style work. Even then though, we're going to need legions of programmers to maintain the crap we're building today, and most of that will require highly specialized and rare knowledge (I, for one, can't wait until node.js programmers are the new FORTRAN maintainers).
Honestly, in the future the only true full time job might be being a programmer. This is probably not a good thing for people like us, as everyone else will be free to pursue their interests while we still bang our heads at syntax errors.
I graduated in 2009, never had a legal job (according to Brazillian laws).
Also I too sent thousands of resumes since then, and since 2009 I got like 6 or 7 interviews in total (some that landed me a contract instead of a job...)
The job market in Ireland is nuts :)
I haven't looked for a job in one year and my resume/profile is posted no where online. I get about 30-40 emails per week and 5-10 phone calls because I put out the resume last March when I was looking. This was the same result with the same resume in 1997-1998. Post 2002 I never got a call and rarely an email back acknowledging someone received it. Also recruiters found me jobs in 4-5 days in 1998. Zero jobs from 2002-2004 (2008 was also pretty miserable). Again today recruiters can find me a job in under a week.
I think one of the most important aspects of hiring is getting potential candidates in front of the team and letting them talk to the team, to see how they handle questions from other developers (and yes there is always that guy who tries to make the candidate look dumb for some reason).
The most telling question I typically ask when interviewing is what have you worked on recently, why is it cool, and how have you added to the project. This gives the candidate a great opportunity to dive into their own experience. This way if they didn't answer my questions well it will give me some idea of their background. Oh hey this guy didn't know basic Javascript stuff off the top of his head because he's been working on the back end for 3 years. That's cool.
I'd personally take someone who can talk to me about practical design decisions they've made on a project rather than knowing how to solve basic algorithms. If you graduated 8 years ago and you STILL know exactly how to implement a Binary Search Tree without needing a 10 min refresher then you are a better man than I am. I forgot that about 3 years ago.
I don't mind that we expect developers to study for a tech screen but how much does that really tell us about them? They can study and know the basics, but have the ever worked on a large scale project where you have to make something work now vs, having time to do a perfect implementation? Where is their ability to tell their manager no, or their ability to weight COTS vs Custom Build?
Sorry this touched a nerve, I just had a bad interview with a company. The tech screen was outside my IDE, couldn't copy paste (which sucks when you want to move a line or do some refactoring) and it was on topics I haven't looked at in 4 years. Luckily I'd spent 15+ hours studying so one of the questions was a gimme.
Everybody got the same assignment, everybody solves it in a different way, and everybody makes mistakes[0], but how they handle that and explain it tells a lot about how they are as a programmer.
[0] Except for one who was insanely thorough and still apologized for really minor imperfections in his code. He got the most enthusiastic votes ever.
I’ve always been passionate about coding, starting from my early days at Olympiad teams in high school and ACM teams in college.
Anyone who's made it onto an Olympiad team[1] of any significant geographical scale, in any category, shouldn't have to deal with this whiteboard nonsense. Maybe a few lightweight-to-medium rounds to verify that they are what they say they are. But that's about it.
[1] We don't know if that's the case with Alibek; the article didn't drill down into that aspect of his background. I'm just talking to the fact that generally, there are plenty of easy ways -- albeit somewhat subjective, and in any case not uniformly applicable to all candidates -- to be at least 87% sure that the candidate isn't a a self-deluded poser, or outright liar about their coding skills (which seems to be the default stance many interview teams take).
And the due diligence one should do to remove that 13% of uncertainty can be made far less time-consuming and grueling than it generally is. Really, if you know how to read the signals, you can much more -- and much more easily, for all concerned -- about someone's coding skills by giving them a single medium-hard, but short-and-sweet exercise... than rounds and rounds (and more rounds) of progressively harder ones, as seems to be the current craze.
EDIT: Overall this is a very heartwarming piece; if a company like Booking -- known for having had several exceptionally talented programers on its staff over the years -- can not only take on someone like Alibek, but apparently consider him to be something of a find -- then that's a pretty damning indictment of the filtering processes used by the 38 of 39 companies that rejected him.
Credentials are only as good as the trust other people put in them. And I'd guess that a good portion of interviewers are completely unaware that non-athletic Olympiad competitions exist.
And anecdotally, it seems like tech interviewers wouldn't believe you could code your way out of a paper bag even if you walked into the interview over rose petals thrown on the floor by Kernighan and the ghost of Ritchie. I've had plenty of them remark "you are the only candidate that has answered that question correctly" and then never speak to me again.
It really makes me wonder what the point of the technical portion of the interview really is. I have had only one interview where the interviewer actually cut short a technical screen because "clearly, you know your stuff". But no offer there, either.
Which of course isn't true but good luck convincing people otherwise. (Source: regular clean up jobs after all the money has been spent and the company is on the skids and I get called in at a very large multiple of what an 'A' player would have cost to clean up the mess. I don't mind, it keeps me employed and brings home the bacon but it certainly does not seem to be the most efficient way to run an IT department...)
Unfortunately, the only solution I found for this is "charge more", which seems to be psychologically difficult for programmers, with all of patio11's efforts :)
I think "A" players are the best bargain in the software world...
They are, but try explaining to your average PHB who doesn't even begin to understand the complexities of the 'simple' piece of software they intend to write that Charles here can do the job in 3 months and will cost 50K and that the five guys over there in the corner will take the job for 30K and will take a month longer (or so they think). Then, after 30K becomes 90K and the company is slowly sliding downhill that original 3 months and 50K estimate starts to look pretty good, but then the sunk cost fallacy kicks in and for an additional 10K (over the 90K) this time they'll get it right. And then finally the time will be up, the money will be gone and they'll have to shop for someone who will take on the task to fix it on a contingency basis in the next month or so.
This plays out over and over again for some strange reason.
So yes, A players are a bargain, but only after the money to pay for them has been pissed out the window.
1) The market has imperfect information. The expensive developer could be great or terrible, but the same is true for the inexpensive developer. Even if there is theoretically some way to tell the difference, most employers don't have the skills to do so.
2) Bad management is at least as likely to kill a project than bad developers, so even a developer who is 10x in theory will on average deliver much less than 10x in practice.
(2) Very true.
I have had the exact same experience. I will get comments like, "That's the best submission we've seen for that take-home test" followed by literally no response of any kind after that. I've had places say, "you are absolutely perfect for our needs on Team X and you will help us meet our deadlines by the end of the year" and then make a job offer with a salary less than 80% of my current salary, worse equity, and worse benefits.
Companies sometimes want on-paper credential, but they almost never care about actual productivity or talent.
Stop right there :-)
I think that's where you need to do some deep introspection.
There's A LOT more to a job than technical aptitude. It appears that you're excelling in one aspect of the evaluation but failing in another. There's a reason WHY they're not following up. Find out what it is.
Consider doing mock interviews with seasoned folks that you trust who are willing to give you honest feedback. You might discover a lot and improve your interview game.
Believe me, I have tried to find out why they vanished from the face of my planet. But there's only so much effort I can put into throwing politeness and courtesy into the void of unimaginable rudeness.
You have to do mock interviews to get real feedback. Real interviewers are so absolutely terrified of telling you even one thing that might help with your next interview that I have never heard anything, good or bad, about myself in the wake of a real interview.
This is not an occasional problem. This is epidemic in every city I have tried looking for full time employment, to the point where I am actually shocked--shocked--if someone follows up with me after an interview when they do not want to extend an offer.
The only reason I can think of for this is that someone out there is actively counseling companies and HR managers to conduct their interviews in this manner. Perhaps it is to cut costs. Perhaps it is to minimize liability exposure to workplace discrimination laws. Perhaps I am on some sort of blacklist. Maybe something on my credit report is bad. There is literally no way for me to find out, because I am already blackholed by the time I might get a chance to ask, and I have no expectation that they would answer honestly if they would even answer at all.
It is true that you can't expect actionable feedback in a real job interview. Mock interviews when done with the right person really help. Of course it means that you have to be open to criticism and handle it with grace. Some folks have reported success with a career coach for this stuff, but that will cost you.
There's also another way to get some feedback. If you develop some rapport with a 3rd party recruiter who sets up interviews with their client, you _might_ be able to get debrief on how it went and what your strengths/weaknesses were.
If he failed some other part of their interprocess -- that's fine, they can send a polite and professional rejection letter. Even a soulless form letter will do.
But to not follow up in any way with the candidate, after that? Unless the candidate vomits in the interviewer's lap, or something similar -- that's just pure rudeness, on the company's part.
It doesn't work as a credential unless it actually produces results.
I had therefore never heard of it before this thread, despite it being around for 27 years now.
At the time I was in high school, US Science Olympiad, Indiana Academic Super Bowl, and the Rose-Hulman Math Competition were about the only games in town. And it was a big school. We might have had a US Chemistry Olympiad team if the chemistry teacher wasn't a few moles short of a balanced reaction, if you know what I mean. The biology and physics teachers were the Science Olympiad sponsors.
I'd think that even just being on the IOI team would be enough to get you accepted anywhere, given that you would have to be one of the top 4 students in the US for that year (by the best screening process that several university professors can manage).
But for now, and the foreseeable future, it would appear that their decision has been validated. Although I'm not entirely certain whether that is because I am not actually good enough as a person to claw my way into the upper middle class on my own merits, or because my accumulated credentials are not prestigious enough for a gatekeeper to lower one of the ladders low enough for me to jump for it.
Like it or not, there may be people out there blackholing my resume just because it doesn't have the right university name on it, or because the year I graduated is in the wrong millennium, or because it doesn't have the right company names on it.
There's nothing that any of us can do about it individually. Stopping that kind of useless credentialism by employers is squarely in the domain of a cartel enforcer--union, professional association, or government--and even then it might not stick.
I prefer whiteboarding systems design/architectural concepts, which is definitely something I do in the course of my regular work.
"Must l-o-v-e solving hyperidealized problems with clearcut answers, under gratuitous time pressure, while being watched with others (who already know the answer). For hours on end. Because that's what we do all day here. Serial olympiadists, hackerrank aficciandos, and other competition coders only need apply."
It's really quite simple to do, and will (by drastically narrowing your candidate pool) make your filtering process much easier, I'm sure.
I'll be honest, I did rate coding interviews as very important, but I changed my mind after working with some really great people who do really badly at them.
He did suggest that some of the problems one gets asked to solve are gratuitously hard, which correlates with my own experience. He also fairly acknowledged that he was getting a lot of rejection for other, e.g. cultural reasons.
So it would seem that it's getting rejected, not "demonstrating coding in interviews" that he doesn't like.
Reply: baseline social comfort is not a generic personality type.
It's not that their anxiety is crippling; it's that for various reasons, the hiring process is typically conducted in a way that is at best often careless and inconsiderate to the candidate -- and quite often needlessly stressful and confrontational.
In other words, the people who sometimes get tripped by such processes aren't demonstrating "crippling anxiety"; they're demonstrating perfectly normal, human traits.
Seems like you just want one generic personality type on your team to make your life easier.
You should really give anxiety sufferers a shot. There are some real gems there which you are dismissing out of hand.
Plus you literally just came out and admitted that it's not actually about measuring technical skill, it's some run-you-through-the-gauntlet "attitude" bullshit. Gimme a break.
Whiteboard sessions are typically done standing (an unusual posture for most people), in a non-interactive environment and importantly, in front of other people (which is quite different from coding, alone, in a development environment, in the sitting or standing posture of one's choice). Who also expect you to explain to them what you're thinking as you're coding, interrupt you with questions or hints, etc. An entirely different workflow from just sitting down and writing code.
Even so -- traditional whiteboard sessions might sort of be OK, if they kept it to a single hour. The thing is, these days, the sessions (whether using a whiteboard per se, or some tool like hackerrank) can typically go on for multiple hours, like 4-6, being stared at by 5-10 people throughout. And are sometimes very poorly coordinated (either the problem isn't properly stated... or it seems no one bothered to check that you've already done the first 2-3 hours of "idiot testing", and make you do it all over again when you get referred to another team, etc).
And this sometimes on other pointless exercises (like a full hour of solving pure logic puzzles, being administered to you by a fresh graduate).
At some point it just gets to be unnecessarily exhausting and humiliating. And no, it's not a symptom of an "attitude problem" if one starts to feel less than enthusiastic about the way some companies conduct these sessions.
That entire process many only produce one or two sheets of paper, with many more sheets ending up in the bin, but I find it is time well spent as it makes the coding step much easier.
Oh yeah? I've interviewed my fair share of self-righteous prima-donna "I shouldn't have to deal with you plebes" sorts before to know you'd better put them through MORE of this whiteboard nonsense rather than less.
And if they get all huffy, you know that when they make a pile of shit, they'll be the quickest out the door to run away from it leaving those of us with work ethic behind to clean it up.
Credentials mean precisely jack and shit to me. I want someone bright and humble.
Think their issue might be with you? ;)
I've been to 20 interviews or so in the past two months and the common pattern with the worst companies is a near complete lack of reciprocal respect and almost hazing (like GP does). The best listen to what's said and evaluate the content and the character at the same time without the need to do "extra whiteboarding" to prove some...thI'm not sure what it actually proves. What does it prove? I'm really at a loss there.
Another thing about those nonreciprocal interviews is that they they tend to be led by significantly less talented folk in comparison. My friend Peter might know why.... ;)
In other words, exactly the "bright and humble" type you're looking for.
"It's not enough to be a mediocre engineer for a mediocre paying job. If you want to play in the local tennis league, you better be Roger Federer (without his pay)"
I think software engineers should counter-question the interviewers. Interviewers should be allowed to judge the candidate only if they can answer the candidate's questions to them. If the interviewer cannot, he/she is not qualified for the job of interviewing.
- They might be afraid of someone who might outshine or compete with them.
- They might not want to train or mentor someone.
- They might think they don't need help.
- They already have someone they want to hire and are just going through the motions of "looking".
Exactly, even when you show them (through a mostly well-done interview) that you are up to the job.
(Oddly enough, she (a construction engineer) was never asked to solve a few PDEs on a whiteboard or calculate a beam deflection over the phone)
If the candidate asks a relevant question that the interviewer cannot solve in time, the company failed at its own game because the candidate proved that he/she is better qualified than the company's representative, given the rules of the game.
What excuse does the company have for not hiring the candidate now?
Sure, it's true if you become an employee or contractor... but til then they're speculating (as are you).
Many companies hire to fill in expertise, so the person who you are interviewed by may be less experienced than you in a particular technology.
In that case, these companies should be ok with registering their names in an online registry saying they rejected a candidate for someone who is better qualified. For the following 6 months, they cannot complain that that cannot find qualified candidates.
> Many companies hire to fill in expertise, so the person who you are interviewed by may be less experienced than you in a particular technology.
So the interviewer should be asked a question by the candidate in that particular technology and if they can't answer, the candidate should be hired.
The goal is not to hire the first "not worst", but rather the reasonably best, where reasonable is a function of time and money, among others.
They'll feel the heat and hire a reasonable candidate.
But if you're asking questions to determine if this is a company you might want to work for; you ask them how they work, how they're organized, how they handle specific things, what tools they use, etc, then you're simply doing your job as an interviewee, and I've found it doesn't turn anyone off; they just think I'm well prepared and honestly interested in the job.
>If you fail 10 interviews in a row, go for the 11th interview. But take a look at all the variables, and see if there’s anything you can do differently to improve. Take the pressure off, and work through problems routinely to keep your muscle memory in shape.
That reminds me of being in 'game shape' as I call it for playing and soloing - standing around thinking about notes to play doesn't come off nearly as fluid as being so practiced as to get into the groove and run with it. Good parallel. Nicely framed conversation, glad to read it.
So I sent an email to everyone in my coworking space that I'd put a six pack in the community fridge for every person who did a mock whiteboard interview with me. Some of them came with their own problems, some of them picked problems from websites or the books that I hadn't done yet. Some of them were doing it as a favor, and some of them wanted to practice interviewing people. I got five mock interviews over a week, many of them with strangers. Best 40 bucks I ever spent. (I nailed the next real interview I had and got a job offer.)
HackerRank is an attempt to commoditize software labor (literally reducing evaluation of your labor fitness to standardized examples). It communicates immediately that creativity is valued less than standardization, and that your uniformity and compliance are more valuable than your experiences.
It's also a way to position developers as lower-status employees -- you essentially have to capitulate to the judgement of higher-status employees. Even if you ace the code test, it puts you in a defensive position to justify yourself, which inherently reduces your negotiation power. If you submit something that is even slightly unconventional (even if it's provably just as or more accurate than conventional submissions), then your negotiation power is extremely damaged.
For example, think of the difference between actors who must audition and actors who are "offer only" -- they won't respond to your inquiry about hiring them unless you're prepared, based on their previous work, to make an offer already. If you ask Robert De Niro to audition, you'll get laughed out of the room. HackerRank is often like asking Robert De Niro not only to audition, but to do some kind of two-bit community improv class warm up exercise for his audition, then grilling him because he didn't enunciate clearly. Ridiculous.
Employers often say they want to "see how you think" -- when they say this, it's a good idea to run the other way. No one can grok some whiteboard code or some timed code test on standardized examples and draw any meaningful conclusions about "how you think" or how it will relate to job success. Someone who believes they can "see how you think" from narrow, time-constrained examples is going to be a terrible colleague or, worse, a very dysfunctional boss.
I think the trend of cultivating "full-stack" developers (instead of benefiting from specialization and separation of concerns) is the number one problem facing the software industry right now (and folks are largely in denial about it).
This nonsense with commodity interviews via HackerRank is the number two problem, followed closely by the prevalence of open-plan offices and the prevalence of Agile-like workflow management processes.
Using a coding test shouldn't be a red flag. They are an incredibly useful tool for weeding out the applicants who, quite frankly, don't know their ass from their keyboard.
I've done hiring at several companies over the years, and I can honestly say that the signal-to-noise ratio for programmers tends to be very low. Even eliminating the obviously unqualified resumes leaves us with dozens of supposedly 'qualified' developers. Further followup however in most cases (probably 60 to 80% of the time, depending on the seniority of the position) reveals that the applicant is all talk, and can't solve even the simplest of problems.
Eliminating that 60-80% of applicants is an issue. We could have, say, a brief phone interview with each applicant, trying to figure out which ones are garbage and which are good. But that would tie up actual employees for hours and hours, doing something that most of them would much rather not be doing. Instead, using a coding test to weed out the morons can work wonders. We set them all up with a simple problem set, and a day later it becomes very obvious which of the applicants are worth bringing in for a real interview.
Now don't get me wrong - if an employer rejects you because of a spelling mistake or judges you because they say you solved a problem 'wrong', then yeah, that employer likely sucks and you should be happy to have been passed over. But rejecting an employer simply because they asked you to do a test? The only one you're hurting is yourself.
Since so many jobs are just shitty talent wasters, and you are just treated horribly, given poor equity terms, not paid what you're worth, etc., it unfortunately means that unless you have special knowledge that some particular job is non-shitty (like a trusted recommendation) then you're just better off erring on the side of nope.
You can't always tell. You begin part of the process, then the company says how great their Agile teams are, or how "collaborative" their open-plan surveillance workspace is, or they invite you to do a HackerRank test, and only now do you know the company is shit and you pass.
It's the same problem you face with the 60-80% unqualified applicants. I get messages from head hunters, direct recruiter emails on Stack Overflow, traditional recruiting firm phone calls, as well as occasional job listings that I locate through a job search.
80% of these jobs are shitty and need to be weeded out, even when they have plausible-seeming job descriptions and acceptable GlassDoor reviews.
The problems with companies that you mention above have nothing to do with the coding test, it's the company itself. Those are perfectly valid reasons not to continue the application process. But eliminating a company because they apply a coding test as a basic level of applicant screening still strikes me as an arbitrary move that does nothing but rule out perfectly valid job opportunities.
In fact, doing the emotionally difficult task of rejecting an employer who tries the HackerRank commodity nonsense represents putting in more legitimate effort to find the right job and to judiciously choose to complete code evaluations for companies that aren't being lazy and wasting your time.
It seems you really desire to deride me simply because you disagree with me. I don't take it personally, but I will say that the attitude you've displayed throughout these comments defending HackerRank-like evaluations is exactly the kind of attitude that would be indicative of a badly dysfunctional employer, and it's often exactly the kind of dysfunction that HackerRank requests are indicative of. Especially the parts where you try to turn it around and assert that a candidate standing up for minimally acceptable, reasonable treatment is equivalent (for you) to having a "bad attitude." It's quite alarming that you feel entitled to declare candidates as having "bad attitudes" for doing something that simply makes common sense from the point of view of avoiding employers who will waste their time. Contrary to suggesting that the candidate has a bad attitude, it highly suggests that the employer has a bad attitude, bordering on feeling like they are entitled to candidate labor, instead of privileged to have that labor, and somewhat whiny about it too. Definitely a bad signal when coming from someone involved in the hiring process.
While we're at it, I don't particularly appreciate many of the insinuations people have made about my team and my employers based simply on the fact that I see a role for automated coding tests in the interview process. But like you said, I don't take it personally either.
Coding tests are just one tool in an interviewing toolbox. Like any tool, they can be - and are - abused. You feel that any use of that tool is indicative of some unredeemable flaw in the company as a whole. I feel that the tool has a genuine role in the initial candidate screening process. We obviously disagree, and are spinning our tires trying to convince each other, so there's really no point in continuing the discussion.
This is a good summary of my position, except that it's not unredeemable. They could just stop using short, standardized, timed tests as a candidate evaluation, and instead they could acknowledge that there is no effective substitute for actually speaking with candidates, probing them about their experiences, and developing more nuanced understanding. Doing so would be time consuming and expensive ... that's life. Papering over the reality of the situation by pretending like automated, timed, standardized tests can measure the thing you need to measure won't make reality go away.
If a company is verifiably an excellent place to work and has excellent technology culture, and this can be verified ahead of time, then they do have the negotiation power to respectfully require completing code trivia (although most of the firms that actually are excellent don't do it this way even though they could).
Firms that are question marks to a candidate prior to some kind of phone interview to assess the fit, experience, and the nature of the role have no business trying to cheaply avoid the required costs of candidate evaluation. By trying to be cheap about it, they send a bad signal (and also generally don't succeed in getting the candidate pool they want to get).
Short, standardized, timed tests have no place in professional software hiring. Literally none. A company that uses such tests definitely raises red flags. It may be a sign of unredeemable dysfunction in the company, it may be some misguided HR initiative, it may be a totally fine place to work. The candidate can't tell and it's seriously not in their interest to waste effort on whatever the test is going to be.
There are just too many bad jobs ... the better decision rule is to always reject and if you end up rejecting an otherwise good job that somehow ended up using short, timed, standardized testing, oh well. The loss function is not symnmetric. Ending up in a dysfunctional job just because you felt good about acing their code test is a far worse outcome than rejecting an otherwise good job and being overly selective about where to work.
Sure if the experienced person spends enough time practicing, can ace the interview as well. But he/she would rather spend time on interesting stuff than say, how to print a tree spirally and hundreds of other silly questions out there :)
I think coding tests absolutely have their place - after a 30m high-level skillcheck over the phone, let's ask for a brief 30-45m timed code challenge to rule out the applicants who were effective enough bullshitters to clear the phone screen.
But I too have seen this trend that GP calls out re: "auditions" to even make it into the actual audition process, and FWIW it has not hurt me one whit to spend the last few years refusing to complete a code challenge as a prerequisite to anything but an in-person technical interview.
The only way it would hurt you is if the company in question is one you know you want to work for - and I'd consider an up-front code challenge for a few big names out there - but in most cases I simply write back and let the recruiter know my policy.
It's not like they're going to stop sending you leads, if you're a good candidate.
edit: grammar
You're basically saying you want to lop off the bottom 60% of an imagined Normal distribution. Except you're really only lopping off some of the bottom 60%, and some fraction of that bottom 60% gets through, and you're paying the cost of also lopping off the top 5% who think you're a joke of an employer for being way too worried about the costs for you to more substantively evaluate those bottom 60% folks -- especially since you, as an employer, are probably in the bottom 60% of employers anyway, yet are cargo culting to try to act like you only hire the top 0.000001% or something.
You get what you pay for. If you go cheap on candidate evaluation (e.g. lazy commodity HackerRank), you get the McDonald's version of a developer, all while acting like you're being extremely selective.
And if this mystical top 5% can't spare the ten minutes to run through what is essentially an interviewing captcha - for a job they were obviously interested in enough to apply for in the first place - then how do I know they won't consider themselves too good to do their actual work if I do end up hiring then? I'm happy to hire the next 5% down the list of it means they have a good attitude and a willingness to do their job.
And what's the alternative? I waste my team's time setting up screening phone interviews for every halfway decent resume that comes down the pipe? With the number of applications that we get, we'd be losing days of time every time we look to hire, before we even got to the actual interviewing.
Every coding test I've been asked to take is a 2-5 hour job. I'll do it for a company I really want to work for... But not for a "maybe".
E.g. If I know you are paying 25% over market then 5 hours becomes worth it.
Now 10 minutes? I can spend 10 minutes on a maybe.
If so many unqualified candidates are making it to the phone screen (which should happen after they've been resume-sorted and google searched), it's an indicator that something at the leading edge of the candidate pipeline is broken.
Asking their potential candidates to make up for their failure is not only asinine but probably locks them into a cycle of mediocrity - highly-skilled engineers are getting more leads than they care to deal with already, they're not likely to take the time to do that upfront work unless there's a very compelling draw. You know who will? Untrained devs looking for a first job.
tl;dr - the candidates that would do unpaid work for the chance of an interview, and the highly-skilled, well-sought-after engineers I'd like to hire for my team, are likely two circles without any overlap unless I have some major draw working in my favor - like signing bonus, or being a Google.
edit: accidentally a word
Basically, a full-stack developers specialization is to be flexible and have knowledge and experience in working the entire application stack. Another way of thinking about it is that they are like a general practitioner doctor/dentist, while they generally don't do surgery, they can refer you to the correct specialists who can and take care of any minor/common ailments. This is also why you don't want an entire team of them is that they don't go into depth in any domain.
I don't doubt that the current full-stack education path does a poor job of education on issues that specifically cross domains or when a task is better suited to a specialist.
Anyway, I think your reply totally misses the point. The companies who are so obsessed with needing to weed out the bottom 60% are themselves well in the bottom 60% of employers. What gives them the audacity to claim that certain developers are too low skilled, if the company itself is not any good?
A good developer is going to see that and immediately walk away. Unless the company is already verifiably a great place to work with great technical prowess, then their obsession with getting rid of "garbage" programmers makes them seem extremely dysfunctional.
(Just look at how people here on HN are speaking about other developers -- so now you're "garbage" if you're in the bottom 60%, even though that still places you well into the top 5% of humanity in terms of technological skills and quantitative thinking. It's absurd!)
Any interview that is structured like a test is a bad interview. Starting your relationship with an abusive process will set the tone of the relationship and I applaud all those who have walked away from interviews that make one jump through hoops. From personal experience, The last interview I took lasted 40 minutes and the person we hired is the best developer I know.
I was never confident at giving interviews until my mindset changed from it being a test to an exchange where someone who needs help is trying to get together with me, someone who can help them. They should able to explain to me how they see me helping them. Questions like: 'what is your biggest challenge right now' or 'if I were hired, what would be the first task' help start that conversation. They obviously will do their due diligence and I need to do mine (collaborative environment, sane hours, reasonable pay, competent management etc.)
All of the above is opinion.
In the tech-sector at least they're not "difficult by design." They're obtuse and absurd due to laziness and lack of rigor applied to the problem space by individual firms as well as the aggregate marketplace.
Almost nobody applies anything remotely resembling a scientific method or includes the massive body of research available in sociology, psychology, and/or neurology for understanding even their own needs as a company trying to accomplish something, let alone building an effective social group (i.e. team) capable of cooperating together to get there given whatever that organization's constraints are.
http://www.businessballs.com/personalitystylesmodels.htm
I personally use OCEAN because I'm most comfortable with its scaffolding and applying it via field testing.
Then move on to how those models can be tracked/verified through neurological study. Dario Nardi @ UCLA is probably the most "renowned" researcher in this field, though there are many more.
Best interview I've had was pair programming with a team member and fixing a bug.
If I found out someone had interviewed with me "for fun" I would be very tempted to send them a bill for "employment search consulting services" at my team's market rate per man hour!
It's not waste, it's data collection. If you're not building usable data out of your interview process, your hiring process sucks.
My team was interviewing candidates recently and we brought in a guy that was great on paper and in the interview but we had other candidates scheduled and two of them ended up blowing the first guy away. I'm glad we delayed that hiring decision until we had an appropriate amount of data.
Also, think of it like dating (or any other matching market). Being outcome-dependent says nothing about your candidates but a lot (that's unattractive) about you.
The best way to do things is to build good relationships. Your company and your developers should have a network of people you can bring in at any time to interview for a position. As a developer you should also have a network of contacts to know who needs developers. Instead you're waiting till you're desperate and coming off as needy. If I see that, I'm going to ask for a lot more money or as an employer offer less.
Thankfully for my wallet, almost everyone else is in the same boat as you.
...and if I'm out interviewing for fun and find a better fit, I'm probably going to take it.
I don't want to spook my current employer due to long term job prospects being poor.
I guess that's more useful than just for fun though.
Otherwise, you tell them that their offer is not competitive, and maybe the next monkey to come along chasing their peanut can benefit from your feedback.
* Tests your knowledge of the language/framework
* Tests your problem solving and bug fixing abilities and workflow
* Tests your debugging skills
* Tests your ability to work with other people
Not all of these are crucial (except the last one), but this format tests what is most relevant.
I've seen a bunch of blog posts recently about some companies priding themselves on who they turn down versus who they accept and I feel that is one of the bigger problems we have as an industry in hiring.
That interview, I was asked to do something using recursion. (Ug.) The next interviewer asked me to reverse a singularly linked list, and because my brain was still in recursion land, I tried to do it recursively. Blame the jet lag, okay? Immediately after I sucked at that, they walked me out the door. It was emberasing. Two steps out the door, and my brain is filled with POP AND PUSH! AAAH! I knew the answer, I've KNOWN the answer since I was about 14. No joke. So, I've been on that side of the "every now and then people interview poorly" thing. And I can only blame the jet lag, because I KNOW the ridiculously easy answer to that question.
Here's the funny thing - if I would have been offered a job there, I would have accepted. And the company went on to crash and burn in terrible fashion. And two months later, I got a job at a MUCH better company.
TL;DR: I've only failed at one interview, and it was arguably the best thing that ever happened to me. (Life is weird!)
If you can't do this, you are not qualified at basic manipulation of data structures and you should fail the interview if they want someone with basic competence in data structure manipulation. Sorry but that is how it is.
I wouldn't even bother implementing this myself in the real world and I have a degree in computer science and 10 years experience doing dev work. I would type the problem into google, survey a couple of solutions and pick one I liked. Done. Next problem please.
This is pedantic crap that is a waste of anyone's time. I can't believe people actually get asked shit like this at interviews? Well, at least none that I've ever been to. They look at my resume "Oh, CS degree at well respected University." and you can deduce that this person can probably work out trivial crap like this or look it up in a book or the internet. At most ask them for their academic records. What a complete waste of time in an interview..
I run a software company and I'll say straight up I would not hire someone with your attitude.
I know it's trivial. It is trivial. I can do it in my sleep. I used to write Pascal code, back before all these Generics and Templates, and I had to write data structures the old fashioned way.
What I'm telling you is that the jet lag got to me. This is like when you can't remember the name of the actor who played Batman in Batman Begins. Or when you can't remember what year your mother was born in. Or you can't remember the capital of the state you're travelling to. Or you're multiplying 7*8 and write down 42 in a momentary lapse. It was a completely "DUH" moment.
And yes; it is hard to find a job in Silicon Valley if you are sitting in Kazhakstan and need a visa too. Duh.
Here's a good interview tip that's helped me out with my last two job moves: Whiteboard code almost always comes out looking like crap because once you've fleshed out the idea, you can't easily insert lines. The solution is to bring a laptop with the IDE of your choice ready and say "Hey, I'm not really good at whiteboard coding. Do you mind if I write the code on my laptop here?"
I do lots of tech interviews, and I always make it clear that I don't care how pretty the ink looks. I stick with the whiteboard because it's the best way for candidates to explain their analyses and algorithms before they write the code.
I guess calmly evaluating my conclusions and approaching the problem with a third algorithm (I had already devised two and compared the answers) and then calmly asserting that my answer was in fact correct was the right move.
I do this sometimes. A strong developer would have a good mix of defending the design decisions made and the acceptance of the errors made. This test should bring this characteristic to the forefront.
You can get similar results without crossing that line by asking questions like "can this be made faster?" and "is this correct?", soliciting proofs of lower bounds on asymptotic complexity and loop invariants (respectively). But you shouldn't tell a candidate that their code is broken when it isn't. Interviewing is stressful and scary -- don't make it worse just because you can.
A mathematical proof on the lower bound? is that a common request and something I should prepare for in an interview?
"Ah, no wonder it didn't work!"
Then draw out an IDE around the code with a big [Compile] button.
Maybe even Clippy in the corner of the whiteboard. "It looks like you're trying to get a job..."
But that said, if you were interviewing someone and they did all of their algorithmic boxes and lines on the whiteboard but switched to the laptop to write the code, would you ding them for that?
Hint: almost always start with putting the input into a tree, and if tree is completely out of question - into hashmap :)
I would expect this low hit rate from a qualified individual looking for a job AND an H1B sponsor.
Been through this too many times.
The 6% return rate (application to interview) wasn't exactly encouraging. I made a habit of working hard on each application, sending it out and then immediately assuming that I'd been rejected, putting me right back in that stressful place I'd been before.
Being able to leverage that stress into something productive was huge, I'd wake up early and spend my mornings working on cover letters (useless) and researching companies, and eventually took myself across the city to crash another University's career fair to try and meet a recruiter from my then-dream-company (one I'd applied to online months before and never heard back from). That turned out to be one of two offers I got and where I spent my summer.
Keeping up a grind on applications and not getting discouraged is huge, getting into the mindset of "constantly apply until I'm employed, don't assume anything will work out" was probably the real reason I got the job I did.
I must say I am extremely disappointed at bay area job scene.
Ironically, HackerRank itself is a part of this problem. All of those are true for HackerRank coding challenges.
As another commenter has pointed out here, HackerRank (and other coding test platforms) want to commoditize the hiring process, but in a way that ensures that candidates are the ones who are doing the all the work. The companies just don't want to spend any time in the interviewing process. It's no wonder that so many companies are struggling to hire good engineers.
If you as a company throw me an online coding challenge as the first interaction, you can be rest assured that you won't be hiring from me again (and many others).
Of course, then they call you in to their office and...... give you a whiteboard interview that lasts 5 hours.
So again if you are looking for a job, think as salesman. And in sales rejections are part of life.
I've interviewed at dozens of technology companies, many that do whiteboarding, and I've always done well. I've gotten offers significantly more times than I've ever been rejected, this isn't because I interview well, but because the things I claim to know and be an expert at, I know better than the back of my hand. If a software developer has been writing code and working with a set of technologies on a daily basis for years, I'd expect the same of any of them.
From what I've seen of the modern software engineers isn't that they interview poorly, or that whiteboarding is the blocking issue. It's that they're actually poor engineers. Lots of people are taking 8 to 10 week crash courses on programming and think they are near the same level as someone who went to college for four years, even tend to expect the same pay. I actually don't think college is generally useful for software engineers either, but it's about the time spent. The best programmers by far are those who started young and even program personal projects as a hobby, who actually love to write software. I love writing software, getting wrapped up and losing track of time, creating amazing software that solves difficult problems and is a delight to use. I hire developers who are the same.
That's not true unless you work with very narrow technology or single framework. For example, good luck trying to remember all these POSIX API functions. I don't even try to remember mundane things by heart, because it takes a precious and very limited resource (brain memory) for a very small gain (few seconds saved that would cost to look it up).
"I wrote it down so I wouldn't have to remember!" -- Professor Henry Jones
Two of the pearls of wisdom I live my life by. Actually, most engineers do. That's why huge books of nothing but formulas, lookup tables, and reference data exist.
Does every startup implement their own algorithms etc. from scratch. Isn't it the reason why we have libraries? I thought most software was mostly glue/crud.
Do engineers at startup only code? Do they never talk to customers or need to clarify requirements or work on timelines or deal with scope creep, since it seems that these skills aren't evaluated at interviews.
If the answer to these questions is what I think it should be, to what end do we have this dog and pony show?
There are plenty of companies out there who agree that whiteboard questions are ridiculous, and I'd rather work for one of them.
I did not keep an accurate record of the number of resumes that I sent out, but I archived 110 cover letters during that time. I would bet that I probably sent out about 150 resumes.
I had scores of phone interviews and a dozen to fifteen in-person interviews a few of which ended abruptly. I will turn 69 years old in October 2016.
So we are testing for stuff that no one actually uses in the job. We are testing for those that have time to practice for interview tests·
Companies that want to hire, will hire. Companies that think, "Oh, it'd be nice to hire Jeff Dean maybe" won't hire.
(1) Reading this article and seeing the comments, really helps me see how my daily work helps level the playing field and as Alibek says, change people's lives. Very fulfilling and thankful for that.
(2) Re: exabrial's comment above, where do you think culture fit should be evaluated in the process? Lots of interview processes today deal with culture fit at the end, but should it be item 1 and then coding skill item 2?
Being from the midwest, doing interviews in silicon valley was like stepping into Charlie's Chocolate Factory at a few places in LA and SF. It made me smile to see people using their freedom to do whatever they wanted, but I really felt like -I- was being judged: you know for not wearing skinning jeans, feeling comfortable in my (literal) boots, being clean shaven, dressed in a long sleeve, and of course I have a soft spoken midwestern accent. You can't fake sincerity, and despite knocking the coding interviews out of the park, I felt like some (not all) of the interviewers were threatened by me somehow and mocked me gently with "well you did a really good job despite..." like they were talking to a three year old.
Really left a sour taste in my mouth how it seems the region preaches equality and acceptance, but that's only equality and acceptance of the non-traditional.
TL;DR: It's easy to say "We have a great culture" at your job if you hire hipsters homogeneously. The company I want to work for is color blind: we grow to appreciate each other. People of all walks, western, eastern, european, russian, christian, cat worshipper, whatever, just respect each other believe something different and learn how to communicate across these boundaries.
But, I'm decidedly not a hipster; no flannel, no beard, no skinny jeans, no boots, the sides of my head aren't shaved. I always had the impression that the hipsters were native to the west coast and it's always felt like I'm encroaching on their territory.
Most of the time people will pick up on someone's anxiety, lack of comfort or confidence, and start feeling uncomfortable in response. It's not really a personal thing, but it's hard for anyone to feel at ease in such situations.
Take two different people who have anxiety due to superficial differences, that wouldn't matter if they knew each other better, and that anxiety will likely magnify unless one person can break out of that mindset.
It's better to avoid simple explanations that rely on some sort of fundamental attribution error, because you'll come up with better solutions: https://en.wikipedia.org/wiki/Fundamental_attribution_error
Culture fit should be focused on areas of professional interest, general preferred work modes, and possibly professional ethos (e.g. you're a big open source shop, are they an advocate?).
Many interviewers and companies think culture fit applies to non-professional aspects like do they like bicycles, wear the same clothes, like the same music. Unfortunately, this is easily filtered through unconscious and unintentional racial, gender, and age biases because what the interviewer is really doing is determining if the candidate is "like me".
It's the second interpretation that annoys and intimidates candidates and is probably a root cause to much of the diversity issues faced by the tech industry.
You can always say that some other candidate was 'objectively better' if you bring everyone in and give them a bunch of arbitrary challenges to complete.
If I wanted to make suing companies my job, I would have been a lawyer. I'm not going to sue you, even if you deserve it. It takes too much effort. What you should really be afraid of is me posting such a negative interview report on Glassdoor that you start having trouble finding candidates who want to talk to you, and then going to interview with your competitors.
After reading this a few times I think you meant to say "you're a big open-source advocate; are they an open-source shop?" or something similar.
We have a job that needs doing, and we evaluate whether candidates can perform in that position. Period.
As a result to that pretty much all applications I have ever made have at the very least gotten back to me. I would never be able to apply to 38 jobs in 2 months. I feel like a lot of copy paste went on and that sets you to a negative start.
I got turned down by over 100 companies before I even had an interview. The process is really random.
The only thing that worked was making a site that went viral. Then I got like 20 unsolicited messages/requests for an interview.