having worked in tech and now running my own company..

the honest truth is that maybe 10-20% of SWE (at best) are “good”. sure it is harsh but i won't lie. if you're good you'll probably relate.

the rest kind of suck.

i’ve never gotten anything lower than Exceeds Expectations in my career so I’ve seen how awful some engineers were. i’ve seen how amazing a tiny minority were and i made them my mentors.

these days i have a simple policy.

if they cannot think, they are fired. why waste resources (time and money) on someone who can’t use their brain? i’d rather give AI credits to someone who uses their brain.

thinking is the humans job. the ai needs to execute on what the human thought of, improved, planned.

Everybody talks about finding that mythical 10X but in my recent hiring experience it's more like there's a whole bunch of 0Xs and the trick is finding the actual 1Xs among them.

This!

All my experience in trying to hire developers has been wading through an endless stream of people who were just useless.

Me: I want to represent a 2d grid, what data structure should we use? Them: A string?

This was someone applying for senior engineer. Others I've had filled their CV with SQL related acronyms. But couldn't explain what a foreign key was and then stubbornly insisted that at their current corp they would never ever use foreign keys in their SQL database!

I've had senior engineer when asked how to check if we had a 2d array with an item at x,y tell me if anything is on the same column or row, they couldn't do it, couldn't even verbalise how to approach it.

"Web Developers" who didn't know the difference between GET and POST. Web Developers that have never heard of PUT or what it would be used for.

I have a question I usually ask which is "How would you convert a Julian yyyy-ddd date string to a military yyyy-mm-dd date string?" (I explain how a Julian date works if they aren't familiar with it.)

The answer that almost guarantees I'll hire you is "there's got to be a library function for that, so I look in the manual". Almost as good is somebody whiteboarding how they'd convert ddd to mm-dd (and then account for leap years, etc.)

I get a disturbing number of people who say things like "I would communicate with the person asking for this to see what they're really intending blah blah"

My favorite answer was on a phone interview where he just hung up and wouldn't answer when we called back.

> I get a disturbing number of people who say things like "I would communicate with the person asking for this to see what they're really intending blah blah"

Sounds like they know this question is a “gotcha” question but just misinterpreted which direction you were going with it.

Some will ask a question like this expecting you to treat it like a puzzle and outline how you’d solve it as-is; others ask it as a way to probe how you’ll deal with strange or misguided requests (the case you noted as disturbing); and others yet will ask it to see how you’d practically solve it (your intention).

Seems like a bad interview question without context regarding kind of answer you’re looking for.

No, it's a pretty good interview question because it tells me if somebody's instinct is to reinvent the wheel or not. What I didn't expect was how many people couldn't say how a wheel even works.

People are not generally answering interview questions based on instinct, but rather based on what they think the interviewer wants to hear to get the job. I would have interpreted this is as a leetcode style algo question and started by treating it as such, even though IRL my first instinct would be "get a lib that does it". Awful, awful strategy.

It appears that either answer would be accepted, and so I'm fine with it. If it really is there is one correct answer then I'm against this. This feels like a problem where a good enough solution can be done in the time of an interview if you do it by hand (though if anyone knows about dates they will expect there is a lifetime of fixing special cases left if you don't use the library)

I prefer fizz-buzz as a question because it is obvious there isn't a library. It is also a problem you should be able to do in an interview. It has enough weirdness that there is no best answer, despite having several workable paths you could try.

Nope, not remotely awful. I've made great hires from it, which is its point.

Its not. Any interview question where you are looking for a specific answer is already suspect, but especially if you don't properly provide context for the question in what you would expect, things become a shit show.

If you would ask someone to write a piece of code, and a part of the problem is this conversion, then you would be right to expect they reach for a library, but even if they don't you would be giving them the opportunity to explain themselves, and judge the explanation, not the answer. Also, if your test is "does this person reach for a library at the right time", you could do a lot less esoteric and confusing by just asking them to add 10 days to a date. If you just ask this one specific problem, it is likely they assume you are looking for them to demonstrate the skills involved in actually solving the problem, i.e. leetcode.

This is also why some people give you the blabla answer, because it is indeed very unlikely that someone needs to do this legitimately. This is because its a toy problem. Someone's professional reaction to the problem in isolation should indeed be: this is weird, I've never been asked something like this, what's up?

Finally, even though the question is terrible, I would still rate the "whatsup?" response higher than the "leapyear" response. I would want a developer to triple check that this problem needs solving, before they would solve it themselves.

Finally finally, if there's one answer to one question that, when answered trivially in a way literally taught in most basic programming courses (use the standard library / a third party library), makes them a "guaranteed hire", I also have significant doubts about the level of talent you are bringing in, as any experienced interviewer will tell you that qualified people will get important questions wrong, and unqualified people will get important questions right.

I understand that this reaction might be quite harsh, and I know better than anyone that its hard and time consuming to do good interviews, but please consider that you are rejecting people who may be very confused and sad by this way of rejection.

But that's why the context of the question is important. It's not clear from your comment, but I'd give a different answer if the question was strictly academic in nature (reinventing the wheel) or focused on practical work realities (use a library).

Even using a library isn't that practical. It may be the zeitgeist in JavaScript but that doesn't mean it's actually a good idea. Nobody remembers left-pad? If you're writing Java or Python then checking if your date class can already do it is a good idea.

> My favorite answer was on a phone interview where he just hung up and wouldn't answer when we called back.

Heh ... yeah well I wish I had it to do that.

However, you are asking gotcha questions.

Someone else said it on HN a couple years ago...Something about how there's no such thing as a 10x engineer, but there are a LOT of 0.1x engineers and a few 2x.

The absolute worst is someone that tries to brand themselves as a 10x engineer by constantly using programming terms like "dynamic programming", "polymorphism", "recursion" and the like, but they're really a 0.1x engineer because they don't truly understand what any of those are and when they should actually be using them, and so try to shoehorn them in when they don't need them while also not understanding them, and end up writing low-quality crap.

Took too long for management to get rid of that guy.

Also now is it 1x in individual productivity or >=1x in team productivity. As anyone multiplying teams productivity by less than one is bad. Probably lot worse than actual 0x.

Someone who produces absolutely nothing and have no impact has cost, but is still better than someone who produces net negative. And the people who solely act as interface between LLM and whatever might fall to later category.

It's the Pareto principle of course, as well as the normal distribution. Many firms have been able to succeed in the market just by hiring only good engineers over average ones.

yeah but these days it is even more important to filter out bads

and even at "good" companies you have people who can game the system to get in, and then they struggle to get anything done on time or be responsible for taking on and completing any initiatives bigger than a single task on a bigger scope.

Indeed. You really need to find people who don't want to play politics and instead get stuff done. I'm still not sure how to hire for these sorts of people in the age of AI, where people even cheat in interviews. Maybe probation programs? Have multiple people work for a month or two and cut those who don't succeed.

this is what I've been doing, and obviously I have a startup so I need to double-ensure that I don't onboard any bads. you can start people off as contractors too.

I still think a single in person LC style (doesn't have to be LC per se, could be domain specific) logical thinking/reasoning exercise is useful. I want to ensure the person can actually put 2 and 2 together and think. This is just a fast filter.

If they seem like they can think, then I like to do 2-3 systems design interviews. I'll try to give them something related to things I like, such as graph structures, writing a complex query that needs to be dynamically generated, or something related to infrastructure or how they'd do something that I've already done. After all, this is MY project they're joining.

So far that has worked well.

Few more things -

I like to test if they are a humble type (they can work on a team putting ego on the side - the mission is our number 1 priority). if they say they know something that i know and asked, then they can be sure I'm going to drill them on it. if it turns out they lied, i'm not wasting more time. Thanks for your time, take care. This is very important to me. Just say you don't know, it isn't a big deal because ever since like 1994 that has not been an issue. You can just learn things online, and AI makes that even faster. I am never afraid to say I don't know something, and I've asked plenty of "dumb" questions (while doing some due diligence first) so I don't really mind.

Can they handle information overload? I am the type of person who has multiple branches in my head of actions I can take next, so while I may appear stressed I'm really not. Can they keep up? Our goal as software engineers should be to come up with solutions that solve the problem in a way that makes building on it simpler in the future. My goal is simplicity and effectiveness. So I'll see if they can keep up, and eventually reduce the work to be done into atomic pieces. This is a fun exercise because it is collaborative and we get to bounce ideas fast back and forth.

Finally, I like to let them use their favorite tools, including AI tools (codex, claude, some ppl have esoteric custom stuff which is cool), to solve a problem together. It might be code related, it might not. Really depends on my mood. I like to see how they work and what sort of output they can come up with. This filters out people who only ask AI stuff, instead of having some framework they've already developed to be effective.

Honestly I don't know how to scale this process. I'm not really going to feel bad either about firing fast, ultimately this is a business and I don't want customers to suffer because we have some issues internally.

At the same time, I wonder if I even need to build out an org with 100s of people. That was an inefficiency (look at all the layoffs), and it is traumatic.

If I can find a few great people who can be supercharged and turbocharged and electrified with AI, then they can take on & own bigger responsibilities. My number 1 goal is to ensure they're with me on the mission, and after that all things seem to sort of fit into place.

Firing fast works both ways. If I joined your company and I thought you fired someone too fast I would leave, not because I might get fired, but because I've seen where that kind of leadership takes things.

thats fine you can leave. it’s probably for the best for us. that’s why the mission is so important and requires a great filter.

mass effect 2 is my favorite game ever. it is all about putting together the team, and ensuring you work with each one of them to get their whole loyalty.

each member is a badass, in their own regard. it’s also a video game and it’s linear unlike real life. but the mission is super important to me.

and when others have their own passions they want to express and carry out via fulfilling the mission, that’s super key imo.

so far it’s worked out fine. people get the fast firing thing. they know if someone isn’t onboard with carrying out the mission they also don’t want to be burdened.

like we are seriously helping people in an underserved industry. it’s insane.

i hate working with mids and bads, they are going to bring everyone else down. so i want to work with the best people i can get. they don’t need to be MIT grads paper weight types. they just need to be mission oriented and focused.

Might not be solveable. At some point the effort in finding that someone might be larger than the benefit you get from just using the second, third, fourth best. Or using some flawed approximation hiring mechanism. There's just so much noise now. And it hits the good job seekers too.

[dead]