When you're looking for your first job as a software engineer it's easy to jump at the first offer you get. During my first big job hunt, I'd interviewed and met with a lot of different companies. Most of the people I met were perfectly pleasant and I could've definitely seen myself working with them. That wasn't always the case.
Toxic Work Cultures
One of the worst things I heard during my job hunt was:
"We have a great work life balance; you show up at nine and leave at six and you're writing code that whole time. If not, you're doing something wrong."
They were a startup that had recently been acquired by a larger company and had a little office in Belltown (Seattle). The door was locked when I showed up, but I was able to wave someone down and they opened the door and said with a scowl: "you're late..." (I was 20 minutes early). Turns out, he thought I was their coffee guy.
Not a great first impression. I worked in grocery and food service before, I was very familiar with that level of condescension.
I sat in their "lobby" waiting for a little bit, and from where I sat I could take stock of their entire office. Not a single woman, and maybe 1 or 2 men of color.
At that point, since I wasn't getting any other offers I was resigned to taking the job if offered. However, to me that office wreaked of toxicity. I felt like if I'd worked there I would've been considered a code monkey, not a valuable employee that could grow and thrive there.
Most employees should be able to respond to the question: "How would you describe your company's culture?". It's a very simple question, and not having an answer for it is a red flag for me, especially for large companies. Culture is cultivated and defined at the top and propagated down.
At Microsoft, just off the top of my head, the two things that define their culture at this moment in time are: growth mindset and inclusion. They have invested so much in making sure that the employees know and live that culture.
Ask about work life balance. Listen to your gut for answers that seem inconsistent with your values, and respond positively to answers you like.
Day-to-Day, Tech Stack, etc.
Asking questions about the day-to-day responsibilities of the engineers, program managers, etc. will give you a good idea of how the company operates. For the interviews I didn't do well on, I still learned a great deal from asking questions.
"What does your day-to-day look like?" will tell you about how much time the individual spends coding, in meetings, volunteering, etc. It's good to get an idea of what your day might look like.
In addition to learning what their days look like, you'll also want to ask what they work on. Just because you're joining a company like Google or Microsoft doesn't mean you're working on their most popular products. In some of cases, but not all, you'll end up working with at least one of the people interviewing you.
Also ask questions about what they use to get the job done. I generally phrase this as: "what is your technical stack like?". In short, this question is asking what languages, frameworks, and platforms they use to build and their products.
When I was at SAP Concur my team's technical stack was: Node, React, Redux, and GraphQL. At Goldman Sachs we used Angular for my project and Microsoft has a lot of C# and Azure services. If they mention something you haven't heard of before, look it up!
Interviews are a great place to learn about industry trends and you can use them to branch out and learn new technologies.
How you end an interview is important. I've been an interviewee and an interviewer enough times to know that interviews are a complex dance. As an interviewee, you need to sell excitement and you need to demonstrate that you're the best candidate.
One of the most common things I hear in interview debriefs is: "they didn't ask any questions" or "they didn't seem interested". Asking questions at the end of the interview is a great way to unwind, especially after a stressful white boarding session.
Not asking questions can come off as a serious negative. Asking insightful questions can be a huge bonus. I've had plenty of interviews where their tech skills were alright, but the questions they asked afterwards and the following conversations helped push me over the edge. After all, you need an enthusiastic yes to get the job.
Another final question I usually reserve for the meeting with a hiring manager is: "what is it that you're looking for in a new team member?". Let them describe what they need and use evidence to reinforce why you are the person for the job.