Questions to ask a company during a job interview
github.com
github.com
Tell me about a time that you made a decision to improve code quality or architecture at the expense of a deadline.
Tell me about a time that you invested resources into an engineer's technical development even though there would be no immediate, short term benefit to the company.
Tell me about a time that you pushed back on a decision from business or design because one of your engineers said that it was the wrong technical decision.
I often get some very candid feedback, and have passed on couple roles because of what I've heard.
What sorts of signals do you look for in these answers?
Good: Addressing the problem, fixing the process.
Bad: Assigning blame, firing the responsible.
(The latter especially for a first instance, though if you've got repeat instances, I'd look first to management, then to staff, for cause.)
Another bad sign is if the cause for the stress is internal, and a pass sign is if it's either management or a major (or the only) client.
If you cannot find ways to eliminate internal causes of stress, or buffer those created by the commercial environment in which you exist, it's going to be somewhere on the continuum between toxic and fatal to me.
Instead of asking about values, ask about behavior. No one is going to say no to "Do you value code quality?" Aking what they've done (and sacrificed) to support code quality will give you a better idea of what their relative values are.
Asking about their tech ladder will get you an HR answer. Asking "Who was the last person promoted to X? When?" will give you a better answer. And if they can't remember the last time, that's an answer in itself.
The idea being that you will learn much more about someone / something if you ask questions that are anchored to a time and place rather than generic "unembodied" questions.
So the first question you list "Do you value code quality?" is an "unembodied question" and there is no hook for the person to dig into reality and give you an honest answer.
The second, "Who was the last person promoted?" is "embodied" in that it is anchored in time and place. And because of that, a person is going to use their memory, rather than their rehearsed "value system" answers.
Anyway, it's basically exactly what you said, but I just wanted to recommend that I thought the podcast was a worthwhile listen.
But it's hard in some cases not to feel lied to when you see the gap. At least in dating when this happens you can get out early. You don't get the same trial period with work arrangements.
Bonus is if you reach out to former employees on LinkedIn and ask what it’s like to work there.
I like to ask about recent promotions and reasons, or conversely, asking who's been promoted based on the stated values in response to the direct question. Basically: how do you track and credit for this?
The risk, of course, is that you'll seem rude and high-handed asking interviewer-style questions yourself. If you have the upper hand (the job market is hot and they need you more than you need them), that's fine, otherwise not so good.
An aside, I say the above now, but damn, I wish I'd had understood it 10 years ago.
This will help you determine if projects are mismanaged, how stable their prod environment is...etc
I love the table-turning style of these questions; but the fact is, they can always answer "No, we can't think of any such examples. Are you going to walk away from the job?"
That is to say, hiring is usually a buyer's market.
Apparently that meant that occasionally a slack bot asks me what I did recently.
I actually don't mind it. I'm a noob, it's a small shop, and i'm not sure I'd like a pure "agile" environment anyway... or would want to risk it going wrong.
If the team could commit to updating their stories at the end of the day, then we could cut 15 minutes out of standup by leaving out what we did and just talking about blockers and what we learned.
There's supposed to be some osmosis around hearing what everyone else is working on. But practically if you split into separate scrums, you're only hearing about what people you're already collaborating with are working on and odds are you already know what they're going to say.
If the team is big enough you can't have a combined standup than most of the value of these conversations is already lost. You have to use the tools to telegraph your actions anyway, so why chat about it every morning? Discuss time savers and time wasters instead.
I tried running a scrum of 12 and indeed it was clear from the first standup that it wouldn't fly.
One thing I didn't notice for a few quarters was that the slack bot was not automatically configured to show the other people in the standup what was written. This is very important to the standup concept so you can discuss and help others on a task if it seems relevant, and everyone is aware.
Not sure how "agile" it all is but it isn't the worst system as in it isn't as disruptive as everyone chatting all the time.
It's like they're selecting for people who make major decisions based on little or no information. I'm sure that will end well...
This happens at FAAMG companies.
I have never taken a job without talking to a top executive. You get a view of the company bigger than your team, you get to ask those business questions your manager may not know, and you have a head start on making good connections with upper management.
And also, I have to say, it's a bit arrogant to think that you deserve the attention of top executives. You can't expect them to prioritize your interview over all of the other activities their company does.
Extreme case but ...
Do engineers have access to safari books?
Did you sponsor any conference passes/ training?
(I got answers like we have certification amount re-reimbursement policy(turns out for only pre-approved/ business significant courses). We have internal Community Of Practice sessions, etc.)
Back in the beginning of that time period, I used to ask (fairly jokingly) the same question: "How many servers do you have?" I would use the response to gauge the interviewer, and mostly just for fun.
Of the dozens of Google interviewers I've spoken to over the years, only one responded with a number range, and the rest of the responses were largely grouped into either active playful discomfort.
In my last two rounds of interviews (with various companies, including Google), I asked three questions:
1. What brought you here?
2. What keeps you here?
3. What keeps you up at night?
The responses to those three have been illuminating.
That's because most employees don't know, and the ones who do, know that it's a company secret.
Please do share.
Either that or someone else is going around with your questions.
As to the specific responses, I'd have to check my old notes, which I don't have handy at the moment. For "tier 1" companies, such as Google, common responses to "What brought you here" and "Why do you stay" are excellent comp, being able to work with many very talented people, and the ability to move around in the org.
I've found the "what keeps you up at night" question has the most diverse responses.
In general, I've been pretty surprised at the amount of apparent honesty I get. It's hard to verify the responses, of course, but any time I get a response that's not completely positive or 'canned' in some way, it seems pretty legit.
> In general, I've been pretty surprised at the amount of apparent honesty I get. It's hard to verify the responses, of course, but any time I get a response that's not completely positive or 'canned' in some way, it seems pretty legit.
Could you please give a few high-level examples?
Instead of: Are you friendly to remote work? Ask: Will I be working with anyone who is remote, or who works from home on a regular basis?
Instead of: Is the work life balance good? Ask: How responsive are people to emails/Slack over the weekends and after 6pm?
Instead of: Can I have a good career path? Ask: Did any of your senior engineers start out as junior engineers here?
I agree with you that developers need admin rights on their development machines, but I have witnessed first hand why many companies attempt to take away local admin rights.
When I'm responding to security alerts where developers have downloaded random .dll files from the internet, or some "troubleshooting utility" that is actually malware, it doesn't take long until the local admin conversation comes up.
This is one of those classic "technical solutions for bad human behaviour" scenarios where a small number of idiots ruin it for everyone. If you want local admin as a developer, then we need to be able to trust that you aren't going to do something stupid.
It seems the best way to do this is to issue developers multiple boxes (corporate laptop + dev box only for dev), and or use a good software whitelisting program that tracks elevations & the reasons for them, instead of just blanket giving everyone local admin on their own PC.
I think a lot of this stems from the fact that most of the managers in infosec for companies aren't developers and haven't ever been one. They really have no idea what developers really do. I'm not belittling them. It's just not the career path they took to get where they are. It's difficult to explain to them how frustrating being hindered is, and this causes a lot of good people to just leave an organization like that to find something better.
Maybe the better question is: how do you prevent your lowest-bidder corporate antivirus marks from marking git-bash as malware, stopping all work for the team for two days?
Developers don’t need admin access, they need ways of getting their jobs done with the best available tools. That’s a damn difficult balance to find!
What problem are you solving by making work for devs range from "incredibly hard" to "outright impossible" via taking admin privileges away? Surely you must understand that all things should be in balance, that security isn't the sole goal of an organization but rather an important consideration in the overall structure.
Are you attempting to create a tech "solution" to a hiring problem? You aren't going to succeed.
I went somewhere else where we had locked down machines. I am never, ever, ever going back to a place like that. Fuck working in that kind of environment.
Also, if a compromised machine on the internal network destroys your company's security assumptions, then there must not have much defense in depth.
Issues with trust imply greater problems in the workplace. Unless you're in a high-risk (of hacking) industry, like military, treating adults like children is a huge problem.
Granted, there are plenty of ways around these limitations. By now, all of my "I need admin rights" development is performed within a VM.
You can propose such a thing. If you're in charge at a company, you might get to implement it. But if you do, know that it's a huge black mark against your company. I've seen how these whitelists work in practice. They're massive wastes of time. They get in the way of actually doing one's job, as creative work can't be constrained and approved in advance by some committee with a ten-business-day turnaround on getting some damn file conversion utility to run.
The golden rule of "security product" culture is this: inconvenience is a feature, not a bug, since friction reminds people that the infosec group exists. When it comes to stuff like this, all the incentives are lined up to just inconvenience people, not protect them. We ought to protect data, not code.
At a few places, I experimented with running Windows. Every time, the Windows machine came with Bit9 or some other performance-killing compatibility-breaking security "solution" that made the system unusable. Windows is a great operating system. What IT departments do to Windows turns it into a nightmare.
These same places all had a much lighter touch on Linux VMs, desktops, and laptops, so clearly the invasive "security product" mindset was just contained to the Windows (and in one instance, macOS) groups.
When this started happening, I thought that I had installed some malware. In the process of debugging the problem, I ended up finding & disabling the root kit through trial and error. When my machine started working properly again, I came to understand I had disabled the corporate security "malware". I reported the problem to corporate just as others started to report having the same slowdown error. They told me the vendor of the software was impressed I had been able to find it, let alone disable it. I believe their words were "you shouldn't have been able to do that".
I didn't get into any trouble. By reporting the problem, I actually helped kickstart the removal of that software from anyone's laptop where shell access was required. The vendor never could fix the performance problem, and eventually our company resorted to trusting the developers again.
That's a great bumper sticker.
There are so many cases you find of people's Windows complaints where the questions are "Why does Windows even allow GPO to hurt users that badly?" and "Why does your IT staff hate you so much personally that they configured Windows into that particular contortion?"
The Unix world has decades of tales of the "sysadmin from hell" / BOFH, of course, but something about Windows administration just seems to elevate to almost universal "art form" across every company, but at the same time has managed to make it "business as usual" rule rather than the to-be-irked-by exception. On no other operating system would that level of IT micromanagement and terrible "security products" be accepted, and on just about no other platform would people just as easily assume it to be OS "bugs" or "inabilities" rather than the forced masochism of some local BOFH.
And bring some cookies for the grumpy security guy that will make himself heard shortly after the request is permitted by the boss.
As long as one has admin access in the VM of course!
These are the same devs who install random things with curl|sudo bash right? Or write code that can only run as root in production?
No thanks. These days of virtualenvs and similar, only incompetent devs insist on being root too. In fact, this will make an excellent interview question, thanks!
I've worked at companies where even being able to install something simple like Notepad++ or VSCode was turned into a major chore or made impossible thanks to the locked down environment.
Locking down trivially important system preferences like your desktop background is another example of just plain annoying management that I've witnessed.
Don't forget corporate network content blocking, and I don't mean the obviously not safe for work content, but companies acting as the productivity police e.g. blocking Twitter and YouTube just because they don't trust you enough to not slack off at work, and furthermore not trusting your supervisor to be competent enough to determine whether or not you've been productive enough lately.
This list is missing the two most important [busines] questions:
1. How do you make money?
If you can't understand, or the interview can't explain, then I'd run away. This can also lead to interesting questions about risks, competitors, etc.
2. What's preventing you from making more money?
The answer that you want to hear is engineering effort. If not, you're (at best) a wallflower at the party. Don't be the chump that's at Goldman Sachs acting as a code monkey for the traders. Don't be writing code at a company (like Enron) which has its success based on digging holes in the ground.
I can dig up the slides if anyone is interested.
Working in the profit center of a company is often enviable, but let's not forget that cost centers in large companies can also offer benefits in things like work/life balance.
I've also worked somewhere at a "lesser" company where I was firmly on the cost-center side of things, but my work was seen as absolutely business-critical, I was treated well, I survived all reorgs and department layoffs and had my salary tripled from the time I started.
Working in unsexy companies is a tremendous opportunity because if you're good at what you do, people literally think you work miracles.
> I don't think the GP intended to call engineers at those kinds of companies lesser.
Yes, they did - bit difficult to argue good faith when you are calling people chumps.
Why not? That's a prevailing opinion.
SWE: Works for a startup. HN: RESPECT!
SWE: Works for FAANG. HN: Respect.
SWE: Works in an industry that's not related to the web. HN: Wait, what? I don't understand.
SWE: Works anywhere else. HN: Crickets.
You can get vibe of a company by asking if IT is seen as a cost center. If software is a competitive advantage you know that it's green pastures for your and yours. But places where culture holds back engineering, like being slow on the uptake of GIT or CI/CD which is often talked about online, these are places to be wary of. Those latter companies are either going to have growing pains or will die out as digitization starts to take them on.
Financial markets companies are now engineering and quant driven. Machines place 80% of orders in US equities exchanges, not humans. The company you mention just announced a $100M project to rewrite its core equities trading platform to optimize latencies at scale across markets. Great engineering culture too. Meritocratic, respectful, and you won't find people there going around referring to developers in other industries with the disrespect you do, for example.
By way of explanation, this phrasing came out the slide deck itself, which was used as part of a recruiting effort at colleges for new hires. In many cases we were competing with offers from finance firms and felt the need to distinguish ourselves to compensate for their salaries
Having said that, I stand by much of my statement: assuming you have a choice between those two types of roles, you'll end up in a better place where your job is a path to more revenue rather than a cost to be minimized.
(Like the siblings comment, I may disagree with "The answer that you want to hear is engineering effort", but the questions are definitely valid in some situations)
Thank you!
With that being said, in my experience of working at companies that actively sell software, whether it's as a product or a service, you are still incredibly likely to be as much of a wallflower as you are at a non-tech company. Your perception of freedom is higher, but ultimately your time and budget is limited by whoever manages you.
I'd be interested in the slides to see if your questions dig into one of the most common issues I see at tech-centric companies - micromanagement? Is it a thing - and if you say no, would a random selection of three of your developers tell me the same thing?
How long ago did you give raises?
How long before that was the last time you gave raises?
I once interviewed with a company that brought me into a new, shiny, well-appointed building on the corporate campus for an interview.
I did well answering their questions. And they answered my usual questions correctly. Stuff like "Can developers here choose their own tools?" and "My title is going to be Lead Engineer, will I actually be a Lead Engineer?"
After I was hired, I found out everybody uses Eclipse, no exceptions, and I was absolutely not going to be leading anything (I was basically going to be used like an overpaid junior engineer).
The best part: "Oh, you won't be working in the new building..." and was taken to an old, windowless, leaky, mold-smelling building with peeling paint and flickering fluorescent lights (think the opening scene from "Joe vs the Volcano"). My office was a supply closet that was being converted into an office (by that I mean, "we just pulled most of the stuff out of here, but otherwise just rearrange the furniture however.") I was given an old 70s vintage desk that was too low, a sort-of broken chair, and a laptop and left to my own devices for three weeks while waiting for my new project to get started. Then I was suddenly moved to even worse accommodations - a cubicle, which belonged to an employee who had recently died (his stuff was still there, and it was a month before anyone came to take it away).
I started looking for a new job about 2 days in. Took me a year to find something else (I eventually had to move to a new city).
First, the project was described as "green-field, we're doing cool stuff writing MVC apps from the ground up." I was assigned to build SSRS reports.
Second, the shiny building with the sales people, recruiters, executives - I did work there, on a second or third floor, corner office with windows! For about a week. Then I was moved a mile down the road to the building they got through an acquisition. I was on the ground level (I think?) and I had a whole office! But the office was small, dark brown and had no windows. Even the door was solid dark brown. (The office wasn't all that old or terrible - the kitchen was kind of awesome. But the actual area where I worked was pretty dreadful.)
I don't exactly feel like it was intentional, or at least, it didn't occur to me at the time. But looking back, of course they didn't want to highlight that they really wanted someone to grind through reports. And they clearly didn't intend for me to spend my time occupying a corner office with windows!
I was there for about 4 months.
Had an office with a nice view and plenty of sun. Got moved into a cube that neither cellphones nor radio got a signal with this constant wind noise since I was up against the wall. I left in 8 months (for other reasons amazingly enough). I dearly wish that there were transcripts of the meetings that went into that project.
Show up, and everybody is working on firefighting old bugs with a fake Agile approach. The kind where the manager hands out tickets to folks and the only metric is how many trivial bugs have been closed this week.
Every time I spent any time looking into the code (million lines of crap) to see if anything could be done, I'd get widely criticized.
I put up with it for a few months and bailed.
I'm trying to get out, but not having much luck. I wonder if recruiters are turned off by the fact that I'm looking for another job again after just a few months.
But when talking to your future peers/team mates, I think you can expect a lot of honesty if you ask the right questions about how things really are.
I know I'm always 100% honest, because if they get hired, we'll be coworkers, and they'll know if I lied!!
PS It's weird that you didn't get the title in the contract
The most obvious one is usually “we’re on an agile process”, but there’s so many other ones more subtle and hard to get a grip on, short of reading interviewer’s clues when they answer the canned answer.
Sometimes the same words just don’t mean the same things to them. Sometimes they don’t realize how bad their situation is.
“Reality shock” in the first days at some workplaces is a thing.
It's not even uncommon to be hired for one role and end up in another role for whatever reason.
Another thing is, policies change. Your interviewer could be grandfathered in and not know it (or know it, but don't mention it...). Or they could simply mention the last policy they remember, which isn't the current policy.
Some people also would rather just make up an answer rather than say "I don't know."
>It's weird that you didn't get the title in the contract
Job titles are not always correlated with job responsibilities. Hence we have "senior engineers" with a year experience. Title inflation is a real thing.
I've been lied to by every manager I've ended up working for. Too be fair, they've all been soft social questions, so I am partly to blame on that front. I've been terrible at identifying company culture until after I've taken the job.
http://www.shakelaw.com/blog/lying-on-your-resume/
Mostly it's just the risk that you'll be found out and fired (which is similar to the risk on the other side of the table— that the employee will find out and quit).
> Where do you see yourself in 3 to 5 years?
I gave my typical response of technical lead, driving projects from the engineering side of things. His response was interesting.
> What would you think about not working here after 5 years?
The way they were able to run their shop was to use turn over to their advantage. They were custom software/hardware company that basically used as contract workers to make the widgets a company either has no time to make or doesn't know how to make. Their business model was to have you work on the project to the point where the contractor decides to hire you on full time to support the thing you helped make.
It was an interesting idea but showed they had no concept of stability for anyone besides upper management. Opted not to work there.
At my last job, I was told several lies (even during negotiations) that made the job sound far far better than it was. And this wasn't just from HR/recruitment. These were answers that I got from the many levels of upper management that I had to interview with.
I tried to reconcile those lies after settling in and having outstanding performance reviews. No dice. Ultimately ended up just leaving the company.
Lesson learned - Don't let them negotiate you into their range. Companies will lie to make their company sound like the shiniest, best place to work in the world.
> and I was absolutely not going to be leading anything
This scenario has been basically my life for the past several jobs. Companies will lie just to get you in the door. Never ask "Will I ...", because the answer is always yes. NEVER trust what a company offers.
The only people who could really say, won't.
You offer letter should have the title in there, what did that say?
Exactly what I came here to say, albeit quite a bit softer.
Without having had the benefit of reading TFA yet, the problem is that you are never asking "the company" questions. You are asking your interviewer questions. Their answer, like all non-sociopaths, will be internally true or mostly true to themselves[+], but be colored.
The mitigation for this is that you have to ask every interviewer the same few questions.
[+] Read any book on how to suss out liars and you'll see that everyone who is not a sociopath, has many "tells" that they actually cannot resist. ie, normal people are uncomfortable with lying.
It helps that places that are awful also usually can't imagine that you would want to leave. Good places, ironically, worry a lot more about employee satisfaction. Bad places typically believe that everyone is really worried that they might not get promoted/have a long career at company XYZ so are very weak at spotting employees that have checkedout. The stick they wave is usually "you won't get promoted next year if you don't play the game!"
Of course this depends a lot on how much energy the job drains from you, but if you can still learn some stuff during the day and don't feel drained when you go home, a year is not such a bad sentence to serve for a nice bump to your savings... just don't make a career out of it.
By the way, didn't you get that memo? mmyeah...
Got similarly cat-fished. Companies always conduct interviews in their best offices, not the ones you'll be working in.
This is so important.
I can probably live with most open plan set ups, sure there will be annoying times, but if there is a call-heavy team nearby, forget it.
I refuse to wear noise cancelling headphones all day long.
FWIW, interviewers will blatantly lie.
I asked at an interview about equipment quality and was told that they'd not heard any complaints.
This was 100% bullshit. I was given an ancient laptop, which seemed to re-ignite complaints about the quality of the equipment and were taken up with, none other than my interviewer.
May I ask why? Even when I work at home alone, and there are no stray noises at all, I'll still wear my headphones when I want to really focus. Years of mental conditioning has led me to a place where it's much easier to deeply focus when I'm wearing headphones listening to white noise.
If I'm in an office, nominally for intellectual work, no motherlovin' way.
(I've done both. Equipment case can be tolerated and acceptable. The desk/office situation absolutely is not.)
If I take more frequent breaks I can stretch it to about 3 hours.
If we're losing the AC war, then it's normally the heat that does it.
For really good companies asking if they test code seems insulting :P
Well that's the general expectation anyway for 'tech companies' to be testing and adopting best practices these days. There are even companies nowadays that are tech enabled with apps, engineering departments, etc and they call themselves 'tech companies', but they don't have any tests, code reviews or a CI and take the shiniest tool for the job.
So if I was interviewed at any company, startup or large corp for a software engineering role and they don't have any of the above, I would gently terminate the interview. Imagine if hardware engineers were to tell us that they don't do verification or tests on components that they ship.
As much as we’d like to believe tech shops are at least all run by grownups, things like source control and working builds are NOT to be assumed!
How much annual / personal / sick / parental / unpaid leave is available?
This is a great question; when I have searched for jobs, it's one of the more important benefits to me.Sadly, however, I've found most places have gone to "PTO" -- combining time off for illness and vacation into one bank -- how have others successfully negotiated an appropriate level of time off?
(Context: For a very long time, I worked for companies where sick time was essentially a non-issue; it was essentially unlimited, with appropriate rules around requiring a doctor's explanation or having to switch to short-term disability after a protracted period, but the occasional day or two to recover from a cold and not spread virus to the whole company without having to choose between that and visiting family.)
I feel the same way about 401K matching.
I suppose that briefly turning it around on the immediate interviewer could be constructive, with some people, but I doubt I could pull that off even half the time.
My impression, from HN comments and firsthand, is that people still doing it seem to be thinking one-sided about it (i.e., they want to assess and/or manipulate "the candidate", and they seem to assume it's implied that everyone at the company is good). They probably also think this is convention, and perhaps resent or are suspicious of anyone not complying.
Personally, rather than turning the tables with the hazing, which can come across as hostile or combative, my natural inclination is to have a candid and thoughtful discussion about it.
(Warning: I've had poor success with trying to discuss with people who want to do the leetcode/puzzle-style whiteboard coding hazing. Maybe partly because the conversation only has occasion to happen with people who are still doing it, so it's not a representative sample of the field. I also suspect that, when it's with the more HR/recruiter-type people (not engineers or managers), they tend to not be participating in the discussion in the same way I am, but instead are performing the right head nods, while focusing on their normal modes, such as looking for red flags in what "the candidate" says, formulating how they'll report this, and being careful what they say.)
Company is interviewing the candidate not the other way around, no matter what we like to think.
Edit: Sorry I should've clarified. I am specially referring to companies that don't really have to care about your feelings towards their interviews. FAANGs for example. They simply don't care and there are million others who are willing and happy to go though whiteboarding. They just don't have to put up with your stuff.
Ofcourse you have leverage when you are interviewing at your local java enterprise shop. But who cares about those jobs, pointless to interview them with your smartass questions, we all know they are pretty much all the same more or less.
I can deal with most tech problems and flawed companies, but the above list are my deal-breakers, and I absolutely am interviewing them to find out the answers.
If you assume you have no leverage then you will have no leverage, but that's more because you choose not to exercise it than because you couldn't exercise it.
I disagree. Unless the candidate desperately needs this job, he/she can walk away. The candidate is free to consider "company won't bother to answer my questions at the point when they have most reason to be nice to me" as a bad signal.
> I am specially referring to companies that don't really have to care about your feelings towards their interviews
"This company doesn't have to care about my feelings because they are huge and have lots of applicants and a giant incessant interview machine chugging through them efficiently" is certainly something I'd consider in whether I want to work for them, because it tells me I'd be a cog in a machine. (And if enough people consider that, perhaps they will have to care.)
To the parent question: I wouldn't ask a whiteboard question exactly, but I would certainly ask some questions about existing architecture and rationale so I have an idea what I may be working on.
TLDR if you don't think you're interviewing the company too, you're doing yourself a big disservice and selling yourself short.
I’ve worked for 20+ years but have only gotten serious about job hopping and interviewing for the last ten.
At any given time when I am job hunting I usually have three or four offers within three weeks. Not saying I am a special snowflake. That’s just the reality of the market. I’m very much interviewing the company. I usually have a BATNA of just keeping my current job.
Ofcourse you have leverage when you are interviewing at your local java enterprise shop. But who cares about those jobs, pointless to interview them with your smartass questions, we all know they are pretty much all the same more or less.
Despite the HN bubble where every developer lives on the west coast and works for a FAANG or the next unicorn, that’s the reality for most developers. But there is definitely a difference.
Is tooling important to you? Ask about that. Do you want to push to prod like a cowboy, or does that repulse you? Ask about that. Whatever frustrates you about your current job, you can try to find out before you take a job where it's worse.
Framing those questions to get usable answers is a skill, of course, but if you've got a few areas to ask for, you can use lists like these to find different ways to ask. Just like interviewing, asking leading questions gets you 'right' answers that don't tell you what you want to know, so you want to get the interviewer to go off script and probably be truthful.
Why would you not? You're taking the risk of wasting a few months until you find out that the fit is poor.
Usually it literally does not matter how the interviewer thinks and what they believe is right, you want to know the actual company policy, which often will not be the same as the interviewer might want to.
However, if you're being interviewed by your future direct manager, then you do want to get a perspective on how they think, as their individual attitude towards various aspects of work life will be relevant to you - but usually most interviewers aren't that relevant.
I also ask 'company culture' related questions, my go-to question is ask what the team I would end up in did as a teambuilding event last year, and follow up with who decided the type of event. It tells you a lot on the freedom you'll get, the company's attitude towards people working there, and how healthy the company is.
In a somewhat related point, last time I was designing the coding question, I tested it on my teammmates. They all solved it, and their response was very helpful, and it allowed me to clarify some points in the problem.
But did they all solve in under the interview conditions? ( time pressure, coding infront of strangers, possiblity of not getting the job that you need etc).
I can pretty much solve all leetcodes on my own computer with noone staring at me like hungry wolf eyeing its next meal.
I'm a manager that rarely codes as well, but was still asked coding questions in an interview. It's a bit annoying, but having had managers that have never written a line of code ever, I understand wanting to verify that the manager could theoretically do the work themselves.
I don't write much code on a whiteboard, so that makes two of us.
But I agree that having a discussion about such problems can be productive. It may help separate legitimate problem-solving from mere hazing.
Can you give me an example of a mistake you've made here, and how it was handled?
Ideally, your interviewer will answer honestly. If people are comfortable discussing big failures, it suggests that the company has created a safe environment for people to fail, and signals that it’s an environment conducive to taking risks and experimenting.
On the other hand, if people are guarded when it comes to discussing failures, they might be working in a culture of blame.
You can follow up by asking about their practices around investigating issues, writing post-mortems, and overall documentation.
"Where do you plan to be in 5 years" is actually a really good question to ask a company. Many have no idea (which is possibly fine, but good to know)
Interviews can also be a fantastic place to get real feedback - but you have to do it during the interview; almost nobody gives real feedback after the fact.
"What would give you concerns about hiring me?"
"If you could have your dream candidate for this role, what would they look like?"
"What in my application caused you to call me in for an interview?"
Are a few that I've found helpful.
(Note: I've actually gotten all of these answers, albeit sometimes only after I joined a group (prompting me to develop this test in the first place)).
Fail: "just edit the file lol"
Pass: "edit the file and check it in"
Pass: "edit the file, send a diff, get a +1, and check it in"
Suspicious: "edit the file, send a diff, get your code and style approvers, wait for presubmit, and check it in"
Hard fail: "file a bug..."
WTF are you even doing: "we can focus on code quality issues after this milestone"
As someone who believes in value of diversity (just to be clear), for both organizational and societal reasons, I think this is an important question, for a variety of reasons -- but also a question that candidates might not want to ask.
Candidates might not want to ask, due to not knowing how the asking will be perceived. Or due to not wanting to mention some unapparent quality (e.g., being gay), because they don't know how welcome that will be, or they just want to be treated as, say, a developer, at that stage of meeting prospective colleagues.
It's much better if the company communicates its real policies/practices/culture and status proactively (beyond the standard HR equal opportunity statements), so no one has to ask.
Wouldn’t it be much better to be aware of this at the outset?
I do like this list, but filter it down to what you need to respond to an offer. And that filter will be different for everybody.
Typically when I am in an interview, I explicitly draw that line with the interviewer, saying, "I have more questions, but I also have the answers I need to make a decision if you extend an offer, so we can get the rest answered later if we move forward together."
Like I said, everyone's filter will be different. There are probably valid reasons to ask every question on the list. And also valid reasons to skip every question. We all have different goals and preferences with our careers.
1. What is the demographic breakdown of the engineering team? And, what does the company affirmatively do to foster diversity?
2. What resources do the founders have available — investors, board, mentors, for instance — to help them as the company grows?
3. What is the near term vision for the company? 1yr/5yr?
4. What resources are available for professional development for managers/directors?
5. At $CURRENT_COMPANY, the company is serious about reviews upwards — as a manager, my direct reports are consulted in a formal process at review time. Is there a similar process at $POTENTIAL_EMPLOYER?
6. What is the cadence and process for reviews?
For quick reference:
- What will my job be? At first and after few months?
- What is your work policy for employees?
- Software/hardware that I will get?
- Can I participate on/run side projects?
- Is there a budget for conferences, further education, bonus?
- What is the history of this company and how do you see the future?
- Will you measure my productivity and how?
Remember that things tend to be fluid, re-organizations happens often, having a bug tracking system doesn't make bug handling efficient and CI/CD doesn't mean your time to deliver is necessarily short.
Those are definitely seeds of conversations rather than something you can 100% rely on. But if you have doubts about the organisation and then hear "no bug tracking, we don't need it" without explanation, then something's definitely fishy. That's one of the red-flag questions. Then again if they don't but have an explanation, maybe there's something really interesting behind it.
Getting asked questions like this, in most cases, is enough for me to end the interview. I don't want people who can cite off memorized answers to random questions. I want driven people who are excited to learn what needs to be learned in order to push the company forward and make work a fun place to be. Confident people can learn to solve difficult problems on the fly, with ease. This is more valuable than being able to recite a textbook answer during an interview.
One of my favorite interviews of all times:
Interviewer: "Hello. I have your resumé in front of me. I am going to ask you a bunch of questions in rapid succession, and I just want yes and no answers. Are you ready?"
Me: "No."
Interviewer: "Excuse me?"
Me: click
I’ve never been in a position where we were paid for on-call (i.e. fix prod at 2am) work. Is that not typical?
We had a quarter of big router changes and I got enough comp time to take a decent vacation (padded by PTO days, mind you)
Some data center techs I knew would get time-and-a-half for any on-call work they had to do.
That gives me pause. It makes absolute sense, but it never occurred to me.
Specialisation is high, training is long, skillsets frequently expire quickly (at least relative to careers / education), certification lags worse than training does, in many instances, and information aquisition costs on both sides of the hiring line are high: employers have difficulty in finding good/suitable candidates, candidates have difficulty in finding and/or assessing good employment fits.
Rewards once on a gig are highly disproportionate, with some high-paying companies, a strong gamble on equity (usually fails to pay off, very rarely does), and increasingly draconian employment terms and contracts (again, California law is exceptional, but as labour gets priced and simply slotted out by housing prices and unavailability, other centres with far less favourable working conditions may gain traction).
The idea of working as an individual at a given company for 18-36 months, then moving on (typical job tenancy) seems highly inefficient.
Chunking labour into a force that can be deployed might address that. Less a union than a guild, perhaps. Structuring that (and accommodating various state's and nation's employment and organisation laws) is an interesting challenge.
1) How long has the team/project I'll be joining been around?
Are you joining a team that's in maintenance mode or are they projects other than just refactoring/simplifying or migrating code to the latest and greatest <programming language/stack(cloud)/jdk version/whatever>. As an eng and even manager you really want to join very young teams and large teams >= 6 people (is the company serious about this project? burn rate > 1 million year). That gives you most runaway to develop something new and then brag about all the features you landed at promotion. Most large companies give fledgling teams 2-3 years to become viable. Try to stay away away from teams that have been around for a long time unless it's your area of expertise or you're excited about the project/work.
2) What's the churn rate? Who's the oldest eng. team member (in terms of how long they've been on the team of course) and was the person promoted while working on the project? The higher the level this person is on the team the easier it will be for you to get promoted.
I got a genuine and thoughtful answer. It helped me to establish quite clearly what value systems wouldn't fly in the company which guided me on how to behave.
It worked out well.
Essentially you're trying to figure out "if you hire me and what is true about me then things won't work out?". You want to know if you have those qualities. If you do, you shouldn't accept an offer if you get one. It's a reasonable and good question.
I've known excellent people flame out in weeks because the companies values just didn't match their own. They weren't bad employees either. It was just a difference of opinion.
E.g. "how do you use source control"?
What is the intention of this question. What value do I gain from this question? It implies that I have a specific way of interacting with source control in mind and if they don't follow the say way then I'm unhappy or what?
Interviews take such a long time, I am of the opinion that I only want to ask questions which genuinly help me later to make a decision.
e.g. instead of "what tech do you usually use?" I'd ask "I've been recently playing with X and think it's a brilliant use case for doing Y. If I were on your team and I'd want to do Y with X, would that be an option, or what's the protocol in tech decisions in your team?"
With a concrete question like this the interviewer has to explain to me how they actually decide on tech and give me a more or less yes/no answer to whether what I want would be possible. I find this a lot better than a generic tech question and then get bombarded with a ton of buzz words which don't really say much about how open the tech teams are to picking their own tools for the job, etc.
BUT! This problem pales in comparison to the difficulty involved for candidates trying to judge companies.
Now, I won't go as far as some of the other posters here and point to rampant deceit. However, interviewers will generally try to be positive, and it's very difficult for an interviewer to say "don't work here".
What circumstances does it cover?
What is your threat model?
(Depending on response, address missing elements: external threats, natural disasters, power out, hardware failure, fumbling fingers, network-based attacks, insider threats, APTs. Acknowledging and not further addressing some particular threat is acceptable, ignoring it completely is not.)
How frequently do you drill for threats / failures? Practices such as Netflix's "chaos monkey" are close to best of class. Not at all is unfortunately the norm. Here I'd like to see some positive answer, but a widened eyes "oh, we should do that" would be encouraging, Dismissal would be many red flags. People respond to disasters according to their training and drilling, and failure to do either leads to poor response.
What is your professional development process? Name specific programmes / practices for entry-level to senior staff.
"What's a really good day?"
"What's a really bad day?"
Who's been promoted recently? Why?
What reasons have you had for making staff redundant?
What reasons have staff had for leaving?
An invaluable question if honestly answered.
I'm certainly happy that viraptor shared this valuable resource, don't get me wrong, every little step in the right direction is a good thing. I simply would have liked it to have a better name in order to convey a different message.
I'll improve the introduction to make it clearer.
What is the attrition rate for the manager and for the company in general. If a manager has high attrition rate, that's definitely a red flag.
It's a forward question, but your time is valuable. If you are going to spend a large chunk of your foreseeable future working at a company, they should have a good answer to this question. If they hop around all awkwardly while trying to come up with an answer - next. I want to work with people who are excited by the work they do. Plain and simple.
Always remember, the interview goes both ways. Be sure to interview the interviewer.
These are sre focused, the first one indicates if sres are toil driven or overloaded.
The second shows that you have agency as a sre and can have a positive impact.
The third goes into their culture around mistakes, monitoring and on call.
A better question would be "why do you use [the source control they use]". The answer, if coming from a knowing person, may tell you quite a lot about how the technical decisions are taken in the company.
Cause if the answer is "source safe" or something like that...
Something I wish I asked during my last big interview: Do you have a project schedule? Can you show that to me?
If there is no schedule, or a very ambiguous one, that's a big red flag.
Worked well.
- Are you profitable
- If not, how long is your runway^ I wouldn't agree to this. If the interviewer can ask many questions about my working style, why can't I ask the same about the company with whom I am going to spend the most of my daylight with?
If you ask something that shows you did no research or don't understand the role description at all, that's actually going to count against you later. Same for holding someone busy with simple questions if you had a scheduled interview slot.
It was very telling many years ago when I was told "very low, almost non-existent" and then promptly learned from my new colleagues that it was extremely high....
* how much time does it take to approve/create certificates?
* how many engineers quit within first year of joining company?
When was the last time you thought about changing jobs? Why?
When you joined this company, what were your goals? How many of them have you met?
- how many quit in the last 3 years (followed by ”why so many” or ”why so few”)
And
- can I sit with someone that shows me some code I’ll be working on?
"What happened to the last dev to work on this?"
What does that mean?
Another is that people with lots of experience know and rely on straightforward, correct, reasonable solutions. It sometimes takes a someone new to say "why don't we try X?".
Finally, sometimes there's just work to do, not new things to figure out. If everybody is senior but lots of work is pretty basic, at some point they'll get bored and leave.
- What does the onboarding look like?
In large part because of how rapid development is in agencies, how often you change projects, and how small agencies tend to be, onboarding is often non-existent beyond showing you the software they use and showing you how to set up your Vagrant or Docker. Most of it is on an as-needed basis and you'll be given the information you need for each project you work on, thanks in large part to how ad hoc each job can be. I've experienced this myself at all three agencies I've worked at, I have friends at two others who say the same thing, and it's what I was told to expect in school.
- How do you test code?
This will almost always be "put a dump in the code and see what's wrong". Agencies don't often unit test and because of how often they switch projects, having a consistent debugging environment is often more trouble than it's worth. You should still ask this, just don't expect the greatest answer.
- How do you integrate and deploy changes? Is it CI/CD?
Due to the quantity of projects, this will often be "no" unless the agency primarily focuses on larger, months/years-long projects. For the most part, clients don't want to the time it takes to pay for automated tests/deployments and often don't host with you anyway, so it's usually either "run a git pull and compile assets" or "package the code in a zip and send via Dropbox".
- How do you prepare for disaster recovery?
Disaster recovery is often an after thought at agencies. Usually the disaster recovery is "spend a few days restoring backups and eat the costs". Unless you are interviewing for a security or senior position, this question doesn't really make sense to ask at an agency anyway as you are unlikely to be involved in any recovery.
- How quickly can you respond to security issues in the code or dependencies?
Because everything is paid for by the clients, if they don't pay for it, they don't get it. Don't expect much more of a response from your Agency interviewer. If you get an intricate response, I would suspect it's exaggerated. There are exceptions, but agencies don't make money making sure the sites and apps they build are up to date, unless the clients want them to be (and most clients do not see the value in it)
- What's the product/service schedule? (n-weekly releases / continuous deployment / multiple release streams / ...)
Again due to how many projects you work on regularly, this may not get a good response. Maybe a "Our Wordpress sites take 2-3 weeks to build, 1 week to test and fix, and 1 week for client review" type response, but anything more standardized than that likely isn't happening.
- What are some ongoing challenges the team is experiencing that you are yet to resolve?
This one also likely won't get much of a response due to how many projects there are and given that most of the team is working on different things than their neighbor.
- What's the promotion process? How are requirements / expectations communicated? - Is there a separate tech and management career path?
Agency structures are generally really flat. 1 guy at top, maybe a few seniors below him, then everyone else (but everyone, including the seniors, report to the 1 guy at top). Don't expect promotions, but raises will happen regularly. You can ask this one, but you'll probably be more interested to hear when/what to expect from your raises (agencies are often generous in this respect)
- Are there any company-wide resources for learning available, like ebooks subscriptions, or online courses?
Regardless of company type, know that this will depend entirely on company size. If you're interviewing with a 300 employee company, you should expect it. If it's a 10-40 person company, you probably shouldn't and it may not be worth asking and may make the interviewers think you're looking for something they aren't providing.
- Can I contribute to FOSS projects? Are there any approvals needed?
This is a GREAT question to ask during the interview if you are hoping to work on FOSS. Agency rules on this vary greatly and it's one I personally like hearing from candidates.
- Are there any non-compete or non-disclosure agreements I'll be asked to sign?
Another great one to ask simply because you will work on so many different projects from so many different clients from so many different industries. My previous employer tried to get me to sign one saying I wouldn't work with any competitor of their customers for 3 years after I left. That would have killed my ability to find a job at another agency afterward. It was part of the reason I quit there. My current agency is basically "Don't talk about specifics that may be confidential during development, don't steal our customers after you leave" which is more reasonable and acceptable.
- Are you profitable? (+ the other financial questions)
If your interviewers are developers at an agency who don't also own the company, they likely will not know any financials specifics
- Remote Work
If this is important to you, make sure to ask about it in the interview. It varies greatly from agency to agency. I interviewed at a place that only expected you be in the office once a week and work from home 4 days a week. My current place prefers if you keep the remote work to a few days a month at most.
I wonder if that's often how it's perceived on the other side. I love when the people I interview ask me questions. If they're interested in something, not only am I going to answer as best as I can, I'm going to be interested in why you it's important to you. It can be a great conversation, and I'm not even trying to sell the position :-)
People really don't do it often enough - that's why I decided to post my own list.
No doubt, the most obvious rebuttal is that the interviewer will be doing their best to manipulate no matter your tactic, so you either circumvent them or acquiesce to them.
In my experience, when interviewers don't switch to selling the position, this is a bad sign. I'm confident I know my job, am open and honest about what I know and don't know, I don't need a 101 quiz of whatever tech they have in mind. If this happens I usually cut the interview short and just tell them this is probably not a good match.
I'm happy to be adding a few more questions to my list now :)
I’m tempted to say that the questions they ask carry more weight for the final result than the ones that I did.
"How long has this position been open?"
is useful to subsequently ask
"so why is this offer letter expiring in 48 hours?"