I promised I'd post this… got delayed due to a death in the family. Thanks all for your condolences.
I'll preface this by saying that this is my opinion. It could be totally wrong. And, depending on the job you are going for, this may not apply to you. With that said, there are a few things I've seen that really differentiate candidates for positions and if this post can help you in any regard, then it has been worth it.
To start off, know that job interviews are, IMHO, 80% subjective. Sure, the technical aspects matter, but I've seen it again and again how it really comes down to stupid little things and really is all about how they feel about you as a person and not so much your technical abilities. I will attempt to share with you some advice that will help you be your best self in an interview.
Be early to your interview. Not too early. 10 minutes or so. Get there 20 minutes early, sit in your car for ten, then present yourself. The interview starts the moment you walk in the door. Dress appropriately. Remove facial piercings, cover tattoos, shower and shave. I assume that these things are well known, but you'd be surprised.
Practice Makes Perfect
So, you know how to code. Great! However, interviewing well is a completely separate skill set. It takes practice. When I've sought new employment, I have to brush up on practicing interviewing, because it is not something that I do all that often. There is a cadence to it, and like an athlete, it takes practice to be able to perform well.
I don't go straight out and interview for the position I want. I'll interview with 2-3 companies initially that are not as appealing to me, simply for the sake of practice.
After you practice a few times, assess how you did. It is perfectly appropriate (especially during botched interviews) to ask for candid feedback at the end when they ask "Do you have any additional questions?". Hell yeah, I do. Ask specific questions, not vague. Examples:
"What impressed you the most about myself?"
"From what you've learned about me, what do you see as my biggest shortcoming?"
"What are two things you wish I had the skill set for?", etc.
Beyond this verbal feedback, you'll quickly learn what areas you did well in, and where you need to study. There seem to be trends in interview questions that will come up again and again. Which brings me to the next point:
Just as you would for a final exam, study. Make a list of all the subjects you were asked about. Hit the Internet and read up on them. I will create a cheat sheet that I'll put in my phone. You know that ten minutes I mentioned waiting in your car? Use that time to read over your cheat sheet. Be able to recite the correct terms for patterns, concepts, etc.
We live in a day and age where you don't have to "cold call" companies to apply. Sure, there are job boards and the like which can be great resources, but that to me is a fallback.
Call 3-4 technical recruiting offices. Get your resume in with them and go and meet with them. Some will have you take exams to assess your skills compared to a national average. They will conduct interviews with you so that they can sell you to their clients. Again, take opportunities to garner feedback.
They will also ask you about your salary requirements. This is nice, because they will negotiate for you on your behalf. Be realistic about the level you are at. If you have 3 years of experience, don't claim you are a senior and apply for such positions. Target a salary based on the level you are at. (I'll discuss advancing later).
The recruiter will then start hitting you up with positions. It used to be that they would keep the name of the company secret until you showed up for the interview. However, you run the risk of being dual-placed at the same company which is bad. Develop a relationship of trust with your recruiters. It is okay to say: "Because I am actively looking with several recruiters, I don't want to be presented twice at the same company. I will respect your work to place me (opposed to subverting their efforts) but I require that I know the company you are presenting me to."
If you don't have one now, go create a LinkedIn profile. This is not facebook. Connect with any and all co-workers, past and present, even if you don't like them. Reach out to past co-workers (and present, if it is okay to let it be known you are looking) and ask if they know of any positions open. Word-of-mouth is a great way to be placed, especially since they can put in a good word for you.
Research the Company
Once you have a few positions you are looking at, start researching the company. Used LinkedIn to find 2nd or 3rd degree connections to that company. Odds are, you'll know someone who knows someone who works there. Get in touch with them and call them. I've learned a LOT about companies this way. Example: You know John who knows Alex who works at the company you are applying for. Using John, get Alex' contact info and call him. "Hi Alex, I'm ___ and am a friend of John. I'm looking at applying for a position with your company. Do you have some time to chat about it?" Ask if they like the company. If they are happy. Ask about the day to day work. If it goes well, they can put in a good word for you before you even show up for the interview. People want to hire people who they already have a social connection to–it is an unspoken vetting process.
Also research the company in the news. Did they offer an IPO recently? Why are they hiring? Where is their stock at? This will start to paint a picture about the stability of the company. Are they looking to be acquired? Or did they just acquire another company? What is their goal? Start to answer these questions so you are not blind sighted. I've seen companies hire lots of devs, finish up a product then immediately lay off those devs to be more financially appealing.
One of my favorite stories is about a graduate student who wanted to ace his thesis. He researched the topic, but he also researched the professor(s) reviewing it. He went as far as to meet with the professor's mom to find out what he was like as a kid. What his interests were and who he is on a personal level. He then incorporated what he learned into his research. The professor happened to be a HUGE Beatles fan. He drew analogies to the Beatle's music, the artists' lives, etc., and he aced it.
Now, I am not saying go out and stalk people. However, do research them. Find out who you'll be interviewing with. Find them on LinkedIn and read their history. Where did they come from? What prior companies did they work for? This information can help formulate your answers to questions in a way that will jive with them. Hell, if you can find them on Facebook, see what public info they share. What are their hobbies? What are their values?
This all goes with saying that I assume you want to build a career. If you just want a job, then this doesn't apply to you.
** Be Professional **
Your word is your bond. If you say you'll follow-up, do it. You are being judged on every word that comes out of your mouth. Avoid swearing, talking about religion/politics, etc. Again, I assume this is common knowledge, but you'd be surprised.
** Prepare Questions in Advance **
A good candidate will show genuine interest in the company. Don't go in with the attitude of "What can the company do for me" but "How can I contribute to the company?". If these things aren't answered during the course of the interview, make sure you speak up and get the answers. The worst thing you can do is sit there with a blank stare when they ask: "What questions do you have for us?"
- What is the goal of the team / company overall? Where are they headed? Where do they hope to be a year from now? 5 years?
- Culture. How do teams celebrate a "win"? How does the team encourage collaboration? How are conflicts resolved?
- Day to day work: Do they practice SCRUM/AGILE? How long are the sprints? What do they use to track issues/bugs? What is the ratio of the number of devs to QA? What are the shortcoming in their current process of software delivery? What steps are they taking to address them?
- Why do you like working here? Why don't you like working here?
** Prepare Answers in Advance **
The dreaded question: "Why are you looking for a new job?" is almost always asked. This reveals a lot about a candidate. ALWAYS ALWAYS ALWAYS make this positive. Examples:
Bad: "My previous boss was an ass. We didn't get along, so fuck that guy, I'm out." Better: "I really value team collaboration. With my current position, I haven't had the opportunity to really collaborate with my manager in the ways I'd like. I feel I have creative ideas coupled with a strong work ethic to really advance the team to the next level, but don't feel that I'll be given that opportunity."
"Where do you want to be in 5 years?" Sometimes you get questions along these lines. Again, your answers should be confined within the context of "What can I do for your company?" I performed an interview where I asked this question. The candidate was excited to tell me all about how they wanted to launch a BBQ company with their friend. When they were done, I asked them: "It seems to me you want to be a chef, not a developer. Why should we hire you?" They cried and left. (Yes, they actually cried. And yeah, I cut to the chase. But it saved us time from hiring someone whose heart wasn't going to be in their work.)
If you were fired for some horrible infraction, consider not mentioning it. This is tricky, because you do not want to get caught in a lie. Some companies will call your previous employer and ask them about you. Some are considerate and will ask you if they can contact your prior employer. The answer to this question will vary based on your situation. If your current employer doesn't know you are looking, that is always a good answer. If you were fired, keep a short answer: "We had irreconcilable differences, and I'd prefer you not to contact them." This is a chance to gauge this company. If they are dicks, they'll relentlessly push the issue. If not, they'll let it go and rely on their own assessment of you. It would be fair for them to probe a little to assess legal aspects of hiring you. I'll stop here, as this is a rare case and varies depending on what happened. With regard to them calling your previous employer:
Laws vary from state to state. In the State of Utah, the only answers an employer is legally allowed to provide are 1) Did you work there and 2) Would they hire you again. However, the company calling them can ask whatever they want. If your previous/current employer answers other questions beyond that, lawyer up as you have a potential case against them.
** Update your Resume **
Your resume should be a summary of (in order): Your contact information, where you've worked with a summary of your duties and achievements for each position and your education. I've found it beneficial to sometimes to put a summary of your skillset (with how many years experience) at the top before your employment history. Example: "C#: 12 years. ADO.NET: 5 years. XAML: 7 years." etc.
Some employers will really scrutinize your resume. Others gloss over it. It doesn't matter so much how many pages it is. Mine is just over two pages.
For your employment history, list brief facts of your achievements and roles. Example:
"Company X. April 2011-June 2015. Senior Software Engineer. Led team to deliver project X 2 months before deadline. Utilized ASP.NET, ADO.NET and MVC patterns."
This will give the interviewer talking points to ask you about and give them an idea what you've been doing.
Over the years, I've come to dislike the "Summary" section of the traditional resume. For developers, it is usually: "You give me money, and I'll do shit for you." I have been leaving that off my resume, and hold a verbal conversation about it. Again, refer to preparing questions and answers.
Your resume should be free of inflation. If you list that you architected a solution, I am going to ask about it. If I find out you were only a contributor, then that is a mark against you. Avoid trying to show off. Reserve that for when you hit the whiteboard.
Also, spellcheck and triple check your grammar. If I see terrible typos on your resume, I will think you are an idiot. Avoid throwing a lot of catch phrase lingo in it. Again, that is inflation. Example: "Architected a multi-tier redundant load-balancing interactive customer portal utilizing state-of-the-art code-behind techniques." Reality: "I built a webpage using a template in ASP.NET."
If you need help, take what you've got and go to the English department of a local university. They'd be happy (more happy for a little cash or food) to review it for you.
** Be Assertive **
The BEST interviews I've ever participated in where ones where I had nothing to lose. For one interview, I already had another offer from a company (literally an hour before) that I was fairly confidant I was going to take. I had nothing to lose. All the anxiety fell away, and I had fun. I was assertive, confidant and relaxed. They were impressed and offered me a job on the spot. I told them I'd need to think it over.
This can come with practice. If things are not heading the way you want during an interview, call it out. So many times the question being asked is done so in a weird manner that you are unsure what they are really asking. Ask for clarification (as opposed to looking like a fumbling idiot). If things are really not going well, stop the interview. Tell them how you feel. Example:
"You know what? I feel we've gotten off to the wrong foot. I spaced the name of the term you were looking for, but I know these principles. At job X, I implemented this when I did Y…"
I know there is probably more I will remember later about this, but I hope this gives you a good idea of a decent way of going about to build your career.
by ex-mo-fo-sho via /r/csharp