My startup failed, then I found out I was unemployable
davesullivan.is
davesullivan.is
It can be done. As a self-taught developer, and after years of startups and consulting, I got my first FAANG job at age 40. I hadn't done any real kind of interview in 15 years. I spent 90% of my time preparing for CS questions, and struggled at the first one, but ended up at FB, and Google a few years later.
My mindset wasn't that they really cared that I could do these obscure programming exercises that I hadn't used once in 20+ years of real-world programming, but rather that I could prove that I could learn and adapt.
"Have they tried try to invert a binary tree and see if it solves the problem?"
The only reason we accept it as the status quo is that people accept it and say "this is the way it is"
If you look at Goldman Sachs or Microsoft, BOTH are investing heavily in tuning their recruitment process to identify and hire neuro-atypical people.
It is a business strategy that is paying off.
Who's to day the kinder & gentler process they design couldn't be just as easily be applied to hiring in neuro-typicals.
https://www.microsoft.com/en-us/diversity/inside-microsoft/c...
https://fortune.com/2019/12/07/autism-aspergers-adhd-dyslexi...
It doesn't change because it hasn't changed. Not because it can't.
Ironically, the old-school hackers who made the word "hacker" famous, like the ones who built the UNIX ecosystem before Linux was even a thing, knew their CS fundamentals like the back of their hand. They'd have zero trouble with the coding aspect of these interviews.
Very few people on HN are hackers.
> "If you look at Goldman Sachs or Microsoft, BOTH are investing heavily in tuning their recruitment process to identify and hire neuro-atypical people"
That's just a publicity stunt. I'd bet money that few of the neuro-atypical they hire last long in those places.
Even if they did, that doesn't necessarily mean they can shuffle an array or flip a BST under pressure on a whiteboard
But I honestly can’t believe people are acting like reversing a binary tree is hard. This is like something you’d expect high school students with the most basic you data structures knowledge to be able to do.
Like I'll agree that there definition of hacker in 1983 https://en.m.wikipedia.org/wiki/WarGames is different from the one we generally buse today, but the world has changed a lot in that time.
Did white-hat exist in '83?
The definition of hacker has evolved from "one who uses computer tools to gain illicit access to protected computer systems" to "one who makes shit work and does cool stuff"
If you're going to imply that only the 1983 definition is the one anyone can use, I feel like you're going to be off on that island mostly alone.
Also, it's not like people know nothing. A good interview process learns both what the candidate does and does not know, how what they know could be useful, and how capable the candidate is in filling a knowledge gap if there actually is one between what they know and what is actually needed for the job. That is of course in addition to learning whether they're nice to be around or not.
The best screening I ever went through was for a job where I'd be working on a Spring Boot app with a React frontend. For that screening, I was asked to add a simple feature to an example app.
It was clearly toy code, so I knew they weren't trying to get free work out of me. It was also representative of the kinds of tasks I would be doing, which let me know that I would enjoy the job, and let them know I would be good at it. I was hired on the spot.
I've written algorithms to reverse b-trees, and I could figure it out again if I had to. But I don't have to, because the standard library is a thing, and that task tells a potential employer nothing about my skill set.
What they're actually testing for during the in-person interview is your ability to be a good worker bee. They're filtering out people like you who would question the point of doing task X. They want people who will do task X without question. They don't want workers who will ask "Why are we doing task X? Shouldn't we do task Y instead?" For most positions at these large companies, the person who questions the efficacy of task X is a different role -- the role that is instructing you to do task X.
With these trivia questions, they are in fact telling you as a prospective employee the kinds of tasks you will be doing. They are letting you know that you will be doing a lot of pointless work, you won't have any say in the work you will be doing, the work you will be doing will seem trivial to you, and you have to be okay with that. If you're not okay with that, it's not the job for you.
I am a father to a 2 year old, I have a mortgage and an existing full time job.
The time investment required to go through a bunch of algorithms that are almost exclusively used in passing coding interviews does not offer the same ROI as, for example, streamlining a process that you are currently facing on a day to day basis.
On top of that, something that I've learned recently about myself is that I have a tremendous fear of failing coding interviews.
You see there is an emotional component to the effort you put in to doing one of those things. You go through the work to get accepted into the interview process then you find yourself face to face with "one shot" to impress.
Maybe they've even flown you out to their location so you can go through this whole experience on site. At that point the optimistic among us might start thinking about things like what our lives would look like if we worked at "technological mecca" doing really cool shit for silicon valley dollars.
So you start allowing yourself to think about watching the ocean on a sunny day eating avacado toast while you watch your now bleach blonde son playing in the surf. Your wife is happy too. You have this beautiful life that you're providing for those that you love.
(in your fantasies you don't worry about the cascadia fault-line, the dystopian nature of US healthcare, or the fact that california seems to catch fire for a month every year nowadays)
ANYWAYS, you go in, you give it your all. Maybe you think you nailed it, or maybe you can clearly come up with 20 better solutions in the 20 seconds after you leave. Maybe you studied 50 concepts intensely, but missed the one they picked to ask you about. You didn't get the questions in advance or anything.
It doesn't matter though, you missed a semicolon on the whiteboard and your code doesn't compile when they type it in.
You get a terse reply from your original recruiter "not a good fit at this time" ... there's no insight into what you did wrong or where you could get better. That opens the company up to legal liability. Anything more than "thanks" risks exposure.
So you're left with days and weeks of effort for nothing. On top of that you have a real long flight home where you get to grieve the loss of that beautiful life you imagined.
Do you work in a place where you can tell your colleagues at work that you were interviewing? If not, you can't even talk to the people in your life who are most likely to understand the pain you're going through.
So you get to suffer alone.
So. What does it say about someone?
Absolutely nothing.
One thing I'd say is that essentially none of the people I know in other fields have a similar opportunity for a relatively small amount of dedicated study to pay off so well.
(...and, and, and...)
But you're SO right.
I expect that publicly committing to internet-strangers that I'm working on the course, producing materials for them &, having a scheduled weekly discussion around the topics will help with both learning the content AND keeping us all motivated.
Your initial comment was one of the things that helped me come to those conclusions, so genuinely thank you, kind internet stranger for sharing your wisdom.
I've actually started writing a self-study course on passing the FAANG, as a trained educator with a bachelor of Education and five years experience as a high school teacher, I think I can make a fair shake at designing a series of free learning materials on the subject.
I started inviting people along and have built up a list of about 20 people who've at least SAID they'll stop by to my live streams (once a week) to discuss the problems of the week.
It's going to be a structured course https://github.com/AlexChesser/faangterview-preparation-cour... I'll be releasing under MIT.
I don't know that the switch would have flipped in my head about the ROI of the FAANG interview.
As I said, it took a couple days to actually sink it but you have completely changed my mind. I now completely agree with you that they are worth doing for a number of reasons, many of which aren't financial at all.
I see them as equivalent to the Bar exam for Lawyers now. Would you hire a lawyer who said "I don't believe in the bar?" (I think we've seen how that played out with the Kraken lawsuit!)
Would you go to a hospital that said "We don't believe that doctors need to have done the USMLE"?
In both cases hell no!
You're right. This is not arbitrary or cruel, it's just a professional qualification. Sure there's some luck involved, there's the chance of personality conflict. There's all sorts of potential downsides... but there's also the upside.
Being better at my craft overall is the ultimate reward. If I'm a better developer overall, the money will follow regardless of whether I get in to a FAANG
1. DO NOT get emotionally involved or excited about an opportunity till the time you see an offer letter - those reeeallly sweet people that are so happy and courteous and smiley will switch in an instant, snap! throw you out faster than a used disposable cup and will not so much as give you the courtesy of a reply. They don't give flying f about you no matter how many hours they themselves invested in the process. See for them, this is paid work to talk to you, so they don't give a shit they do it for 10 hours and still drop you without even sending you an email. You are working for free during the interview process and have much more at stake in this process than the person you are talking to. You feel you're having a genuine human interaction with them? no. You think it went well because objectively it went really well? Don't worry you'll get a 2 line generic rejection email.
2. DO NOT ever gauge your self worth as a developer to passing or failing an interview - you will destroy your own morale. Take hints and learn to be better, no doubt, but the decisions people make about you sometimes don't have anything to do with you specifically so don't take it to heart too much.
There is no ultimate solution, it always depends on specific person you're talking to
Its seems to be an extremely competitive, eat or die type lifestyle that would require many more hours than a normal job. In essence its its own marriage of sorts, or at least in competition for non-work relationships/marriages.
And there's nothing wrong with the people that choose to do that. But it seems obvious even in the success stories.
I'm extremely competitive, however I also value family over all else. I would much rather spends dinners with my kids, and weekends with my family enjoying the fruits of my labor over having a line on my resume. I know that if i ever went that route, it would absolutely come at a cost, most likely my marriage at least, and probably some level of relationship with my children. Its frankly not worth it for me.
They have maternity leave, and they have resources so you don't have to be on call constantly as it is with smaller companies.
I could easily take some time if needed. My senior admin is taking a month of paternity here in a few weeks, as he did with his first. I have a first line guy that has been in and out for months for various reasons. It is a strain on others in small places but like any place if you document and cross train a bit it’s not terrible.frankly it’s a stated goal for my teams and something I have implemented across several roles and sectors in my career (even if I didn’t get to reap the benefits)
Colleagues of mine that went FAANG stated similar. Amazon notoriously has an unlimited time off policy. That buddy hasn’t made the family vacation tradition since he started. The first year he tried it he basically worked in the condo.
So from what I’ve seen, at least with Amazon, it’s de facto cutthroat and not so much a benefit.
Though I understand I’m possibly attributing that same experience, which may even be localized to his team, to a much broader set, based on the similarities of their culture/workplace.
Many of these places have showers and lounges and free food etc. and frankly I don’t want to work at a place that there’s a culture that encourages eating and sleeping there. Again I prefer to do those things at home or break from work during breaks.
OP perhaps doesn't have the constraints you have.
As an aside--
Do you really expect A. someone who has never met you and who has B. written a comment online before you arrived to reply... to know your life conditions or to tailor it to every possible human life outcome?
That is, because you've had children, does every comment online now need to ensure its content is in alignment with your perspective? That sounds like a failure to empathize, on your part.
For example, if I write something... do I need to make sure it's prepared in a way that 100% of people can relate to it, throughout time & space? Such as fathers of children, amputees, astronauts, etc?
It sounds like we're so diametrically opposed that it could get pretty heated. At least from my end. You do have a right to your opinion, but I don't want to play in the space where I could get emotionally dysregulated by some dude on the internet.
I'd rather not bring a flame war to the HN community.
I'm also not entirely sure that your argument is in good faith and i'm really not in the sort of place where I want to tease out the things you say which are hyperbole versus the things you really believe.
Do you really think that I said all interviews should be tailored to all people throughout all time and space? I can't believe that you really think that, so you can't be arguing in good faith.
Are you really saying that you think it is unreasonable that we expect accommodations be made "for amputees"? Like their role or position in society is somehow a burden on you, or god forbid employers?
Honestly, maybe you do. Maybe you're super into eugenics. I don't want to find out really. It is best that we go our separate ways.
I hope you have a very peaceful day.
1. It's going to be okay.
2. One day, you will recover from this comment and move on with your life. It will take time, but just take it day by day for now. Every day you're able to regulate your emotions after this comment is an achievement.
___________ Now for the comment:
0. Intro
Thanks amigo. I think you've taken it in the wrong direction, intentionally. (Given the current politics of hyperbolic outrage bait, I typically assume overly sensitive people prefer to [i.e. at least pretend to be] outraged over strawmen, because that's the current trend I see in western society.)
________________
1. The strawman
Your strawman implication: "You don't think accomodations should be made for amputees?!?!"
My actual quote: "For example, if I write something... do I need to make sure it's prepared for" ... <examples of various potential peoples' widely divergent qualities>
Good lord. Way to take things out of context, and then get outraged over your own strawman.
Look... I literally said "if I write something".
and you literally implied "you think it is unreasonable that we expect accommodations be made"
Where did I say anything about "accomodations"... my comment is essentially that you fail to see that no one can predict what stranger (and the qualities of their life) could possibly happen upon their comment.
Our interaction went something like this:
A. Random father arrives to see a comment wasn't tailored to his needs and claims the comment doesnt empathize with him
B. I tell the father that it is he who lacks empathy for expecting internet strangers who arrived in a discussion before he did, to somehow prospectively predict his life qualities/needs for empathy as a father, and tailor their comment specifically for him.
C. The father doesn't appreciate the exposure of his hypocrisy. Decides to paint a strawman involving employer accomodations for amputees, eugenics, and emotional dysregulation due to online commentary (while also assuming my gender, for bonus points of course)
________________
2. The strange & unrealistic
... Also, regarding: "the space where I could get emotionally dysregulated by some dude on the internet."
Uhh... yeah, First of all, you just assumed my gender... something tells me you're not very consistent in your political pretense.
That said-- welcome to Earth. It could get a little rough for ya... <sarcasm> Maybe you should avoid everything that could possible evoke stress, rather than adapting to inevitable stress</sarcasm>
___________________
3. Left field
Am I into eugenics? (Firstly... What part of left field did that come from?) We all are, whether we like it or not. Are you attracted to attractive people? Guess what-- you're a eugenicist.
All organisms are designed by evolution to seek the best quality genetics for their offspring, so again, welcome to Earth.
"Just like adults, newborn babies prefer to look at an attractive face, according to new research carried out at the University of Exeter."
Source: http://www.bbc.co.uk/devon/news_features/2004/baby_faces.sht...
Babies are eugenicists! The horror!!
In short, I am a specialist, and am hired accordingly.
And lots of bad stuff: the communication burden of wrangling huge numbers of people, bad decisions by leadership that you're helpless to impact, just the general difficulty of having one's values align perfectly with those of a big shareholder controlled faceless blob, figuring out what to work on that will be both satisfying and aligned with the right peoples' goals (that is, fun coding projects are often not impactful while thankless slogs are, at least for more senior folks), etc.; essentially, the politics are harder to navigate and feel satisfied with.
To highlight my first two positive points: the stability and compensation has allowed me to pay down all our debt, buy a house (recently refinanced to a 15 year mortgage), save up a year of expenses, allow my wife to go back to school, and pay for a couple kids to be in a lovely daycare. Most of that would have been much more difficult in my previous life in the startup world.
I'm very happy I got the job (when I was about your age), but I also think often about leaving it.
Hope that helps!
The compensation is also something that is not as clear to someone who had a career arc like me. I've always been able to make money to take care of myself and immediate family, but making consistent FAANG money changes the way you plan and help people. I've been able to help one family member go to school, another go to med school, multiple members to move closer, allowed my parents to retire early so they didn't have to work customer facing jobs during the pandemic, donated tens of thousands of dollars to local organizations, etc
If I was single I might've left and worked at startups or smaller companies, but I wouldn't now that I see how much impact I can have on those around me by just going to work and working hard.
As always, to me this sounds like a real waste of time. I'd rather be working on a real project (working for people who value work on real projects), not practicing for an interview.
But that's me.
I don't like that that's how it is, but that's what the game is, and most people are in no position to change the rules of the game.
I also acknowledge that despite all its flaws, the SWE interview landscape is still better than say, that for lawyers, where if you didn't graduate from a top law school some doors are immediately and permanently shut for you.
You can still get into a top tech company without an outstanding pedigree. The closest analogue to the lawyer situation is that if you have a top tech company on your resume, I'd say many doors are opened (or opened much more easily) to you than someone without such name brand companies on their resume.
There's the key. Their marketing has convinced millions of current and future devs that they are the best places to work for; that they are worth doing silly things for just to work there.
The problem is that many of their "wins" are from decades ago (or more). Today, for Google at least, you can't even choose what you'll be working on. You'll be tossed wherever they think they need you. Even the best new hires won't make it to the largest salaries (dominated by veterans) and won't get to spend their 20% time (if they even get it) on the next gmail.
The best advice I can offer, about two decades into my career, is to stop chasing the shiny marketing material. They'll burn you out and replace you without blinking.
Almost every non-family owned business now hires developers (and data scientists), some for very good salaries in places where you're not paying thousands of dollars monthly to be someone's roommate.
But it's all relative. At least from this side of the fence, I see FAANG (and other top tech companies) have less downsides and more upsides, relatively speaking, compared to your typical non-tech companies.
The point is emphasized by friends and ex-coworkers who've jumped ship to FAANG and other top tech companies after working at non-tech companies like where I am. All of them seem to love it.
I am not sure what you mean by this, but at least a couple of years ago you did have the opportunity to talk to several different teams and decide which one you're joining before signing the offer. Is that not the case anymore?
That hit hard! Thanks for putting that in words!
If, and only if, you're hired. Putting all of that time into studying for the interview is no guarantee of being hired.
Small companies cargo-culting FAANG interview processes on the other hand...
how else to you filter out the unlucky candidates :)
This seems like a "why go to college" type of response where there is some truth to the fact that so much of college is a waste (I've never used statistics or economics in jobs)... yet it's more than just college or CS questions.
I agree that a lot of story around interviewing is broken and that many of the questions don't relate to day to day jobs... like creating a binary tree or "how do you move a mountain" (IE: https://www.amazon.com/How-Would-Move-Mount-Fuji/dp/03167784...) - but they do show that you know CS basics, know how to learn them or have basic problem solving skills.
As much as people bemoan CS interviews... currently? They are a necessary evil to certain segments of the job market. Can you get jobs without them? Sure... just like you can get jobs without degrees - but your resume will get round-filed for a large number of jobs without a degree and you'll not make it past initial filters without knowing "basic" CS trivia like binary trees.
Whether you're okay with a limited job pool or not is on you... I don't have a 4 year... but I have a 2 year with many years of experience and I'm okay with some of the limits until I eventually get a BA. I still make six figures and know I can find a new job if it comes to it - as I've done repeatedly with limits. I've never balanced a binary tree for a job interview but I have "failed" online tests because I wasn't "fast enough" on code tests. I'm still employable and successful.
Ok. So not soft skills then.
Instead, it is very specific skills. It is not soft skills.
https://www.wikijob.co.uk/content/interview-advice/competenc...
> Soft skills are the more intangible and non-technical abilities that are sought from candidates. For example:
* Communication * Teamwork * Problem-solving * Leadership * Responsibility
So "interviewing" isn't a soft skill as I've always though it to be but I didn't call CS basics a soft skill - I called interviewing one. I was thinking more "a skill not work related per-se" - ie interviewing - while the expected definition is more... personality and interpersonal skills.
I'd consider interviewing "personality and interpersonal" but I can adjust my terminology.
Interviewing is an important skill for most people and interviewing in the programming realm, unfortunately, relies on CS basics. Generally you don't get one without the other.
https://en.m.wikipedia.org/wiki/Theoretical_computer_science
Of course, if a company is just building the stereotypical basic CRUD app to serve a maximum of 10K users total and maybe 10 per minute at peak, this probably doesn’t matter much.
However, companies that pay top dollar expect candidates with top knowledge, and that’s fair IMO.
Knowing how to solve the ten or twenty most common CS interview questions is not an indicator of possessing "top knowledge". It's an indicator that someone studied the cheat sheet to big tech interviews, and that's all.
The coding problems are part of the interview, but they're not the entirety of the interview. You can't pass a FAANG interview by cramming CS questions, unless you're maybe applying for a new grad position where previous work experience isn't factored in very much.
Having a bunch of basic, generally useful algorithms in recent memory does save a lot of time on the "general solution" side when you're working in a new milieu. (That saved time then gets consumed trying to find, configure, and tune anything in an unfamiliar cloud environment, but that's another kettle of fish).
I can do both, perhaps even concurrently, but clocks are ticking and I’m worried I only have so many years before I’m pigeonholed where I am now.
The hard part is distilling the most commonly used and most helpful of these tools. But after doing so, I can now approach side projects where I got stuck on not having an efficient way to store and access data.
Knowing the start and limits of those algorithms gives me that confidence that what I build is close to as efficient as possible, and allows me then focus on pulling those efficient modules together.
As a self taught dev, its given me confidence in my expertise, and that pays off in job opportunity, self respect, confidence to mentor others, and actually completing hard projects that I could not complete before.
The FAANMG+ life probably isn't for everyone, but it has definite upsides, and I imagine that's why most people jump through the interview hoops. It's not because they generally value toy programs over real projects.
I test all developers by paying them to make the equivalent of a bird box. If it comes back relatively well designed, cool, I've got a developer. If they come back with three designs for different environments and species, I know I have an engineer.
As it stands, we have kids who have zero real world experience at the helm of corporations and the results are easy to see. They rarely produce anything of value for the general population. So rare we have to call them unicorns.
The subfield of software development where artistry outweighs cleverness and productivity is game design -- and not all game studios exist to do things that way, just particular boutiques centered around one storyteller's vision.
Not sure if it's relevant? Google has hired Guido van Rossum and James Gosling. I'd imagine Google didn't ask them to "reverse a binary tree", whatever that means.
I.e., if you are Frank Gehry or Frida Kahlo, you don't need to go through hoops. (If you're reading this, you are probably not Frida Kahlo.)
If someone is aspiring to be her, you just helped crush that dream a little bit more. And for what?
It's just a fact that most people are not one of the very best in their field: 50% of people can't be in the top 1%. That's not to say people shouldn't try - after all, many of the "very best" tried very hard to get where they are.
It's probably not that the leetcode problems are ultra hard to solve (though they can be). It's also the combination of the artificial time constraint and the high pressure interview setting - which is a very different kind of pressure than you typically experience on the job.
The core money-making algorithms don't take many human bodies to develop. At Google, 500-600 researchers and core algo developers likely do most of the heavy lifting.
Otherwise, 90%+ of their developers are likely solving routine problems.
Although, most of them likely convince themselves that only the "chosen ones" among mankind can do what they do.
The reality is that most of software, even at the FAANGs, does not require the type of interview questions these teams enjoy asking.
I just couldn’t pull it out of my butt in the 30 mins I had. Sux. I’ll get there one of these days.
I find it extremely annoying to come up something while someone watches me as if I'm an idiot.
Interviews are also hard (as I frequently comment around here) because, once you've seen how the sausage gets made, you realize it's basically still a crap shoot which comes down to the loop you get. If you get an unlucky roll and end up with the personality type which views interviews as a chance to show how much more clever they are than everyone, then you've already failed. Their ego is tied to their "high bar" and impossible question set, and you're just fodder for them to show off that "high personal bar" during the de-brief.
I remember when a former colleague wanted my input on his interview question which was basically, "Write the algorithm for product recommendations." (eg, like Netflix's movie recommender.) Despite repeated warnings, he went ahead with that question only to come back and admit, "Yeah, that wasn't at all good." Imagine what the poor guy or gal on the other side of the table had to go through.
I don't know what the right answer is to interviewing, but my take is that I would prefer to work with someone who I can get along with, have real human conversations, and become good collaborators -- even if they're not ace coders. That measurement seems glaringly missing from too many interviews.
or trying to glean proprietary information out of others?
It's a struggle between fitting the interview to real-world situations vs making it seem like the candidate is doing work for the company.
I feel like a good situation might be actual problems previously encountered with the technology being assessed during the interview that would've required you to have collaborated with someone who is also experienced in that technology to help you solve them.
Maybe the best way to do this is when the situation is proposed to the candidate, make it clear that the answer is already known and put it in an envelope (physical or digital), which will be referred to when it's solved or the candidate hits a dead-end.
Do you have a source for this? I can't help but think about the person in this clip: https://www.youtube.com/watch?v=LlCEmPF4-V0. You think you can learn much about her from that interaction?
I acknowledge there are some situations where you might pass the interview even without arriving at the optimal solution, but those are probably the exceptions.
I've interviewed people who didn't know the answer to some of these tech questions, and honestly, I was more impressed by them calming saying "I'm not sure on this one, I would probably need to go look it up".
Why worst? If you're not given an offer, nothing changes. You've spent somewhere between 45 minutes and a day, got some interview practice and all is basically status quo. But, if you're given an offer, you are now faced with having to weigh the pros and cons of accepting it.
And I rarely get an answer that makes sense. Instead I get mostly rationalizations for Leetcode. The thing is I recognize those rationalizations because I was certainly guilty of it in the past ("We're evaluating intellectual curiosity" is one I cringe at now).
The real problem from my perspective is that most teams have never taken the time to really think about and identify the underlying principles about how they want to work. We go through a process of defining those principles and all of a sudden the interview gets a lot clearer. Do you value the highest quality code? Do you value getting things into the world quickly and then iterate towards the final solution? Is security always at the front of your mind?
Getting really specific about what exactly being "excellent" means to a team is really critical.
Because then you can design an interview process that actually selects for those things. I've never had a team define "the ability to solve leetcode problems under pressure quickly" as an endpoint they actually care about. Some teams continue to use leetcode, but only as a small part of the process with problems that ARE actually directed at what they care about. Having been through a bunch of interviews in my 25 year career I instantly know when a team has actually done the work to design a good interview process (which has been far too rare in my experience).
Though I think my expectation is that they'll get annoyed and stop the "interview".
I also don't really ask "trick" questions (I try to select questions based on what the CV indicates would be a strong area for the specific candidate), the closest I get to that is probably when it comes to service monitoring (where the exact final answer is less interesting than the process of getting there).
My reply was only intended for "trick" questions that have absolutely no relevance for the day to day job of 99% of Software Engineers. And that's exactly because those trick questions tend to be more about the "exact final answer" than about the process, so my point was about figuring out if the interviewer actually has a grasp of those sort of problems in general or if they memorised a good solution and are milking that for all it's worth.
And I do know that almost any interviewer would reject me based on that, but I think it's worth letting them feel the burn they try to inflict themselves.
My absolute favorite interview of the group, a guy who ended up getting hired elsewhere, was the most calm and professional developer I'd ever been around. Sitting in the room, I felt like he was interviewing us rather than the other way around. It was just in the way that he carried himself, answered questions.
And then the guy on our team started asking questions. The gentleman we were interviewing, rather than answer, kept calmly asking more questions of him instead.
- Can you describe the situation where this would be used?
No
- Have you ever run into an issue like this before that could be an example?
No
- How do I know that by solving this problem we would be addressing the business or customer problem?
We don't
- Then shouldn't I be solving questions related to the work?
...
I loved that guy. Wish we could have hired him because I really wanted to work with him.
I stopped an interview once. I told the guy I didn't think I'd be a good fit for the organization, and maybe we should save ourselves some time.
I've done this a few times, each time from a startup that reached out to me asking me if I'd come in to talk to them, and then would throw me into their coding challenges immediately. Like whoa hold on there, I don't even know what you do, why are you asking me to do a coding challenge before we've even figured out if there is a fit for me technically and I figure out what it is you're trying to solve.
I've rarely used unprofessional language in job application emails, but on that occasion I pretty much told them to take their no-name little company and shove it.
[0] https://www.asktheheadhunter.com/15129/before-you-risk-your-...
Many interviewers don't do this because it's often difficult to distill the most interesting problems down to something that would fit within the time allotted for the interview, and also there are candidates who prefer abstract textbook-style problems.
I often wonder why this is legal, especially given the legal concept of disparate impact. It's basically just a disguised test of some combo of IQ + free time + willingness to grind dubiously useful information
Pretty much any white collar job interview is an intellectual joust at best, and a mild hazing ritual at worst.
We actually have it good: you at least know what the broad contours of what we'll be subjected to.
Because any software person will tell you these tests are extremely detached from the requirements of the job.
It seems like it would be an open and shut case if not for the army of lawyers employed by the likes of Google.
But it’s still more diverse in contrast to the companies I’ve worked at (non-tech old school companies in finance, etc), where the tech employees tend to fall into a much narrower stereotype.
Of course the USA is ever more extreme and crazy when it comes to identity politics, so ago knows if the justice system is still reasonable in this regard. But I'd really enjoy watching people argue in front of a judge that working with tree structures is extremely irrelevant to programming.
“Not yet challenged” and “legal” aren’t exactly the same thing. Straight up IQ tests are probably more defensoble than leetcode for lots of positions for which leetcode interviews are used. But people have heard the popular misrepresentation of Duke Energy (“it’s illegal to use IQ tests”) more than they’ve heard the actual disparate impact rule, and that seems to be true on both sides of thr interview table.
Demoralizing as all hell. Thankfully I had multiple mocks with FB engineers who told me I did great so I know it really was just bad luck that the real phone screen was a dud.
They didn't even need to look at word of mouth impact to see a material hit on their customer retention, in a sector where churn is costly. They went on a crusade to improve, and now find candidates for jobs are net promoters, and their customer acquisition cost via candidates is lower than normal advertising(!)
I think some of the big tech companies simply don't care about their reputation at either micro or macro level, and nobody wants to call out that kind of toxic behaviour as they're all "part of the club".
At an employer prior to that, I saw first hand how companies were able to get negative but true reviews taken down almost as soon as they were posted. There was high turnover at that place and a lot of people were truthful in their reviews of the company. The Glassdoor rating was far higher than they deserved until they went under.
Im short, I’m sure you think you’ve got a great work environment, but I’ve been burned by bullshit Glassdoor reviews and I doubt I’m the only one.
I generally try to help everyone as much as I can during interviews, because honestly this is taking time away from my other work and I'd nothing better than to hire you, but sometimes it's just to much.
(I’m half hoping that after typing this out someone will reply with some data structure I’m unaware of that would allow you to uniquely map the reference of an object to an arbitrary value.)
I've had several interviews where everything seemed to go well, but one (out of say, 4/5) interviewer just seemed to be hostile from the moment they walk into the room.
FB only asks leetcode questions tagged with 'Facebook'. 100%. I know ppl who memorized these questions and got in.
Learning new frameworks and coding standards, surviving code review, dealing with difficult team members, dealing with ever-moving business goals, and just about every other aspect of work, including the coding, has been harder.
I admit that I have never had to invert a link list as part of my work (Graph traversals I definitely had to do, actually). But I have had to submit to arbitrary technical demands and to learn and use technical materials I did not enjoy or agree with architecturally in order to successfully complete projects. So in that, studying and practicing to pass the technical screen is similar to the job. Employers want someone who is able to (sometimes!) bite their tongue and just do the work assigned.
Actually, I remember one IT-style interview 12-ish years ago with a certain FAANG that shall go nameless that had this sorta narcissistic/sorta dumb hiring manager, whose profile picture was a shirtless muscles pool pose, believed that a technology I inherited and was forced to use was an interview deal-breaker. And, at the time, I was at an IT department at Big Name university down the street where there were much more complicated and interesting things going on, like remotely uninfecting and patching worm-laden systems and putting together a fully-redundant/HA VMware cluster that had an FC SAN and blade servers (the thing back then).
I'd guess 99% of engineers never have to do CS trivia as part of their day-to-day job.
FWIW, most FAANG employees seem to admit that if they had to redo their interview, odds are they're more likely to fail than pass. Goes to show how much luck is involved in the process.
I think it's gotten harder too. Maybe in the past it really was about trying to see how the candidate thinks and solve problems. But now it seems like all all of that is secondary to getting the optimal solution. Two of my friends in Google who got in ~10 years ago say that it's definitely gotten harder from what they see.
I believe they mean e.g. "tell me what happens when you type https://example.com" in a browser.
You can go deep into tcp/ip, dns, how ssl encryption works, how urls on a server get mapped to specific ports, load balancing/round-robin etc.
That could be trivially fixed tomorrow, either by universities or (better) by an accredited certification body.
I mean, I'm sure there weren't bar exams for lawyers and professionals either, at some point in history. What prevents us from creating one for sw developers? As long as it didn't require additional attainments just to sit for it (i.e. you should not need a university degree), it would make the whole process more efficient for literally thousands of companies.
In software it's not like that. There are very few laws on the book about how to write software, so there's no single authority that defines the right answer or the scope of reasonable questions. It's far more open. Even just picking a set of programming concepts would immediately cause controversy. Like, should monads and type-classes be a part of the professional qualifications? Most programmer would say no, because Haskell isn't widely used in industry. But CS degrees do sometimes test people on that sort of thing!
(Also, in both cases, the government hires members of the profession to define the standards.)
I'm convinced we could have a bar exam for software engineering, but I'm not at all convinced that we should. It would make my life easier personally, but it would keep a bunch of people who followed less traditional paths out of the industry and I think that would be bad.
Is that an equal burden for every candidate, in every life circumstance? Or does it privilege certain groups over others? The ROI isn't the point. Requiring preparation unrelated to the job is highly suspect, regardless of the return.
...check yo math?
Definitely. I’ll add that it doesn’t take as much time and effort as commonly portrayed online, especially if you have many years of development experience already.
Keep in mind that many of the online FAANG cram-style study guides and anecdotes about grinding LeetCode are largely targeted at college grads who don’t have many years of experience, and who also likely have a surplus of free time.
For developers with years of actual programming experience, it’s not as difficult to study interview problems as it sounds. Even more so if you spread your practice over a long period of time. Doing one problem per weekday over the course of a year will get you quite far in LeetCode without much time investment.
I grab a random LeetCode problem on my lunch break if I’m eating alone (aka every day during COVID). I pick a different language that I’m familiar with to rotate my skills. I’m not even interviewing, but it’s actually kind of fun to do the harder problems and play with all of the little optimizations. And I get to keep my skills fresh in programming languages I’m not currently using in any projects.
The problem with this approach is that you won't be able to remember the details of problems older than X months ago, at least not to the level that will reliably help when in a stressful whiteboarding interview.
There might be entertainment/knowledge benefits, but it doesn't replace cramming for a known upcoming interview-event.
I approach it more as learning different techniques to solve different problems, rather than learning how to identify the trick and recall the solution to specific cues.
Trying to memorize solutions isn't really effective for interview problems, in my experience, unless you really can dedicate time to cramming as many solutions as possible right before an interview and hoping that they ask you one you've seen before.
I did one of these interviews on short enough notice no review was possible. The process was a little jarring but on these type questions I could just talk through the problem space and come up with something reasonable and explain it; although I doubt I answered anything precisely as expected in the half dozen interviews I had. Apparently it went well.
To be fair, I wasn't a fresh college grad, and I had been recently working as a full time researcher. But they sent me through the SE interview process and none of the specific questions were close to anything I had thought about in years.
No, you absolutely do need to cram to get through the interviews. In fact the questions on leetcode are designed for this very purpose. Every question has one common theme. And one 'catch' that you absolutely need to know to solve them.
If you haven't looked at a question in X months chances are you will struggle to solve it quickly even if you have solved it before.
If you are out of a job, just buy leetcode premium. Keep doing it for 15 hours a day. Then start applying for interviews.
Its the dumbest way to hire and get hired.
Not even least surprised people can't hire a person to get a darn thing done.
I just described a situation where that was not true, so I don't really know what you are responding to. If you are generally on top of problem solving, you don't need to "cram".
This generalizes - "cramming" has origins for formal courses, as a technique to try and pass an exam when you haven't actually done the work and don't understand the subject. It's a last-minute approach; might get you a pass but is hardly ideal.
I think most people cannot ever understand these topics well, and from their perspective, it'll always be about cramming. -- It doesn't fit in their world view that others can solve these problems by thinking, not cramming, when they cannot?
Whilst to you, it's more about thinking, coming up with new things, but trying to learn it all by heart would seem a bit weird? -- And then maybe in a sense you're talking past each other?
Congrats on getting a good payoff on your work, and thanks for sharing the info about your process.
I'm a self-taught developer, 34. My first programming job was only at about age 30.
About 2 years later, I was consulting for Amazon, as a full stack engineer building a digital marketing project, which was pretty cool-- plus great for the resume.
After that, Amazon contacted me for an interview with them, which I failed (lack of data structures & algorithm knowledge/experience).
I still have the hopes of working directly for a FAANG company. So, just wanted to say thanks.
Currently I am unemployed, but I am about to start studying DS&A again & building some small projects. Fortunately, given the industry & skillset, I have recruiters contacting me frequently, which is a positive, uplifting signal.
For me this is the main problem with companies that hire like FANG do. It is fully expected you have to study. Like I have to study to basically do the job I am currently doing but at FANG? Then there are the fact so many people say the hardest thing about Google is the interview. And for me that is kinda pointless then, like if I've just done the most challenging thing, why would I want to hang around?
This is how bad interviewers always justify asking nonsensical questions.
It's like that old joke:
An interviewer picks up a stack of 50 resumes, takes a glance at them and drops the bottom half into a wastebasket. A coworker asks:
'Why did you discard those candidates?'
The interviewer replies:
'Because I hate losers.'
If you have a big knowledge gap in something that's
- easy
- freely available
- relevent to your job
then that's pretty much entirely your fault and it has nothing to do with your educational background.
> - relevent to your job
isn't necessarily met here.
I'm also self-taught. I couldn't reverse a binary tree in a tech interview (without looking up how to do it first) because it's never been relevant to my job. I could, however, stand up an API and deploy it to AWS in a similar period of time, because it is relevant to my job.
> - easy
> - freely available
> - relevent to your job
> then that's pretty much entirely your fault and it has nothing to do with your educational background.
Sure. But reversing a binary tree isn't relevant to most modern software engineers. And when it does become relevant then, like you said, it's easy to learn (on the job).
> It's not even anything that advanced or difficult either.
No but it is something that gets "memorized" for a test (and therefore immediately forgotten afterward).
Although I've never asked or been asked it in interview context, reversing a binary tree specifically is probably just checking you understand how to write recursive functions. Binary, because variable number of child nodes would make the code longer and more complex for no good reason. Reverse, because that's the simplest operation you can do at each node.
People in this thread are acting like tree processing is as exotic as theorem proving, and could never have anything imaginable to do with daily work, but every web page is literally a tree!
And it's not like you can't find out of the applicant knows recursion and what a tree is without bringing in memorization, there's just some weird obsession with a very specific type of problem which happens to often involve memorization
I’ve never been asked this question, so I haven’t “memorized” it as you say, but if you want to flip the order of all the nodes in a binary tree, you’ll need to at least reverse the left and right subtrees at some point. The understanding recursion part is knowing that reversing the subtrees is the same operation as reversing the main tree. In that way, it’s similar to the recursive solution to the Tower of Hanoi.
What do data scientists do?
"...I use an ORM, rarely do I need to write a query by hand...."
"I had been working as a consultant and/or starting companies for almost 10 years and found the b2b sales process is literally nothing like the hiring process for SV companies. In one we talked about project goals and solutions, in the other we talked about hypothetical word problems that I have no doubt are popular in CS programs."
And yet, one of the two failed while the other has job openings.
The title is very broad and it could mean a bunch of different things at different companies. But it almost always involves a solid understanding of statistics, hence the probability questions in the interviews.
So from the article, it seemed that the interviews were quite relevant to the jobs advertised, and that the applicant truly was not a good fit for them.
> about 20 of these in-person interviews going poorly ... it seemed like everyone I interviewed with was a caricature of narcissism and delusions of grandeur.
instead of reflecting over if maybe maths is actually on topic for a data science job.
It's also odd, I think, that the companies didn't ask some probability questions in a phone screen, saving time for him and themselves.
Like "easy", who defines that? Is it easy because it just takes time? By that logic most things in tech are easy right?
In reality it's time spent on stuff often not relevant to a job at all, it's being used as an artificial filter.
Remember this isn't just about knowing, it's about being able to regurgitate it from memory on demand in a timed high pressure test
> has nothing to do with your educational background
Yes it does? People learn this stuff literally because of their educational background.
You can do some pretty amazing things in tech never memorizing half the things you'd need to for Leetcode.
--
I'm self-taught, and I know my data structures and algorithms, but I don't know algorithms and their nuances by heart so I don't Leetcode nearly as well as my YOE implies.
I see it as a two way street though, I don't want to work at a place that will turn someone down for not running a hamster wheel...
The venn diagram of "positions that need you to know this without any time to look them up" and "positions that ask you to know them without looking them up during the interview" is practically two circles touching.
I have no problem for jobs that actually need that mind you, but so many jobs couldn't tell you where the practical application of their Leetcode questions would ever come up on the job if their lives depended on it
It's never been a blocker for me, my TC is easily as high as what it'd be at Google or FB and I work on cool things.
Surprise, I never needed to manually balance a binary tree for work, and mostly people don't. So I don't see how "it's easy and free to (re)learn" says anything when hardly any software developer who didn't just graduate a year ago remembers this stuff by heart.
Also I'd like to think I know enough about most data structures to recognize where they make sense and to get into implementing using them quickly. But quickly doesn't mean "all of them" or "during the interview" or even "preparing everything in the utmost detail as they would ask without reference material". Teachers also don't explain complicated stuff without preparation, unless it's the material they do every year for many years.
Lots of missed income there.
I also interviewed and received job offers after burning out at startups, i listened to the advice to spend 6 weeks on hacker rank and top coder. I passed all my technical interviews. I was also coding on two personal open source projects, but practical cussing and interview coding are 90 pct different as you say.
I don't know if i will succeed at having impact at a large company. Tell you in 6 months. But i am iterating fast and following advice of the people around me.
You didn't mention the effect of being unemployable because your standards are going up. This is an occupational hazard of having more experience. Sorry about that, there are things you can't unsee . It happens to everyone, and an underdiscussed reason there are more young coders. Good luck.
Freudian slip?
I laid it out to him, that brogrammers are collective tards that cant think on their own, BUT they are good at things like code interviews. I was hired as director. The 2 people who said no cause I said no to their brogramming crap. I personally let go in 4 weeks. 2 years later, things were fixed, I got a fat check, and moved on.
Lesson? Uncle Bob and his elk are creating problems that you can be paid to solve. However Uncle bob and crew are great at brainwashing.
Graphs: HTML is a tree, it’s easier to think about performance. Also, I once made a simple DSL like HTML and had to implement quite a few graphs traversal algo’s.
Heap overflows: I did one on htb. Being able to algorithmically think about pointers being overwritten and memory layout feels a lot like interviewing.
Trading: one algo trader I made needed speed. I had to go much further than most things I see on Leetcode.
In general: algorithms is the ability to think step by step in your mind without a debugger. That skill is quite important when the going gets tough.
Note: I am not for this interview style. AllI am saying is, it is not without merit. Or would you rather do a 40h take home assignment? (Same thing, not without merit but 40h?)
- partial differential equations
- reverse a binary tree
- (sadly) made quite so many long-term friends
I've never worked in a large company, never had a salary that is even close to US engineer level, and yet I regularly write code that traverses complex graph structures (often with recursive CTEs in SQL), just because that's how a lot of real-life data is structured. I spent this weekend debugging this traversal, in fact. And that's only the 'trees and graphs' example from the top of my head, as I've found myself constantly using all the different CS stuff throughout my career.
This is not an attempt to attack anyone or an attempt to appear superior. If anything, I'm constantly reminded by how stupid and uneducated I am when I'm reading HN comments. I'm just trying to understand: are you guys really spending your whole days changing button colours?
I’d like to do other things, but this is the only sort of thing I think I’ve ever gotten an interview for.
> I'm just trying to understand: are you guys really spending your whole days changing button colours?
Not quite like that, but it isn’t uncommon for me to spend time making minor changes because the business area helping with requirements can’t remember what they wanted one day to the next. I wouldn’t like if I said there are many days I spend mostly doing nothing, just waiting for some process or for someone’s calendar to free up before anything can continue. This has been common at all jobs I’ve had except one, where I was a contractor hired to do an extremely specific task for a very small company.
I’ve started working in other things in my (abundant) spare time, hoping they’ll help me get somewhere, but I’ll see.
It's a strange tone to take? The buried lede is: "[I] travel around and work as a digital nomad. I've been doing that for a couple of years now and I work an average of 2.5 days per week on machine learning or web projects and have rebuilt my savings and my whole life."
That sounds incredible! Like, the article should be titled "I'm winning at life".
Most scale up / startups would love ex founders to help them.
I find a sentiment like this pretty scary. Being competent at a job is not relevant, but just whether or not the interviewer subjectively likes you.
One of my top criteria for accepting a job is whether I like the interviewers.
I'm not hardcore in the "asshole geniuses should die" crowd, but if you are a miserable person to be around, go find a job where you work solo. Don't drag your whole team down.
I get what you're saying, but you spend 40+ hours a week with the people you work with, so the social stuff matters. If someone is really good at their job but a complete asshole to their coworkers, nobody is going to want to work with them, which will likely end up being a net negative for the company's productivity.
Most people feel bad when people act like assholes. Feeling bad enough, frequently enough, is cause for changing jobs for most people.
I'm confused by "you're not really a business". Are you the business owner at most of your jobs? Or do you tend to identify with the business you work for, sort of letting your ego merge with that of the organization during working hours?
I think saying "you're at a social club, too", is not a right way to frame it. A place of business is by definition a place where people are doing things together: business is social. Most people want to do social activities with people they can at least tolerate if not enjoy being around.
Now, if you are not of such a psychological make up that it really matters to you who you spend the majority of your waking time around, and you're able to compartmentalize strongly, then, it makes sense why you would be in the minority on this subject.
I think it could be important for you to realize that this is not really a matter of opinion in the sense of "a perspective on things that can be changed by experience or new information". This is really about folks' fundamental psychological make up.
>Do you tend to have emotional responses to the behaviors of others, or do negative behaviors roll off your back (like so much water off a duck's feathers)?
>Most people feel bad when people act like assholes. Feeling bad enough, frequently enough, is cause for changing jobs for most people.
So, I definitely get a bit ruffled when people are assholes, but I've also never found myself in a job where I can't at least push back on rude people and stake out some boundaries. In other words, I may not like interacting with some of the mean people, but I can find a way to work successfully with them, and ideally, even get past initial difficulties. When someone is dysfunctional enough, I frankly try to find ways to avoid that individual. Usually, if someone is that dysfunctional, everyone in the business knows it, and are trying to avoid them all the same.
A big fear I have is the distinction between a "truly dysfunctional person" and "someone who the interviewer didn't like during the interview." At least in my experience, first impressions aren't worth very much. And despite the fact that they aren't worth much, I've seen a number of people act as if their first impressions contain accurate and valuable information.
And, I suppose the point I'm trying to make is that I'm very afraid that someone will not like a good candidate during an interview, but would actually like them quite a bit once they actually got to work with them. I've actually just watched this scenario play out at my most recent job. Me and my team members interviewed a candidate who was very quiet and very shy. Those team members did not want to hire him because they were afraid he'd be a "poor fit." From talking to him, I felt that he seemed to be very intelligent, and so I vouched for him heavily. In hindsight, this has gone very well: he's one of the most productive members of the team, and is generally well liked. At worst, he hasn't had any conflicts with anyone. If I had not stepped it, it is unlikely he would have been hired, simply because people did not like his personality.
>I'm confused by "you're not really a business". Are you the business owner at most of your jobs? Or do you tend to identify with the business you work for, sort of letting your ego merge with that of the organization during working hours?
This is something I've struggled to articulate well, but I suppose I'm drawing a hard distinction between "accomplishing a specific work function," and "really liking a person I work with." Now, I'm not blind. I understand that there is some correlation here: a team of people who hate each other will generally be less effective than a team of people who all get along really well. I guess what I mean is that it feels to me that people are heavily prioritizing friends over function. Or, that people believe (incorrectly in my view) that if they find somebody disagreeable, it will be impossible to resolve differences and develop a good working relationship. In other words, the whole point of a business it to successfully complete some set of tasks. (build a thing, provide a service, etc.) I feel that if you too heavily prioritize working with people you like, eventually you're putting your social preferences ahead of actually running the business. In other words, we can all agree that all things being equal, a team of people that works well together will be more successful than one that does not. But what about a team of below average people who like each other a lot, vs. a team of brilliant geniuses who aren't much fun to be around? Clearly the choices between these two options will not always be that cut and dry. (and I've only provided a cut and dry example for the ease of explanation, not because I feel it is the most common scenario.) But, I feel that sociability is overemphasized because it preferred, not necessarily because it is successful. Does that help clear up what I was trying to communicate?
> I think saying "you're at a social club, too", is not a right way to frame it. A place of business is by definition a place where people are doing things together: business is social. Most people want to do social activities with people they can at least tolerate if not enjoy being around.
> Now, if you are not of such a psychological make up that it really matters to you who you spend the majority of your waking time around, and you're able to compartmentalize strongly, then, it makes sense why you would be in the minority on this subject.
Hmm. I this is a good insight, and I'm struggling with how to reply. I guess if I were being completely honest I might say ... I don't need to compartmentalize when it comes to getting along with a rough personality. I'm a bit weird socially, but despite this, have not really had trouble working with a wide variety of personalities. Where I do often have to compartmentalize is when thinking about the business itself. For example, if a powerpoint presentation is completely meaningless, but nonetheless gets a good reception, I will "compartmentalize" in the sense that I know better than the waste time critiquing it. Or, I might "compartmentalize" in the sense that if someone says "I love working for this company!" I would politely offer some affirmation, rather than saying something negative. In truth, I think most companies aren't really something to be proud of in the moral sense. They offer services, and either have successful business models, or else do not. It might be possible to be proud of the intellectual achievements of a company, but often then, the intellectual achievements are in service of something which is a waste of time. (ie, there's no way I'm anywhere near as talented as a Facebook engineer, but I think they can only be proud of their work in the strict intellectual sense. The problem was very hard, and perhaps few people could solve it. But the actual outcome of their work is meaningless.)
Now, I recognize that this doesn't actually do much to support my original argument, but I definitely wanted to answer you honestly since you wrote such a thoughtful reply. I suppose what I'm struggling with here is: are other people compartmentalizing too? Or do they really believe that their work is meaningful? If other people are compartmentalizing, then it feels very arbitrary to me to gleefully accept some corporate myth, but then to draw a line in the sand regarding having a teammate you like. I suspect people would call this a false dichotomy. But to me, it feels like an oddity.
> I think it could be important for you to realize that this is not really a matter of opinion in the sense of "a perspective on things that can be changed by experience or new information". This is really about folks' fundamental psychological make up.
I think you're probably right here, which is why I appreciate your response, and why I've tried to write so thoroughly and candidly. Even if this perspective always feels alien to me, I'd still like to understand it better. So, thanks again.
Cooperative work needs some form of positive bond, trust and feeling of being part of a team that looks out for each other. It doesn't need to reach 'social club' levels.
Truth is, you either have a cooperative unit or have smaller cooperative factions within the team that are competing or adversarial.
You don't want the second type of nonsense at your workplace.
Maybe you've not seen it in practice and that's why it doesn't make sense to you.
So when I say likability matters, what I'm saying is I need this person to be professional enough that we can work together day in and day out, and I don't want to routinely punch them in the face.
It's not "whether the interviewer likes you", it's whether you can work with other people without taking an emotional toll on them. And it is as important, if not more so, than their ability to program. It's certainly a harder thing to teach.
(as for this specific quote, I think it's fine to have issues with what companies are working on... But the rest of the article really does just come off as bitter and angry, and for what?)
There are tens or hundreds of thousands of skilled developers in the world, there's no reason to work with bitter, angry people.
Yes, because we've been burned by this in the past: firing somebody who's impossible to work with is WAY more difficult than just not hiring them in the first place.
The digital nomad life is probably somewhat relaxing, but he's clearly someone who values his accomplishments over his experiences, so I'm guessing that's why it wasn't the focus of this article.
Ooh, that hits in a soft place for me.
Therein lies all of the angst, unsettledness, and general escapisms of this post, and more probably the world. I've seen the happiest people on earth do so very little compared to traditional 'success,' because they mastered what they 'valued' first... then pursued it relentlessly.
Here's piece from Hunter S. Thompson (don't know if you really want to emulate all of his teachings), that gets at the heart of this values orientation:
"The answer—and, in a sense, the tragedy of life—is that we seek to understand the goal and not the man. We set up a goal which demands of us certain things: and we do these things. We adjust to the demands of a concept which CANNOT be valid. When you were young, let us say that you wanted to be a fireman. I feel reasonably safe in saying that you no longer want to be a fireman. Why? Because your perspective has changed. It’s not the fireman who has changed, but you."
https://lettersofnote.com/2016/07/18/a-man-has-to-be-somethi...
Thank you for that.
To be fair, I did literally have ideological issues with them -- such as the amount they track their users, their stance towards China, their use of patents, or just generally bad reputation in the industry -- there's a bunch of issues I feel strongly about and that prevents me from working with a lot of different companies. I guess that's a bit of a luxury, isn't it? But that's also my choice. I'm not exactly homeless these days, so I still manage to find great people to work with.
I am pretty cynical and stubborn... not sure about angry, as you say, "I'm winning at life".
> I just don't want to work with difficult, unhappy people.
Me neither!
I get that people can hit hard places, and that the author was in such a place. But I don't think the perspective given is an objective one, especially considering the author has had time for hindsight to settle in.
According to the blog post, they didn't proactively apply at companies they were interested in. They didn't bother catching up on new technologies or other skills sought after in the current market, spending their time on building a computer game instead. Interviewers are being vilified for acting in their own best interests rather than the author's conveniences.
They then finish up by becoming a digital nomad working 20 hour weeks and building up their savings and loving life. Where are the details that went into making that lifestyle work? Was it not due to being employable?
It's hard to sympathize with the author when the narrative is essentially "I put very little effort into getting hired and so had to work a little harder to get a job".
> So the author waited for people to come to them, and when nothing worked out, declared themself "unemployable" (despite not proactively looking for work).
There are two sections. There is the part where people reached out to me. Then there is the part where I went out and interviewed more proactively. And there is a lot of stuff in between that doesn't really fit into this blog post. So consider my version a simpler, abbreviated version than real life.
> According to the blog post, they didn't proactively apply at companies they were interested in.
I did apply at companies I was interested in. Why wouldn't I?
> They didn't bother catching up on new technologies or other skills sought after in the current market, spending their time on building a computer game instead.
So, I had just come off 5 years deeply immersed in the bleeding edge of deep learning and the beginnings of the wider application of this technology at various companies. Excuse me for wanting to try something different. Have you ever made a game before? Do you have any idea how technically involved it is? How does this not count as catching up on new technologies or other skills? I should have studied leet code interviews instead? I think I'd rather enjoy life and pursue things I find interesting.
> Interviewers are being vilified for acting in their own best interests rather than the author's conveniences.
No, they are being vilified for focusing on arbitrary things rather than focusing on things that are important to the actual job.
> It's hard to sympathize with the author when the narrative is essentially "I put very little effort into getting hired and so had to work a little harder to get a job".
I'm not looking for your sympathy and I don't know what part of my life story seems low effort to you.
Being opposed to working for companies that build business models around eroding privacy, delivering adverts faster, or even literally killing people in the case of weapons manufacturers isn't "bitter". Those are valid opinions. Not being willing to work for any company that will give you a paycheck without questioning the impact of what you're doing is a good thing.
That's pretty much it, it's just a stupid dance. You can get angry and say "No no no, this dance is stupid!" Or you can learn the dance, do the dance, then be richer than 95% of people in the world.
Globally, 300k USD income would put you in the top .2%, so you're richer than 998 out of every 1000 other people in the globe.
50% of bonuses? That seems low, it's closer to 50% of total comp (maybe 40-45) in the places where these salaries are common.
The main variable is state taxes. If you're living in California, most of your income will be taxed at ~9.3%. With a small portion taxed at 10.3%.
So your marginal tax rate will be 43%, and your overall tax rate will be closer to ~33%.
Nit: USA does not tax bonuses any differently from salary. They are both interchangeable, when computing taxes. Also, all income-percentile metrics in USA are based on pre-tax income, not post-tax.
https://taxfoundation.org/publications/federal-tax-rates-and...
https://www.nerdwallet.com/article/taxes/california-state-ta...
(using this tax calculator https://smartasset.com/taxes/california-tax-calculator#zj8lo...)
Look at wealth in global real estate for a touchstone.
https://www.visualcapitalist.com/all-of-the-worlds-money-and...
But still, having 300k coming in pre-tax earnings puts you in the top 0.2% of earners globally, not 5%, which was the original point in question.
Why do I stress this point? Because we need to realize we're not just the top 5% here on this forum. Globally speaking, we range from well-off to EXTREMELY well off, and we should have the humility to post the proper stats about ourselves.
There are lots of problems out there that need money to be solved.
for most people not getting a job is not an option, because they need food and probably a roof to sleep in.
if you take these two things into account, the name of the game then is how fast can you get away from needing a job.
the higher you earn the more of your expected lifetime you can get to be your fully.
that free time you bought for yourself and the money you can spend doing research, sitting in a sunny beach, on non profits, on a giant room full of candy or whatever you deem to be worth it for you.
Nobody will tell you what to do? What about, say, the entire interviewing ecosystem that's sprouted up?
You’ve changed my thinking.
Also please understand that as employers we make people do this silly dance because it's the best way we, and frankly anyone, knows to reduce the risk of hiring high quality candidates.
I can understand the frustration of doing the silly dance for companies that don't pay competitively and think they are at the same level as Google minus the pay... but for companies paying among the top 5%, we get flooded and flooded with resumes and while you may be a good person, present yourself nicely (and those are all good things to do), and even impress with a resume, it's simply too risky to hire you on that basis without seeing a demonstration of your technical abilities.
When I started out I really was dead-set against hiring people based on the silly dance... after making a lot of bad hires and seeing people who looked impressive on paper but couldn't apply some basic algorithmic knowledge to solve some problems I succumbed to using the silly dance and honestly the quality of candidates I hired improved substantially.
I mean, yeah, that's what I'm saying: It's stupid and I don't want to be part of it. I'm taking it a step further and saying that the people who help propagate it aren't doing themselves or anyone else any favors.
There's more important shit than money, and it's lame that we have an economic system that rewards people so massively for doing stupid dances.
Sure but for people who have the opportunity, it's perfectly rational to invest a significant part of your 20s to accumulate enough wealth by doing the "silly dance" and then spend the remainder of your life financially free.
I'm not saying your path is wrong or you shouldn't pursue it, but it is risky for a lot of people to take a massive pay cut and only work a few days a week in their youth and expect that doing so is sustainable or that it can be done for the bulk of their life.
The less risky approach for many who have the opportunity to do so is to actually invest the time to understand the fundamentals of computer science. Really get to know data structures and algorithms like the back of their hand, spend an hour after dinner every night for a couple of months practicing how to apply that knowledge to solve leetcode problems, and then do the interview circuit to negotiate a high salary so that by the time you're in your mid 30s you're a millionaire and can effectively spend the rest of your life working on your own terms.
For someone who doesn't want to spend their lives doing stupid shit like cocaine fueled parties and megayachts, at 100k USD (currently) buys you one life-changing event - basic lifelong security, you probably won't have to worry in the long run. At about 300k (currently) you can buy into a level of security that is probably resistant to major worldwide economic or political catastrophe.
If you want to change the world, say by doing an ethical capitalistic startup or meaningful nonprofit, you probably want to start with $5M all-in assets, it's unlikely to be easy to get there quickly on a 300k salary at a FAANG. You will want to roll the dice at startups paying you back in the 100k-150k range.
I haven't any other avenue for such high levels of comp at basically no risk (but some opportunity cost).
I was just pointing out it's realistic in that there is a well-trodden path to it.
I went with the third path of ignoring all that and applying to jobs that don’t require the dance and pay half of that. I am pretty rich with that money (specifically since I don’t even live in the US).
If you'll suck it up and do anything if the price is right, you're a prostitute. Professionals have standards.
If that, in your world, means a prostitute, then I am one.
What do you have against prostitutes?
I am sure that there is some line you would not cross. It's good to have limits. Once you accept that, it's simply a matter of placing those limits in an appropriate spot.
But instead of dancing stupidly, could we demonstrate real-world skills with real-world code and real-world experience?
And there's a flip side to that coin (from the perspective of hiring managers):
You want me to dance for a $300K comp package? OK, I'll dance, but don't be upset when you can't find qualified employees when you are selecting dancers.
You wonder why candidates are complaining about not getting interviews (let alone offers) and employers are complaining about not finding candidates. This is why, my guy.
It's also not quite as silly as you'd think. I've programmed a lot and for a long time. Some for personal enjoyment, some for school, some professionally. That covered 80% of the dance and landed me good tech jobs. Working on my weaknesses in algorithms and doing leetcode for a month got me a very good tech job. Whiteboard coding will identify strong programmers who can perform under pressure and people who are practiced a lot of whiteboard coding.
I would apply at the other job.
Life is too short to engage in nonsense unnecessarily.
There is a world of other more enjoyable and educational opportunities out there they must compete with. And so the cash shovel must be pulled out.
People vote with their feet, and then a new generation of fresh grads are lured by the pay to fill their role. They’ll grow sick of it in a few years, rinse and repeat.
I know it’s not a good advice in general, but regarding recruiting in particular, it’s a more realistic proposition.
If you know how to program, you have lots of options.
That depends entirely on how you choose to define "fools".
I am not going to disadvantage myself by refusing to participate in this on some questionable principle. While I agree that Leetcode-style interviews are not the overall best, I am yet to come up with an alternative that addresses all those issues without introducing massive new ones. So it is a compromise. And as long as this compromise stands, I am fully intending on getting the most out of it.
Personally I think 6 Leetcode interview loops is better than 6 take homes, but that’s just me.
Ah well, probably goes to show that everybody picks different threads/posts to read
Why would you spend six months preparing for them when you could build and launch an entirely new product in the same amount of time, which has a much higher expected value?
If you land the job, you have a guaranteed, pre-specified income. Probably a high one, depending on the company.
The massive risk of failure with launching a product should dramatically lower the expected value. Especially since most products, even if successful, won't pay as well as the corporate job.
I think that puts a negative tone on people with other degrees than CS, even if they have good software experience, or are older with life commitments. Jobs and interviews in past did not ask this stuff, yet it's now implicitly considered prep. It's biased towards new CS grads and young folks.
Many/most? companies needing devs do not use/need these CS "fundamentals", which do not automatically correspond with tech skills needed to do product development, at least in SaaS world.
Are they? I often read this on HN, but I'm starting to wonder if there's not a selection bias that's even bigger than I expected. Beyond the usual suspects, I've had more coding assignments for instance.
Of course, hnewslets who get filtered by such interviews will come downvote in force.
One would think the same topic showing up "over and over again" would make it easier to study for interviews
This really isn't a place for lazy, ad hominem attacks.
(I say this as someone with a weird background/employment history who'd be at a fair disadvantage in many respects if they had to get a normal job - but I know I can get a bit of normie cred by brushing up my algorithms at least...)
I suspect you could teach someone to pass a lot of tech interviews without them ever building a production system.
It's all a bit broken. Best method I've seen so far is to sit down with candidates and pair on some code, and it's still got issues.
Im not saying its right, just that it didnt come naturally to me to be in that situation.
If you feel it's out of your control, it could've just been a bad day, but you may be suffering from something like generalized anxiety or a similar problem, you might want to look into that with a health professional.
Im just saying its thanks to my instinct that I have been so successful in my life, and I have never lost anything by refusing fizz buzz, yet have attained good things.
Maybe its survivorship bias.
It goes against my rules to proceed in interviews I think don't lend themselves to the situation.
The most substantial and complex projects I've worked on can end up sounding simple and boring when I describe them. It's not that I can't discuss the details, it's just that I'm not good at _selling_ them. I tend to stick to facts and give a simple overview of the project, and I'm never sure how to approach the gritty details. And honestly, the right choice at the time was likely "Pair a MySQL db with a cron job" or something, and that sounds really underwhelming in an interview.
On the other hand, I've heard people describe projects they worked on, and you'd have thought they were leading the charge on the reinvention of Internet. But when you do the math on their resume, they were two months out of university at the time.
Those types of interviews basically and inevitably end up being "tell me a good story". Non-fiction is preferred, but interesting fiction will win out over boring reality.
Maybe I was just lucky, but I think you don't have to be all "florid", just show enthusiasm when talking about what you did, and it doesn't have to come from the vocabulary; people can tell whether you're enthusiastic from your tone.
Most day-to-day "programming" can be broken down into that "Pair a datastore with a processor" idea, or "know enough about the problem to google/SO a fix or solution," so I don't think being honest about the mundane is a bad quality. Honestly, I think it's important enough, to make it at least a few of my questions on any formal interview, something akin to "what was a project that you thought would be simple but turned into something bigger, and how did you handle communication and management of it from that point forward?"
When interviewing you can ask the candidate for details on their MySQL + cron job and investigate how do they think, architect and build a solution and how much bullshit they're talking. Were you given a very detailed task to perform and you just did it? Or did you reach the conclusion that a MySQL DB plus a cron job would achieve the results? Why? What if the cron job failed? Draw a rough flowchart of your script, etc.
On the other hand, you can smell the bullshit of interesting fictions from a long distance when you ask those probing questions.
Now, an interview on basic CS algorithms? The only thing I would know is that you have a good memory and can recall the Cracking the Code Interview book.
It might come down to who is doing the interview: if you're a founder, or a team leader, and have done a lot of project management, you're likely to ask better questions about constraints, considerations, teamwork, etc, and get a better read on a candidate from questions about past experience. OTOH, a programmer giving an interview may not really care that much about those aspects or have a realistic idea of what a reasonable answer sounds like, and will thus tend to just jump through the interview hoops--and be more susceptible to, well, nonsense. On the other hand, they may actually be interested and invested in low-level technical questions.
I've had really good tech interviews that were challenging and even fun, and I don't think I could've faked my way through. I've never had a good experiential interview. But then, I've only ever interviewed for front-line programming jobs at large companies.
1. FizzBuzz, always, unironically; this easily weeds out 99% of the people who can’t program. I don’t even ask for an elegant solution, just a solution that works, in any language they choose.
2. Open question/toy problem that doesn’t involve hardcore technical knowledge, just common sense. The question is framed in a way that the candidate can grasp an actual use case - e.g. “How would you design a database for a public library?” I would explain concepts like PK and FK on the spot if needed. I even let them use the internet to look up whatever they need. The idea is not to see how much stuff they have memorized from leetcode, but to see their thinking process and whether they are resourceful and ask the right questions. Seriously, some people don’t even know what keywords, not even approximate ones, to use to Google stuff.
Resourcefulness and asking the right questions have much higher priorities on my list of things to look for in candidates.
Then why ask it? This is the whole reason for my stance
Fizz buzz is literally a couple IF statements and a loop.
As an interviewer, I need to know that you aren't just completely making everything up.
This is an actual problem. There are actually people who, for some reason or another, made up a bunch of stuff on their resume and literally do not know how to use a loop or IF statement, and there is no way to know this, unless you ask them to do it.
It is not an insult against you. It is just that an interviewer needs some small very easy check, just to make sure that you didn't completely make everything up.
Where is the line drawn?
If there is 20 years of programming experience it could be perceived as an insult in my opinion.
> Where is the line drawn?
The line would be drawn at the place where like 20% of people who interview at places legitimately can't solve fizz buzz.
If I lived in a bizarro universe, where 20% of people that I talk too legitimately can't drink a glass of water, then I might have to test for that as well.
Fortunately, we aren't in that kind of situation yet.
> If there is 20 years of programming experience it could be perceived as an insult in my opinion.
Ok, and what about the people who put 20 years of programming experience on their resume and are just making everything up, and legitimately don't know even the basics of coding?
Thats the problem that exists in the world. That there are people who you have no way of knowing how to actually code at all, and exaggerated to an extreme degree on their resume.
How else would you suggest figuring out if the person that I am talking to basically just completely made everything up, or is instead just such a good talker that they can bluff their way into people thinking that they know what they are doing?
The whole point would be that someone who knows how to program at all, should pass.
Giving a complex problem would defeat the point.
You can just sit and chat like you're friends but that's going to bias the interview process to "people who I like" which is just "people who are like me".
I'm sure there are LeetCode questions that are more & less predictive of success but it does have the benefit of removing much of the bias in the hiring process, at the expense of requiring candidates to do some prep work. If you don't want to do the prep work then there are plenty of other places you can work.
I think one challenge in these conversations is that people talk about what the interview process should or shouldn't look like without talking about what the interview process is trying to optimize for. And each person is going to have different ideas of what they should be optimizing for in an interview so they'll have different interview solutions. Then you argue about the solutions but the reason you disagree is because you're starting with different goals.
while there's a lot of other things I value in coworkers, and I want a diverse mix, I really trust a coworker much more who I know can reason through, can see how the code will execute, and understand what that implies, can find & state the significance.
there's a lot of here & now tests of ability in programming, to understand syntax, language, side effects, &c. but bring able to reason about runtimes, about this then that then that... it's the bigger picture. we have some pretty basic promise questions in our interviews, & it's so remarkable how many people get cut for now being able to understand sequencing, how a little async behavior trips so many up. not quite the classic algorithm test, but to me, they seem extremely similar in that they want the dev to be able to order & comprehend how things work.
I agree that a lot of pushback against algorithms is deserved. they are misused as a hiring bar frequently. but there is also things I value a lot, & they help elaborate whether a dev grasps coding situations or no.
As a person with a diverse background and even more diverse interests, who likes to use jobs to learn things I don't know rather than simply apply things I do know, I use interviews as a natural filter. It can be rather unpleasant and frustrating at times, but in the end, it's better I don't work for some place that interviews like they got their process out of some Silicon Valley playbook.
This.
When I see people getting all het up over technical interviews on various moral grounds, one notes that they often forgo reflecting over the possibility that any replacements could be even more bullshit/arbitrary/exclusionary.
> but I know I can get a bit of normie cred by brushing up my algorithms at least...
So I guess the question would be “why do you want normie cred?”, and then the rest of my comment remains the same.
I have a history of self-employment and little formal education in programming per se. It might put potential employers at ease to be able to exhibit some conventional chops, and that kind of interview segment would give me an opportunity to. And algorithm-questions being more or less role-agnostic might mean less preparation rather than more for interviews when one is doing a bunch. OTOH if you want a particular role you should probably better brush up on what's needed for that role and show each application you make some individual love rather than hoping that you can carpet bomb tech company interviews in your city with algorithm-knowhow-powered interviews and get a job out of it.
Given how theoretical this discussion is for me, I feel like I'm slipping into being some kind of devil's advocate role now. I would like to apologise to anyone (basically everyone else here will have more experience with tech interviews than I have) who's reading this rolling their eyes.
My experience has been rough and painful at times, because I tend to be very pragmatically and interest driven in terms of what I learn, outside of being pragmatic about what might be asked in interviews. I also do not have a computer science degree, as I studied mathematics, but I self-study on interests of mine and take interviews as they come. This has made interviews rough at moments, but it's worked out so far, because I would likely be very unhappy at a place that quizzes me on something I could learn over a weekend or two if needed and grades me solely on that. I had one particular interview that wasted an hour and a half on tree questions, then a few more hours on random discussion topics and behavioral questions, and they never once asked me about prior work or side projects. It was a complete waste of time and energy, for both of us, and I have held that interview experience as a prime example of what I have read about Silicon Valley and FAANG-style interviews.
This just proves that you can memorize a cheat sheet. What good is having interviews if they are so predictable that the applicant basically just repeats himself over and over again? That isn't an interview. That is gatekeeping. "Do you know the secret handshake?"
I don't know the entire multiplication table by heart, but I know how to multiply. But that's not what interviewers are testing for. They basically want to see you rattle off a chart from memory as though that's a non-arbitrary universal indicator of capability.
Of course, that doesn't really change the fact that the content of the questions has little to do with the work you'll end up doing. But I've done brainstorming with coworkers, and none of us had any ideas for interview approaches that would work better--except maybe those 2-day take-home projects that everybody hates. I think I remember a paper claiming that random acceptance would work about as well as the current interview process.
Problem is, the percentage of skilled interviewers is likely not much higher than the percentage of skilled candidates.
I don't really get why "reversing a binary tree" seem to be used as an example of what's wrong with hiring. I will say, though, that if someone said "how do you reverse a binary tree?" I would have asked the follow up question: "what do you mean by that?". If asking that would be used against me, sure, that's bad hiring.
But if the answer is: "swap all the left and right nodes in a binary tree", then... isn't that pretty basic programming?
I find high end jobs tend to ask some form of problem that can be tackled using dynamic programming techniques. Maybe couple of easier ones in the first interview.
I agree with most people. I never use these skills in the job. I think they're a intelligence test in disguise.
I mostly agree with your impression, though even after adjusting for intelligence I bet there's a positive correlation between knowing how B-trees work and, say, having a good intuition for how to index a database.
But the purpose of the question of course is to be an easy question showing basic competency in recursion and pointer usage.
It’s not some arcade high art, it’s quite accessible with lots of great learning guides.
If you choose not to play the game, your pool of potential companies will be quite limited.
On the other hand, reversing a tree and problems like fizz buzz are pretty low bars...
Mostly HC is a ton of work (eg read 8 full interview packets a week) so if you express an interest and are a decent interviewer you’re likely to get shot at it and you can make a real difference.
I didn’t need to know 4+ years of CS curriculum, which I never would have learned on my own. I just needed to spend some time learning algorithms and data structures, and practice using free resources on the Internet.
A pretty good deal for non-people who didn’t study CS in college.
In fact, someone who studied CS in college might be slightly miffed that they offered a job to an outsider like me just because I practiced data structures problems in my free time.
It’s a string of poor decisions/planning followed by an unproductive rant. I don’t particularly like leet code style interview questions either, Author could take a few months and brush up if they’re a proficient engineer or if they’re really opposed then pre-filter companies based on their interview style. Author could find a corporation outside of FAANG that isn't idealogically abhorrent. Author could look for windows shops. Author could consult (sounds like they’ve been successful with this approach).
I suspect the author just isn’t that great of an entrepreneur and tried to pivot into a high paying engineering role they just aren't really qualified for either.
I agree about the SF observation at the end. If SF culture isn't working for you then explore elsewhere. I wish more people realized this before assuming they need to be in the bay area to be successful. It’s a pretty limiting and potentially damaging assumption and I’ve seen people get super distraught about the idea of being anywhere else because they drank all the VC urban tech hub cool-aid and are just starting to come down.
Feel free to ignore if the answer is no.
CS fundamentals have a big impact on the kinds of programs that individuals can write. Asking questions to show that a candidate can write a DFS, leverage multiple data-structures, or do X helps ensure that the individual is capable in this regard. Even for experienced candidates with lengthy portfolios you may find that someone drifted into an operational, management, or product role and has forgotten how to effectively program.
However, the format of the whiteboard interview is awful and if one doesn't practice for it it won't turn out well. I'd love for there to be an alternative, but the other options all have their own cons.
1. Take home tests/projects
- Requires the candidate to invest time which they may not have.
- At scale this process is easily gamed.
2. Github projects/portfolio review - Many candidates don't have time to work on open source
- The median github project has a low code standard, and is usually made for the purpose of learning something new.
3. Pair coding - Many candidates hate pair coding, personally if a company mentions that they do this in day to day work I will not work for them.
- Difficult to calibrate.
The only alternative I've seen is a "functional interview". Where the candidate is given sample code reviews for standard applications or a broken program to debug.Sadly, there seems to be very little correlation though. I've known programmers who graduated from a top CS school with extremely strong CS knowledge, who still write barely comprehensible code. And vice versa, people who have never been taught big-O, but who write the most maintainable, well-reasoned code I've seen. Most programmers aren't building e.g. databases, but writing software that provides business value.
Take home tests can be ok, as long as they are limited in time (<2h). I was adverse to pair coding, but found it to be not as bad as I thought, unless it's 100% pairing all the time. Well, whatever the solution, I think anything that's closer to what day-to-day work at a company looks like is going to give richer feedback/signals than whiteboarding.
Ideally I'd want to interview for both skills.
I can’t help but feel that people who think otherwise have never worked in literally any other field for any amount of time. Like it or not, you have to narrow down any candidate pool to like 1% of applicants before doing any sort of in person interviewing. Most places do this by only hiring people with degrees. If you’re talking about a job that’s going to pay as much as a software engineer, you can probably get away with only hiring people from elite universities, or who have connections within the company.
Frankly to me the author comes off as arrogant and entitled. He feels he shouldn’t have to prove his worth because... he ran a failed startup? Then when his friends give him a job, literally the definition of nepotism, that still isn’t good enough? What does OP want? A system where only the best jobs are gained by nepotism?
This attitude is condescending towards those that come from diverse and non-traditional backgrounds, most of whom are perfectly capable of learning and developing an active interest in these subjects.
And that's exactly why your experience was the way it was. HN is a self-selected crowd with a very specific mentality. Unsolicited advice: try a traditional job search website and look for companies outside of California and NYC. Your experience will be drastically different. I'm not saying it will be awesome every single time, but there will be more diversity in approaches to interviewing and in personalities.
Also - sometimes you just need to get your foot in the door somewhere that's not too picky and caters to what you're looking for but pays slightly lower than what you want. Then prove that you're actually as good as you say, so you can ask for a raise. I did exactly that with my current employer. After 4 months of being there and proving myself, I asked for a 35K pay raise (about 27%!) and got it almost instantaneously.
This doesn't really seem unfair as ORMs stop working at a certain level. He seemed to have been targeting companies doing more complex things than he was previously doing.
This skillset just isn't that useful to a large software shop.
Startups are fun. I work at one now. 3/4 software engineering roles I have had have been startups. But all the work I am doing is also very shallow because everything is a fail fast timeboxed sort of thing where you work across a large spectrum of stuff and I will eventually need to change that.
You’re simultaneously doing some of the hardest work of your life but also watching some of your skills atrophy simply because you’re spread so thing across so many different problems.
Startup founders tend to make good product managers or cross-discipline engineering managers for this reason, but it can take some time to slide back into the groove of deep technical work in specific domains.
Basically this guy discovered he is not actually very deep but has not actually concluded that from the evidence before him.
It is hard to take folks for their resume or at their word alone. The inane questions just provide a common framework for evaluation. It is definitely not indicative of actual work to be done. It is totally an indicator for someone willing to pick up a new skill and learn in a short window. We in fact get the other kind of candidates as well: who can solve these problems very well but can’t do good work. So the interviews at snap at least try to go for a combination of informational and design/technical questions.
Ignore the feedback - we are not really allowed to give exact feedback because of liability issues :/. So it is going to be some super high level things you can’t sue us for.
Leil Lowndes writes books on improving as a communicator, not about tech, but one of her pieces of advice for interviews is to interview at places you don't want to work first, and treat it as practice. In her case the recommendation is meant for people who struggle with being comfortable presenting themselves and talking, but it applies just as well in other contexts.
E.g. find some jobs you're clearly qualified for where you're likely to get an interview relatively easily. Drop your standards - your goal is not to get hired. See what questions you're asked. Use the experience to improve. Amp up the "difficulty" if you get offers.
See how the questions differ, and how the process differs if you try for more challenging positions.
Then go for the job you want.
Figuring out how to pass the interviews in "low risk" situations (because you don't really want the job) is both good practice, good calibration of expectations of what kind of job you can get, and a good way to relax more when you apply for the dream job.
Runs startup. It fails.
Makes a game. It fails.
Fair enough, those things are really hard to do.
Gets into tech interview, asked a question he doesn't know the answer to and DOES NOT RESEARCH THE ANSWER FOR THE NEXT INTERVIEW?
Now I'm starting to understand why the startup and game failed. Sure, reversing a tree is arbitrary. However, when there's a 6 figure job on the other side of that arbitrary line... it's probably worth learning.
You might have a hard time getting a job at Netflix/Google/Facebook/etc. But there are plenty of companies out there that absolutely do not care if you can write algorithms on a whiteboard and they aren't bad places to work.
Are those companies missing out on good programmers because of these requirements? Of course, but it's hard to say if they're making a mistake. They're also filtering out some bad programmers or at least bad students.
I don't know what it is, but something about the position of authority and power of being an interviewer really does change people. It's a modern-day Stanford Prisoner Experiment[1]. I've been on both sides quite a bit, and it's remarkable how people flip like a light-switch when you enter that room. There are exceptions of course. Those people who it doesn't affect are the ones I like to work with. Although, it seems those most interested in being on the interviews also seem most affected.
[1] https://en.wikipedia.org/wiki/Stanford_prison_experiment
I've worked in places where often interviewers seemed more interested in proving how smart they were - and particularly how much smarter than the candidate they were - than in assessing whether or not the candidate is suitable for the job. It smacks of insecurity.
My current company, regardless of how good or bad a candidate is, everyone knows that they are to be treated with respect and kindness, and they also know that if they don't treat the candidates well they're going to get a bollocking for it.
First impressions definitely cut both ways, and word travels. If you treat candidates like crap don't be surprised if your stream of applicants dries up. Unless you're a FAANG you really can't get away with that sort of behaviour.
Still.
A lot of people will panic and freak out the instant they hear something they're not prepared for.
In an ideal world you would only ask questions that no qualified candidate could possibly have difficulty with, even under severe stress, but there's no way to do that.
An additional complication is that interviewers can't just walk away knowing whether the candidate can do the job. They need to give a more complete evaluation of the candidate so the hiring manager knows what to do if the candidate negotiates for a higher salary or asks the company to match another offer they've had. This often depends on "nice to haves" such as advanced SQL skills or the ability to quickly assess the big-O complexity of an algorithm and figure out how to improve it.
> I should have gone to a small, cheap island nation and swam with dolphins
> After some months of that, and with enough runway to go for another year, I went back to the game and finished it. Unfortunately, it wasn't as finished as it should have been
> questions about complicated SQL queries (I use an ORM
> they fired me after a few months because they found they couldn't bully me into working longer hours for lower pay.
> I really did say fuck it and just left the country to travel around and work as a digital nomad
I can't believe he'd post this publicly. The reasons he's unemployable are he never dug into the technology he's using, he's bad at finishing things, and he's a bit of a beautiful and unique snowflake.
What makes you say he never dug into the technology he's using? He clearly dug into it enough to release a couple finished products - that's more than most engineers can say.
My guess is that your lack of sympathy is an indicator of having not faced this degree of failure in your own life, else you wouldn't take such a cynical perspective.
His game.
> What makes you say he never dug into the technology he's using?
The bit about using the ORM. He said he's been a programming since 12. Not being OK at SQL by the point he's at is a smell.
> My guess is that your lack of sympathy...
I'll halfway grant you that. I've failed more publicly and more spectacularly, but I'm a better engineer, so despite that, I'm still employable.
I'd been working on an OSX app as a side project for fun and decided to develop that, if only to add an other skill while I still looked for another job. After a little interest this developed into an iOS app and that started selling a few units a week, but nowhere near enough to pay the bills. (It still brings me in beer money every month)
All the time I was looking for another job, slowly running out of money, this was for 4 years. I'm not university trained, had worked with this language no knew about for near twenty years, now over 40, in a country where I wasn't completely fluent in the language and getting interviews was hard, really hard. Of the interviews I did get, one interviewer told me the app I had written wasn't technically possible, another told me I'd never keep up with younger kids.
I had just about run out of money when I finally landed an interview at a company looking to develop an iOS app and also in a similar field to what I worked in before, luckily they needed someone right away and I aced the interview. I've been there 3 years now maing a great impact on their existing app, and now after developing and proposing a new app to the company, I now work on that. I feel my employment prospects are in a much better place for the future, with a successful app under my belt in an environment people actually know about.
It was tough though, just sorting out the mess I had got into with surviving on my last pennies and getting into a pretty bad state psychologically is something I'm still dealing with.
Overcoming ego is hard... but not impossible. It's like telling someone they are parenting their children incorrectly, but you're the one telling this to yourself. Often it takes an emotionally difficult situation that triggers deep self reflection or incredible friends whom you trust, and who are willing to speak the truth.
I'm happy that the blogger has seemingly found a way to be happy, but I can't help but wonder if they've just optimised for a local maximum, and not their full potential.
For founders, the reality is that part of their skillset is not transferrable into a more structured company. Working with bureaucracy, interviews, communication, working with large groups of people, high amounts of structure, planning, and risk mitigation are not skills that overlap with starting a company and going from 0 to 1. If you're a founder type who wants to take a break and work at a more established company, you should be prepared to make this transition. All is not lost though - if you plan to start another company someday, be a sponge for how a larger company works - it will pay dividends later when you need to create this yourself.
Being an entrepreneur is a high risk / high reward venture though and we’re not entitled to an easy, well paid salary if we fail.
Great read though and glad the author found their groove eventually. A salaried position doesn’t have to be the default fall back.
The point of those questions is not that you might need that knowledge at work. It is to make sure you can learn something difficult to learn. Trust me, once you join those big companies, there are a lot of difficult to understand concepts. They are not exactly the Leetcode questions but difficultly to understand and work on it is similar.
Programming is hard. It takes a lot of skill to do it well. If the author seemed interested in acknowledging this and developing skill, the article would not come off as whiny and pointless. But it does, because he’s not interested in identifying and fixing the problem, which resides in his own house.
The fact many companies interview for something that is mostly unpracticed by candidates in the field (only those practicing it at home), and won't actually be done on the job if hired, is a very strange place our industry finds itself in.
The vast majority of developers can absolutely do 80% of the job I give them to some sufficiently reasonable degree, but I'm not hiring people for the 80% of the job. My issue as a company is finding people who can nail the remaining 20% of the job. That's very hard to find but it's absolutely critical in a business as competitive and cutthroat as technology.
The fact that most developers don't have a basic understanding of fundamental and core concepts really does have a measurable impact on the quality of software and almost all of us, as consumers of software, pay a penalty because of it.
We put up with slow, bloated, and inadequate software because we take for granted core computing concepts, fail to appreciate the hardware our software runs on, and write software in an unbelievably indulgent manner.
Some of this is alleviated by relying on frameworks provided by the major tech companies to deliver software and that certainly helps quite a bit but this benefit doesn't come for free; it results in vendor lock in, code rot, and a genericization where many software products end up being bland and derivative because everyone is gluing together the same frameworks.
I don't need 100% of my hires able to handle 100% of the tasks. I have specialists at every level anyway; if I need someone writing data structure libraries I will focus on hiring for that. Most of what I, and most software shops need, is not that.
"The fact that most developers don't have a basic understanding etc" - citation needed. Most developers do. Even those untrained. But I don't need a developer to have reviewed data structure pedantry prior to an interview; I need developers that know they don't know everything, and know how to find answers.
"We put up with slow, bloated, and inadequate software because blah blah blah" - no, we put up with it because the market doesn't care about it. All the pressures on a business are features; speed is immaterial past a certain point.
No but every facet of your software that is treated as a specialty, or handled by a specialist, introduces a bottleneck in the development process.
Understanding the basic algorithms and data structures should not be something your developers have to specialize in and it should not be something that introduces bottlenecks into your work flow.
>"The fact that most developers don't have a basic understanding etc" - citation needed.
https://blog.codinghorror.com/why-cant-programmers-program/
And yes it is very much reproducible and I manage to reproduce it consistently. Every single applicant to a job posting of mine goes through an unbelievably simple screener similar to Fizz Buzz and the fail rate to this day and on a consistent basis is over 50%.
I suppose you hire a specialist for that as well.
>All the pressures on a business are features; speed is immaterial past a certain point.
No, it's that most businesses don't even realize the importance of performance because they have no idea how to even begin measuring its impact.
As an example of this... consider a research study Google conducted to determine the maximum number of search results to display per page. Google's survey said that users wanted 20 results per page, so Google conducted an A/B test to compare traffic between 10 results per page and 20 results per page.
Their finding was that 20 results per page resulted in a tremendous drop in traffic, despite what users had told them. So certainly users were wrong and Google should stick to 10 results per page, right?
Wrong.
After very carefully studying the numbers, what Google realized was that there was an unforeseen factor that they did not take into account in their experiment nor did they anticipate it even being a factor: performance.
The 20 results per page took something like a couple 100ms longer to deliver compared to the 10 results per page, and that small performance delay was all it took to degrade user engagement and traffic on their site.
Once Google normalized performance so that 10 results took as much time as 20 results... traffic on the 20 results was substantially improved over traffic on 10 results. Furthermore this result generalized, as Google improved the performance of search results they continued noticing an improvement in traffic.
In other words... performance is treated by users as a feature, and yet it's a feature that most people don't even realize they want until they know what it's like to use reasonably fast software. Furthermore, the more performance you have, the more of a "usability budget" you have available to deliver features to your users.
You are welcome to spend your "usability budget" on hiring developers who can't answer basic questions about data structures and algorithms, and honestly if that works for your business then do it. But please understand some of us do care about writing reasonably fast software and we wish to hire developers who can answer basic technical questions about the profession they are engaged in.
Sure, I end up paying more for those developers, a lot more... but in the end that cost is but a tiny fraction of the total cost of running a company and I'm more than happy to pay it knowing that I have a team of qualified professionals who are able to implement the fundamental data structures and algorithms that underlie this profession.
Yep. Company culture / psychology is also a factor. You can hire a bunch of amazing programmers who deeply care about speed and elegance but unless business pressures exist to incentivize those things and also the company's process and management are set up to encourage those things, it will not matter. A developer can care about speed and elegance, but if his bosses want him to use bloated frameworks because "everybody uses them" and it is easy to find developers for them, or if the feature requirements keep shifting, or if his bosses want him to spend time writing some pointless tests because of supposed "best practices", or if any of a bunch of other factors are at play, it will not matter much.
So I am not sure that a shortage of developers who are competent at those things is the real bottleneck.
Reversing a binary tree is a basic test of whether you can implement a trivial requirement given a spec. How is that not related to what you do every day on the job? You get a lot of requirements, most of which are trivial tasks needed to maintain compatibility with some broken external system that will never get fixed. The solutions are two to five lines of code, once you've taken the time to understand the requirements properly - just like reversing a binary tree.
This is neither a task that needs to be studied for nor an unfair pop quiz. It's an easier version of fizzbuzz. (You don't even need to worry about gotchas like getting case ordering wrong the way you do in fizzbuzz.) All it checks is that you have the basic skills necessary for reading and comprehending requirements and then meeting them with trivial code.
If you can't do that, what should an interviewer conclude about your capacity to do the job?
A toy implementation of machine learning algorithms (e.g. backprop on an arbitrary neural network) on the CPU, is pretty simple as well.
But I do think that by hand implementations of k means or k-nn or cross validation would be appropriate for folks who are interviewing for ML positions...
That makes it far better for an interview question. It's just a test of how you handle the sort of nonsense task that makes up so much day to day work. "Why do I have to frobnicate these doodads?" "Because the doodad processor requires it. That's just how it works, so we need to do it."
1. Never having thought about it before, generate an acceptable whiteboard algorithm from scratch while having a person or three bore holes in your back.
2. Throw a canned answer on the board.
My impression is that large companies prefer Door Number 2.
Unless you don't know what a binary tree is, or are forbidden to use recursion, you should be able to figure it out even if you have never studied algorithms. This is FizzBuzz level stuff.
The only difficulty should be if representing a binary tree in the language you are using involves pointers/references or nesting that you do not understand. In that case, the question has exposed a serious gap in your knowledge of that language which you really should fix. It's OK to not know the more esoteric features of a language, but you should know how it handles pointers/references or nested data structures.
The fact that reversing a binary tree is in fact trivial is to help make the point that these kinds of questions are not that useful.
I've worked in the industry for years now and I've probably used more maths from my physics degree than I have of the algorithms that I learn for interview.
Now I'm working in an industry I don't like, facial recognition, because 99.99% of the potential employers I've contacted either can't figure out what I could do for them, think I'd be bored with whatever they do, or think I'd be too expensive. I even had one interview recently when after an hour the interviewer says "sounds like you're tech light, so..." WHAAT? They had no idea creating media production systems or working in VFX is all digital technologies.
I certainly don't have a solution, but I do get the impression that there are more developers than there are jobs and this is why many companies can afford to be more arbitrary in their selection process. Mostly I just wish I bought more bitcoin. Kidding but not kidding.
It's a horrible, flat-out wrong use of terminology, inconsistent with the use of the term "invert" in just about any other technical context. Using it should be grounds for shaming.
Realize, when you go for FAANG job you are competing with a lot of younger people, frequently just out of school with fresh memory of CS topics.
There is a lot of other companies with just as good compensation where your other qualities (like maturity) might be more advantageous than in lowest echelons of FAANG.
You know, I think I can understand that simply due to the gigantic amount of in-house legacy code, toolkits, etc. It could be simply that younger people are more likely to take that Sisyphean task on, especially those on their first job. Schools aren't bad at numbing people to be part of a collective.
Maybe it's same to assume that a FAANG is simply the modern equivalent of a defense contractor.
At the same time , they'll often take a chance on someone who on paper isn't qualified. That's how I got into this industry.
Has anyone been able to hire a general businesses person to manage the day to day boring parts. I'd like to keep working full time while paying someone to run my startup
Which if you remember being in college, is a decent amount
We all love to open HN and read the new PG essay and dream "I am the one", but the odds are not in our favor.
The extreme survivorship bias also doesn't help. But honestly, I don't know what the ideal solution is.
Even though I read stories like these, hear all about how the odds are stacked against, how difficult and hard it can be, I keep wondering a simple "What if?".
I guess you could say that there can be a 100 reasons not to do something, and yet one good reason why is more than enough to offset the 100 bad ones.
He (like many others) just doesn't want to play the "leet code white board" interview game, nor wants to play along and pretend to be super excited about some foolish cult-like startup only to receive less money.
You can argue that the interview questions don't make sense, but in the end, if you decide you don't want to play the game and master the tech interview, then you will have less options.
The part that's not usually said out loud is that you need to be rich and/or well-connected to "fail up" when your startup fails. Running a startup may help you get connections, especially if your angel/VC network has a good reputation, and you happen to remind them of their younger selves.
A lot of students start internship where I work and quite often I am their mentor officially or not so. Recently their dean called me and offered to lecture at the university. I am an engineer with 20 years of experience, I can teach a lot of useful practical things, but when I looked into syllabus it was a list of mostly useless theoretical knowledge I am no expert in. Honestly, it was not a pleasant moment, I felt like a successful plumber.
My guess is that what students really want is a lecture in how to get a job, not how to be useful in a job. OJT and fakeittillyoumakeit would then become the order of the day.
I wonder sometimes why I don't hear more about apprenticeships by the nation-state sized companies. Bring in likely 17 year olds and train them in whatever specialized way you like.
Perhaps some of all this interview nonsense could be avoided by commonly recognized software equivalents of a PE cert, but I suppose you'd simply slide into subtle quizzes about programming languages and the like.
What I like to do is to ask people to explain and algorith to me, e.g. "What is a HashMap?" as in how does it work, what's a hash function and what's it good at?
A lot of people cannot answer the question, because it's not relevant to their job, they just use it, put objects in the map, get objects out of the map.
So if they don't know it, I will explain how HashMaps work to the potential hire. At least they'll all be walking out of the interview with a little bit more knowledge than they walked in.
So we start with what's a hash function, how to choose a bucket and what happens in a collision. And then I ask people to explain to me what happens if I implement the hashCode as a constant function that always returns 1.
Now what I want to see is that people digest what they just learned and apply it.I find that is a skill that is what developers do everyday and that it directly correlates with performance.
A CS degree isn’t hard to get in the grand scheme of things, and not getting one is basically the equivalent of burning your boat and going all in to whatever alternative path you choose, because if you fail you’ll just end up unemployable later on.
If the degree on the resume puts those people into the "pass" bucket automatically, that is the wrong approach.
That probably wouldn't fly as well today or going forward as the field matures. Get your CS degree.
To be honest, I can see requiring a degree for certain positions. But given the work most software devs are doing, I'd be happy to consider 4 years work experience. The number of times I need someone to invert a binary tree so far is 0, but the number of times I've needed someone to build some basic CRUD functionality following a UX spec is too numerous to mention. I don't need my degree to do the latter; I don't need to hire a degreed person to do it either. And even things that a degree might help with (recognizing an O(n^2) implementation when an O(n) is available) are lessons you can learn pragmatically by doing (i.e., having senior engineers point out issues in code review).
And I agree with almost every opinion you may have on this; but the thing is, it is just harder to come by a decent opportunity without it. Nice that you try to set your foot in the door here politically, but the cost for that is being on a crappier job.
I was an idealist too, 20 years ago...
Pro - You might get hired by xwdv.
Con - You might get hired by xwdv.
So far the cons seem to outweigh the pro's for me.
If someone has a legit work history in our industry, but no CS degree, and their resume otherwise makes them look like a good fit, you should interview them. At worst they are terrible and you waste a few hours of your time.
Imagine what this guy looks like from the hiring managers side. Would you take the risk of hiring him for a software engineering position? Do you have any confirmation whatsoever that he can even write a single line of code? Yeah sure, he founded a startup, but you literally have no idea who wrote the actual code there or even if anything functional was even produced. Maybe the reason the startup failed is because the software was incompetent.
I get it. We all hate reversing a binary tree, and most likely we'll never have to do it in day to day work. But here's the thing, almost anyone who can reverse a binary tree on a whiteboard has basic competence at writing code. The reverse isn't necessarily true. There are lots of great coders who aren't good at whiteboard interviews. But hiring managers don't care about false negatives. Bad hires cost a truly staggering amount of money, overlooked candidates cost virtually nothing.
When I hear or read about people who are failing to get SWE jobs, it's usually because they do not have any demonstrable credibility of basic competence at writing code. To get a seat at the table you must bring at least one of the following: a pedigree, a network of credible people who can vouch for you, your name publicly attached to a successful project or the ability to crush whiteboard interviews. A manager that hires somebody who meets none of those criteria is taking an enormous risk.
I wouldn't go that far. While the work involved may not be that hard, a CS degree may be inaccessible or a poor fit for many people.
That said, I agree with the premise that it is hard to evaluate self-taught individuals. It is far too easy to have gaps in knowledge if one doesn't approach their studies systematically, it is difficult for the learner to assess their own learning without a realistic baseline to compare against, and too many businesses oversell the quality of their programs (e.g. bootcamps).
I’m not going to call it hard quote yet, but I’ve been a bit shocked at just how much the university process is designed specifically for 17/18 years olds prepped and groomed the past few years for it. There seems to be little at all in the way go good education options for working adults and what little is directly targeted at that demographic, even from otherwise legitimate schools, feels extremely (I’d be happy to expand in this but I want to keep this comment short-ish)
If you don't know how to reverse a binary tree, it's likely you won't ever think of it as a solution to a problem, so you won't encounter cases where you put these skills into action.
Either through self-selection or through lack of ability to identify opportunities, if you don't have certain skills you'll be unlikely to need them!
Web development or similar disciplines do sometimes manage to avoid these sorts of things, but debugging database index performance/size can lead down this path, processing data for complex business logic, data analysis, there are lots of cases in "web development" where these things can be applied, if you know where to look.
The blog post mentions he works on "machine learning" projects, which in my experience benefits significantly from having leetcode-style algorithmic knowledge (assuming you are not just calling blackbox.infer() all day).
I'd just like to point out that it's possible they're a perfectly competent hire and just got unlucky.
If a competent engineer has a 20% chance of passing an interview, the probability that they fail 10 interviews in a row due to pure bad luck is 10.7% (.8^10).
The chance that the same competent engineer gets an offer in 3 or less interviews is 50% (.2+.8.2+.8^2.2).
So, it makes sense that most competent engineers will believe it's easy to get a job offer (after all, most will get an offer after 3 or fewer tries). However, a small but significant portion of competent engineers will believe it's exceedingly difficult and become disillusioned. The truth is somewhere in between.
The people who are conducting interviews are all that and more. Tech people lord over the commoners by focusing on obscure syntax and the latest buzz words as opposed to the basics of building an application. The smartest thing to do when building something is to Keep It Simple Stupid (KISS). The guy whose interviewing will write clever but unmaintainable code and then will leave in 2 years to follow the next trend.
I fail to see the link between the premise and conclusion here.
I'm also largely self taught and been programming since childhood. And although I also did go to a university to study math, most of what know about algorithms is from self-learning to satisfy own curiosity, not from attending university courses. University gave me a chance to participate in ACM ICPC and paid for my flights a few times, for that I'm grateful - I was able to land a FAANG job right out of school thanks to my success at it. But they did not teach me algorithms and competitive programming, that was all self study.
... and when the inquiries will inevitably come, just politely reject doing interviews with code questions, etc., and turn on the offence! Ask them yourself about the task and if it might interest you enough, so you will be motivated to work on it. Your ideal interview should be more about THEM, not about YOU. It might take a while to master this skill, but used right you can totally dominate the interview process and hire yourself into almost any company which is desperate for developers.
I'm a developer with more than 30 years experience including some well known products from big companies. The same is true of my circle of friends but only two still have traditional tech jobs. The rest have gone independent out of necessity.
All that to say I’d suggest candidates be more willing to ask for help. Interviewers are people too and if you can code a solution easily after getting unblocked they might forget you ever asked for help, or respect you more for it.
My coworker shook his head and laughed at me, saying, "No one hires an MBA because of what they know, you hire an MBA because you know they'll do whatever dumb thing you ask them to without too much complaining or pushback; you're hiring for polished compliance."
I think these coding interviewers are more or less the same thing. They prove that the applicant is willing to eat a certain amount of sh*t without making a fuss about it.
The only interesting part of the article, and the author doesn't expand on it. "I was trying to get a desk job, but when that fell through I just decided to travel, work remote all the time, and work half as much." Um, what? I have so many questions.
Regardless, I was interested in the Author's switch to digital nomad lifestyle - was it easier than interviews? Why? where did you go? etc. I'd love to hear more, and whether the author is enjoying it more than whatever FAANG job he was applying for.
1) Your 100% employable but like others have said you're not playing the tech interview gauntlet game.
2) Recover and reflect: Figure out what worked and what didn't work. This is important for your burnout recovery. Part of being burnt out means you feel incapable of achieving. This is not the case, reflect on what you did right and what went wrong, understand what you have to do to get where you want to be by taking stock of where you're at now. Then make a plan of where you want to be, keep yourself accountable, and every week analyze again where you are at and where do you want to be. Only make a plan after you have recovered.
3) De-risk your life, startups are inherently risky 96% of them don't make it to a Series B. However, you can build a SaaS product that gives you lifestyle money without taking on investors. Figure out how to take high impact low risk in everything you do in life. This allows you to have outsized returns on the things that work out and minimal drawdown for the things that don't. Sometimes you have to do risky things but if you're going to take risk find the metrics that you seem satisfied that make the risk worth it and then have a backup plan if it fails. This way you'll never be surprised.
Best of luck!
It took quite some time to recover, now that I'm up and running I only see a few options outside of starting one. I'm currently pursuing the digital nomad route with contracting.
There is something so addictive about being able to zoom between high and low level tasks with very high responsibility .
Felt the same way during a recent spate of software interviews.
And I have the MIT CS education.
But I don't know all the latest lingo and CQRS or whatever is cool this week.
Thankfully, an old employer knew my value and brought me back to develop for and manage a large, cutting-edge project.
Everyone? Really? That's a red flag. I would believe "a lot," and I would accept "half" as hyperbole, but if it feels like every single one, then you either have an uncanny knack for picking bad places to interview, or you're taking the process way too personally. Sometimes a job isn't a good fit because of a skill it requires that you don't have. Maybe they need someone who can sling complex SQL from day one. Maybe the ridiculous word problems are real problems they've had to solve, which they have to frame in silly-sounding ways because the real-world context would reveal sensitive information or take an hour to explain.
Sure, there are interviewers who waste everybody's time by asking questions that don't select for good candidates, but even if you write off all those interviews, that just adds a certain percentage of overhead to the process.
But regardless it is competitive at the well-compensated positions and things like "culture fit" etc. are also used. They can be very selective and just hire anyone they like. So one may be a genius and an experienced developer, but you may also be competing with someone who is a much younger genius, charismatic and with a well-regarded degree and good at whiteboarding.
For me, being a little bit older and not interested in getting an associate's degree in white boarding algorithmic problems or dealing with a lot of stress from office politics, I am not easily able to obtain or maintain a high paying job. But I am able to live somewhere with a low cost of living and work on a contract basis that keeps me going.
My goal is to build robots someday so I am taking advantage of a light schedule to learn/work on computer vision.
Sure, that’s a little bit understandable if the problem came at you out of nowhere, but...that basic algorithms questions are common technical screens is hardly hidden knowledge. Abd that aside, even without having studied it specifically, reversing a binary tree isn’t, as problem solving challenges a developer might face, a particularly challenging one.
> Or whatever I was supposed to do with some of the probability related word problems I got.
Examples here would be useful to understand the complaint; I mean, since you say you were actively looking for data scientist vacancies, I would assume that both understanding and identifying needed clarification on statistics word problems ought to be in your wheelhouse.
> Or certain questions about complicated SQL queries (I use an ORM, rarely do I need to write a query by hand)
While you may not usually write queries by hand, using an ORM doesn’t prevent you from needing to understand complex SQL for complicated queries, and, I mean, I don’t known what position this was an interview for, but if you aren’t the person dictating tech stack decisions (as presumably you were as a founder), you may not have the luxury of avoiding get your hands dirty with SQL, so its not an unreasonable thing to test.
> I had been working as a consultant and/or starting companies for almost 10 years
So why weren’t you either:
(1) Continuing to work as a consultant, either independently or in a consultancy?
(2) Applying for the types of b2b sales, or other business-oriented positions for which starting a company or independent consultancy experience would be relevant?
Self-taught Pascal at 12. Then x86 assembly, C, C++ and so on. I have a BS EE/CS degree, could've done PhD but stopped. Typically do work now like AWS architecture, full-stack team lead, Sr. SRE/Production Engineer.
I've been living on savings for ~ 7 years between contracts that paid the bills for little time investment, but I'm at the point where a J O B would be a more stable source of income and increase daily focus. I do have a pending interview with a FAANG, but I'm wondering if the resume staleness or that fact I nuked my social media and antiquated LinkedIn is going to hurt too. I had a verbal offer from a startup interview via HN "who needs a job" but it was a scam for free brain picking when I could use a real job and the money now.
this is a red flag. even if you use ORM, you want to know what kind of query that it generated. certain query generated by ORM is actually quite dangerous like Entity Framework core.
> calls it being unemployable
What a narrow minded view on the world of professional software engineering. There are plenty of „pays the bill“ jobs that don’t require grinding leetcode.
I'm also an autodidact having taught myself how to program at 15 but never pursued a bachelor in CS. I've failed coding interviews before when asked to diagram a sort function. So I upped my game, took an algorithm course on coursera, coded up some binary tree examples, learned about algorithm complexity. Then I got through the interview process at a FAANG.
Algorithms are not a part of my daily job but perhaps they are like an honor code for software developers as much as a martial artist will never use violence in real life.
In the end he found he was happier as a freelancer, basically.
He has high standards, ethically, and he is competent and knows how to get things done and has little tolerance for people's BS. And he knows how to make enough money to keep body and soul together without having to put up with that shit, so that's what he's doing.
I would say he's wildly successful and has found his escape hatch from the rat race and we need more such stories in the world, not less.
As someone involved in hiring, Windows IS a red flag (unless you are a .NET developer). Any sort of open source stack is either a nightmare to get going on windows, or impossible to get going on windows. I also have no idea why you would do that to yourself, Windows as a dev environment is terrible, definitely the worst of the three options.
This is a good read... and does show some struggles people can have. I just think it misidentified the root cause of the problems.
To be fair, practically all people in their 20's go through a pachinko machine of decisions leading God-knows-where.
Reminds me of this thread - https://twitter.com/awilkinson/status/1376985854229504007
Skimming through the article, this seems to be an exaggeration. He may be unemployable at some companies; maybe even at most companies that advertise on HN; but I am sure there are companies that don't ask for inversions of binary trees, theory of probability, etc. during interviews. They may not pay as much as the ones that do; but surely he is far from unemployable.
I've since learned to just stick with smaller companies and I'm much happier.
Some of the views you will find below are conflicting. No need to call me a hypocrite, I am familiar with my dissonance on this matter.
I'm a self-taught engineer and I work in the SV and SV-adjacent scenes. People who are self-taught genuinely have a hard time at the beginning and middle stages of their careers, to the extent that it can break you. If you try to explain this to any CE or CS graduate it's like they lift their magical empathy goggles and provide a full stream of excuses for the current paradigm that excludes both good and bad talent.
Where I'm about to be a hypocrite is now. My unpopular opinion is that gatekeeping is just fine, but it's all in the details. If you are gatekeeping based on knowledge that is commonly acquired in college, then you are gatekeeping for education and by proxy gatekeeping for status. If your interview process involves binary search but you don't do binary search by hand during your day to day, you are gatekeeping for education and by proxy status. That said, I'm a curious person and I know how to implement some recursive binary search because fiddling with sorted numbers can be fun when I'm inebriated and bored. It also shows some uncommon competency, so it is a great gatekeeping tool for curiosity and quality. The question I began asking myself is how I balance the equation. If a non-college/CS/CE educated person struggles with more fundamental math, then the trick is to introduce tasks which also disqualify them in higher numbers. For this, I found systems design to be an incredible tool, and one that non-college/CS/CE people tend to excel at. I'm sure there's more. At the end of the day, my team has a high bar for quality needs, but balancing the equation was important so that people like me would still get through the pipeline.
I and millions of others understand the author’s frustration with the technical interview process. Yeah, it’s annoying, but that’s the process. There are a lot of resources to help with interviews.
There’s a trove of rich lessons to be drawn from these experiences.
I've recently started a podcast where I talk to developers about their experiences in programming, career advice, their thoughts, hopes and visions for the future of technology.
I wonder if you'd be interested in telling your story in a more long-form interview format (that gets recorded and posted online).
You can get a sense of the format by looking through the work I've already done: https://www.youtube.com/channel/UC1SKRYr2Emfbas-8ZA9GYng
I think your story is pretty compelling and I'd love to help share it with a wider audience.
Though in all fairness, I'm sitting at 41 subscribers as of this moment, so reasonably speaking I should say "share with an audience which is expected to grow wider in the future"
If you're interested, feel free to reach out on any of the contact channels listed here: https://github.com/AlexChesser/lgtm-shipit or even just open an issue directly in the repo and we can coordinate!
How do you "fail up"? Asking for a friend :)
If some of the people you encounter are assholes, that's just life. But if all of them are — that's you.
If you're interviewing for a slightly senior role, then this self-help guide is a good start: https://blog.pragmaticengineer.com/preparing-for-the-systems...
The job interview process can be gamed and there's no reason to not game it now that it can be; if FAANGs is where you see yourself.
Google requested clarification: "Did you mean: binary tree traversal". Google also mentioned "inversion" of a binary tree.
Google seems more confused than I am.
In other professions, you can distinguish between, say mechanic/technician and mechanical engineer.
The author of this piece seems like a very experienced good "software mechanic". He can work independently and build stuff, but he is not a "software engineer". "always used ORM", not skilled in SQL is an indicator of narrow knowledge based on just completing tasks and learning by doing. That's fine but it also sets some limits.
He could find a well-paying job and interesting work if he would not have to apply for every vaguely defined SW job there is.
A lot of the annoyances with SF companies just go away (of course, there are new problems too). Nobody will ask you to implement a red-black tree from memory, you can consistently work under 40 hours a week, and interviews are more focused on behavioral questions and project experience. If you're ok with a salary in the low 6 figures, it's really not bad.
Leaving the country isn't "drastic": 96% of humans live outside of America.
Do 96% of English speakers live outside of America tho?
> we left there for a reason.
Yups. So did immigrants who came from outside the US now living in the big coastals.
While your absolute salary is less, your purchasing power is far greater compared to SV, SF and LA. I know someone is going to pick some outliers like NYC, Seattle and so forth. There's still more places to live than that.
Though that's probably less of an issue if consulting.
Sure, you might end up moving in a year or two when the job plays out, but you can just move to another non-coastal town. Be flexible and follow the jobs, and you'll see more disparate types of environments (and learn more about how different people think) than you ever could. You can learn pretty much everything there is to learn from a given team in less than six months, so looking at it as a consulting or training gig (even if it's a full-time job) can give you a much stronger resume. (Bonus, you learn people skills from dealing with people from many different regions and backgrounds.)
There's "reverse tree" and then there's that...
I travel to SF from Austin every year. What about the comfortable weather and giant healthy outdoor playscape, actual history and continued diversity and interesting things despite people like him, I could go on and on, it’s beautiful.
He didn’t need to go on a vacation, he needed to look outside his damn window. Maybe it was joke and he misses these things as well. If not, what a dolt.
And then you took 5 years off to pursue other things. Yes, you made a "computer game" (no one calls them that), but I don't think that's worth mentioning.
The better take away from these essays is that one should just study for these tech interviews before starting the rounds and learn how to reverse a binary tree.
He did a startup, it failed, fine, he got some job offers, he turned them down, tried being a starving artist, realized he didn’t really want to be one after all, hit the job market again, and found his market value wasn’t what he wanted it to be. Sounds normal. It’s like dating again after a long relationship.
I don’t think the conventional wisdom even says you’re guaranteed a job after running a failed startup. It just says you won’t be penalized for it. The last generation freaked out about their kids starting companies instead of getting jobs — “what if it fails?!” — and my generation replied, well, then you just look for jobs again. You’re not locked out of the market. But you’re not automatically going to get a job either.
I also don’t understand the hand wringing around interviews. So you get asked to invert a binary tree, and you realize, shit, I don’t know this. Might be the Asian in me talking, but what’s wrong with going home, practicing binary trees, and trying again?
Anyway, as far as a practical suggestion goes, having done a failed startup myself, it sounds like this person could try applying to other startups.
Almost the same experience, except without the obsessive marriage to poor products and I actually did learn how to pass those l33t code and behavioral interviews.
Basically I left the software career and did a tech startup that essentially failed but made me an okay amount of money (yay no dilutive capital), tried to leverage my newly awesome network to get a job and also went to through the recruiter path. Once I started getting good at the interviews and solving them above the average time, I still wasn't getting hired. Like this guy, I did this with about 20 different companies, although when I look at forums people are doing this with way more companies and way more time studying and practicing. So that's kind of a pathetic waste of resources happening industry wide.
All the big tech companies interview me for an L5 or equivalent. All the non-big tech companies just didn't want to pay me more than $180,000. Which eventually turned into a big deal because some disgruntled ex-hiring managers would retroactively contact me and tell me they got overruled and that my skillset and experience should have landed me roles at 180-220k. Improbable and a completely separate discussion, (am I getting overriden by a particular VC board member? nah it doesn't go that deep), any way I honestly just have better things to do. I had begun to be willing to take a much lower more relatable salary or compensation package, but then I found another lucrative project to do (with no dilutive capital yay) and that's been great. Crypto market picked up again too, great way to make money. It is still strange that the private sector doesn't accurately value this skillset yet (employed "blockchain jobs" pay low with startups paying the highest and midsize companies that are dabbling in blockchain are treating it like an intern play thing. all while contract and solo work pays or earns several multiples above market.)
Yes, another similarity is our observation about San Francisco and the Bay Area being just a working class town with high salaries. People there think they are special because the salaries are high. But it's really just like factories, like the article mentioned. The idea that they're special allows for all kinds of cultish abuse.
Use this thread as a collection of anecdotes to get a view of the reality, as soon as I was willing to interview for a role that would pay between $110,000-$135,000 the entire experience was completely different and better. Despite thinking "ah I'm an unemployable founder" or "ah maybe I'm older and I hit the wall I read about" or "ah my google results must not be good" or something, the experience at the lower salary (but high to that company in a different city) matched my positive interview and onboarding experiences earlier in my career. I did not accept as I was on to other things. So really all I have left for comparison purposes is the compensation: industry wide, people just don't want to pay me above a certain amount. They look at me and don't say yes. So there is a glass ceiling for me in that field, not the first person to draw that conclusion. Travel and doing my own thing is more fulfilling - I have a lot of lucrative software projects to continue rolling out - although the earnings are mostly similar to FAANG L5's with vesting stock price appreciation, its not as risk free as just showing up to a FAANG job as I meet many of them in my travels (over the last 6 months any way) and get a feel for their obligations or lack thereof, hope the industry gets better!
I have made it a personal goal to have a career in the tech industry that doesn't require taking technical exam interviews. It's something I understand I need to work on - to earn, really, it's not something that just happens. My approach is to do this by consulting, speaking, teaching workshops, doing projects, and eventually building a network, mainly through contacts with non-technical people who value my assistance. It actually has been working.
This approach has, however, required taking a hard pass on what have turned out to be very good career opportunities. But since I very rarely pass a technical exam interview, I'm not really sure what I've lost.
Another factor - I was a math major and did a grad degree in operations research, so while I've written lots and lots of code and wouldn't really call myself "self-taught", I'm not really a great match for SE roles. Yes, I did code for graphs and trees, factoring primes, solving diff eq's and optimization problems, and so forth, but this was within the context of math classes, not CS. So I never took any formal CS beyond the intro in college. Over time, I realized that's not a coincidence, I actually was't really interested in code per so, I was interested in what questions I can answer with code.
One thing I mention here on HN - I can absolutely create and search a binary tree, DFS and BFS. I've been able to implement merge sort and recursively print all permutations of a string or set. I believe the claim that a tech interviews are used to filter out those who "just can't code" is a myth. The questions I get in later rounds of tech interviews are far more elaborate than this (for example: find all matching subtrees in a binary tree at the whiteboard, in 45 minutes). Here's the thing - I actually have used trees extensively in my work (I needed to find the shortest path to passing a series of interrelated tests where various groupings were adequate). I looked it up, learned it, coded in it... but eventually it left short term memory. Had I taken a tech interview test on exactly the same topic aa year later, I would surely have failed. I just don't walk around with this all loaded up in my head, and I feel that I've re-loaded it for an interview for the last time (I would happily reload it for a real project).
And I'll sign off with my usual: companies are free to filter out candidates based on very intricate technical tests, but I have zero sympathy when they complain about a shortage of good candidates. And this becomes sinister when they claim that this shortage means that they should be empowered to bestow limited residency rights on someone where they control how the person interviews, what the person works on, where the person lives and works, and when the person shows up at the office.
Truth is, of course, that the work has changed in fundamental ways. Established companies moved from the cowboy approach (buncha people, money, a trade show in a year, here's a product definition, GO!!) to what smells a lot more like an assembly line gig. Finally hitting a modern shop is what made me finally retire. Modern practices, while perhaps efficient in some way, are no fun.
Give me a 20 year old body, and I'd go into the trades or some sort of purposeful anachronism (blacksmithing?) at this point.
I don't buy apple products anymore because of the walled garden bullshit that permeates apple's vision of the world.
Linux is a fine dev environment. That interviewer was an idiot.