Getting a job at Apple without going to college or doing LeetCode

2023-08-177:33300387aheze.substack.com

When people talk about Big Tech—Google, Amazon, Apple, Meta, Microsoft—they usually also talk about LeetCode. They talk about getting lucky or unlucky on the Q3 and Q4 on CodeSignal. It feels like…

When people talk about Big Tech—Google, Amazon, Apple, Meta, Microsoft—they usually also talk about LeetCode. They talk about getting lucky or unlucky on the Q3 and Q4 on CodeSignal. It feels like getting into Big Tech pretty much just means getting good at competitive programming—if you pass the test, you get the job.

LeetCode is definitely good for improving at programming in the long run. I haven’t been to Google, so I’m not sure, but you might actually need LeetCode to get a job there. But for Apple (and many other places), you definitely don’t need it, and I’d recommend that you don’t spend too much time grinding it.

I interned at Apple over the summer. Apple is unique in the hiring process that interviews are completely team-dependent. Some teams might ask you to do LeetCode, but in my case, I didn’t even have a technical interview.

Recently I’ve been asked a lot on how I got the job, so I’m going to summarize the process here instead of responding to every DM. I’ll go over how I learned Swift, the main programming language that I use. I’ll talk about the recruitment process, the interview experience, and anything else that I can remember. Here goes:

I started coding back in 2019. I wanted to make apps, so I bought Angela Yu’s Udemy course on iOS development. I checked out some books from the library — Sams Teach Yourself iOS 9 was really helpful, even though it was outdated and for iOS 9. I also bought Matt Neuburg’s iOS 11 Programming Fundamentals with Swift as a reference, but it was extremely technical and so I set it aside.

I followed Angela’s course for a couple months until I got halfway, then got straight to work building my own app. I called it Find.

App preview
Find, an app to find text in real life. This is the current version of the app — it used to look a lot worse. You can see the source code on GitHub.

Lots of people talk about getting stuck in “tutorial hell” — watching endless courses and tutorials while being unable to actually apply what they learned. I was able to avoid this by jumping right into the app dev process — I’d code until I didn’t know what do and then search up a solution. I wasn’t worried about efficiency or the “best way” to do something—you naturally learn this stuff after doing it for a while. Angela’s course was useful for getting started, but to get a good grasp at what you’re doing, you should be building projects.

Another thing that helped was Stack Overflow. It’s been kind of dead ever since ChatGPT showed up (and also the community is not at all friendly for newbies), but I’d still recommend making an account. You’ll be able to ask questions, but more importantly, you can answer other people’s questions. “Learn by teaching” as they say.

Anyway, it’s 2023 now and Angela’s course is outdated :( so I’d recommend starting with Paul Hudson’s 100 Days of SwiftUI or 100 Days of Swift. But again, the tutorials are just for starting out — don’t waste your time in tutorial hell and get right into building.

I didn’t have much going for me besides my side projects. I worked at Hyper, a startup working on VTubers for iOS. I got the job via Twitter — Aaron (the founder) saw me posting my side projects and noticed that I liked anime in my bio.

Besides tech jobs I worked at Rubio’s Coastal Grill and was a cashier at Marshalls.

Remember my Find app? Someone on the Photos team at Apple saw it and DM’d me on Twitter.

I had been posting about Find on Twitter for a while. Here’s the promo video that I posted for the v3 update. Here’s an animation I made for the onboarding screen and a swift package that I published.

I think it’s worth being active on Twitter — even after Musk’s takeover, there’s a lot of tech bros and industry people there. People will see your stuff and reach out to you. You’ll get opportunities that you otherwise would have missed out on — for example, normally you need to be in college to apply to Apple, but I was able to get around that.

In November 2022 I went to Apple Park to talk with my would-be manager. We had lunch and walked around the campus.

We talked about what a role at Apple would look like, and decided an internship would be good (since I still wanted to go to college). I remember that my manager specifically pointed out that he didn’t care about where I went to school or my GPA — he said something like “it only matters what you can do.” That day I also met one of my future coworkers, who gave me some tips on improving Find’s scrolling performance.

In February 2023 I went back to campus to meet the rest of the team. I talked with another manager about old age, college, and kids. It was really chill, but this was probably the behavioral assessment — they wanted to make sure I wasn’t some complete weirdo.

There was no LeetCode or technical interview. I signed the offer letter in March.

Obviously, this wasn’t your normal entry-level big tech interview process. I asked some other interns about their experiences — most people had a coding problem (one of my friends got two-sum, the first question on LeetCode) and the personality interview was more important. But I’m sure that at a higher position, for full-timers, there’s plenty of people who get recruited and get fast-tracked in the process. There’s nothing stopping you from taking shortcuts or a different pathway when applying for jobs. Do something different, like DM’ing the lead for the team you want to join. Make them want to hire you, and the interview turns into a free tour of HQ, lunch included.

Working at Apple was more work than I expected. I thought I’d be going in, having lunch, then leaving. I saw vlogs from people at Meta showing off the rock climbing wall and bowling alley that they had right in the office. My friend from Google was talking about how she had a couple meetings per day and the rest was just free time.

Well, not at Apple. I was there from 8 to 8, to catch the shuttle. Before my intern presentation I was working up until 12 (but that’s on me and my bad time management). You had to pay for breakfast/lunch/dinner and even the gym ($18/month). The prices were fair, but it’s not like the free food and stuff you get from the rest of big tech.

It was really fun. I was doing what I’d been doing for several years, but this time I was getting paid. I met some really cool interns and people from the design team who were absolutely cracked.

We had free corporate housing (got to be 18+ for this, so my friend actually had to live with his cousin) in this brand-new complex in Mountain View. The doors had smart locks on them that seemed cool, but were always broken. There was a hot tub on the roof complete with pool table and everything.

About the work, I was there from June 5th to August 11, so my time was relatively short and I had to cram to finish my stuff near the end. The corporate structure was definitely way different from what I was used to, but it’s well managed and gets stuff done. If you get the chance, Apple’s really worth checking out.

Apple Park at night

When I go on r/csCareerQuestions on reddit there’s so many posts about LeetCode, DP (dynamic programming, not double penetration), FAANG, etc… there’s people sharing tips on how to “crack the interview” and people saying “the best approach is repetition.”

I feel like people are so fixated on LeetCode and all these other coding questions that they’re forgetting that this is just one path to getting a job. There’s plenty of other ways that aren’t as hard and don’t require hours grinding over some dumb problem. Is it really worth grinding so much? Studying the most advanced Data Structures and Algorithms that you’ll easily learn just from building? And after getting the job, are you even going to use the stuff that you spent so much time practicing?

But it’s true lots of companies now just use LeetCode as their main differentiator in hiring. We can thank Google for this flawed hiring process—asking the same boring, time-consuming questions that test for proficiency in a roundabout way. Is it a coincidence that Apple was the only Big Tech company that didn’t do layoffs?

The LeetCode craze is a real problem in the field. Sometimes it feels like all the high-paying jobs require it, and as a result we see all these people burning themselves out over useless questions when they could be developing their skills organically.

Eventually I think Big Tech and the rest of the industry will move away from LeetCode and shift to project-based interviews. They might give you a take-home assignment and you can show them how applicable and relevant your skills are. But until then, I’d recommend working on cool side projects and doing stuff that matters. You’ll become irresistible :)

I’ll be going to college in September, so I can’t speak much on it yet. I just know that it’s not necessary and even not applicable for some roles, like iOS dev. So don’t stress if you didn’t learn a thing.

How do I fix my career? I'm a Software Engineer who learned northing during college. Reddit

So that’s how I got my job at Apple without going to college or doing a single LeetCode question. But I’m not saying that you should drop out or stop doing LeetCode completely — you need college for stuff like ML research and you need LeetCode for backend. It’s just that I see a lot of people just trying to get a job — any job — in tech, and they constrain themselves to a specific role or profile. That’s definitely not the play in this horrible job market.

Thanks for reading.

Leave a comment or ping me on Twitter @aheze0 anytime.


Read the original article

Comments

  • By SilverBirch 2023-08-179:177 reply

    I think the sort of more general point, rather than "build something great that someone at Apple notices", is that Graduate and Internship programmes are scale businesses. They get thousands of people applying and will hire atleast dozens, probably some FANG are hiring hundreds. So yes, we're all special snowflakes, but that's not what this process is for. It's about harsh rounds of easy to design problems to winnow the field.

    This totally changes when you're a specific candidate with skills Apple values. What this guy experienced wasn't an interview process. They had already decided to hire him before what he described as the interview process. They already know he's good, he experienced the talent acquisition process. The bit that happens when the company has already decided to hire you and is now doing everything it can to sell you on the job.

    If someone outside of recruiting contacts you about a job at a company, you will not experience a normal interview process, because they're already quite likely to want to hire you.

    • By asielen 2023-08-1717:532 reply

      This can also apply to networking and having a good narrative about your experience.

      Hiring managers will hire someone they already know or find themselves 9 times out of 10.

      Do something that gets noticed or get to know people and network. Sending out cold resumes will have the lowest success rate of those three options.

      • By kmano8 2023-08-1721:51

        This is my experience. Path in the door for every job I've had since I finished undergrad in the mid-aughts: - 1st job .. I answered a craigslist ad. - 2nd .. HN who's hiring post. - 3rd .. reached out to an engineer on the team on linkedin. - 4th .. referral from ex-coworker's partner. - 5th .. browsed the website of the VC firm that's funded a few of my previous companies, and I reached out to the CEO on linkedin.

      • By 4m1rk 2023-08-1922:50

        With the current significant amount of noise on the supply side, there's no alternative for them. Even the finest resumes can't replace the confidence you receive from an existing experience. This experience could come from collaborating with someone previously or observing a well-executed job done by them.

    • By CoastalCoder 2023-08-1715:483 reply

      There a wonderful Corecursive podcast [0] that touches on unexpected ways to work with Apple.

      [0] https://corecursive.com/shipping-graphing-calculator/

      • By gumby 2023-08-1719:26

        You can just read his story (which has been on HN several times): http://www.pacifict.com/Story/

      • By azinman2 2023-08-1718:50

        That was a _very_ different time.

      • By ajkjk 2023-08-1717:051 reply

        Got a summary for those of us who can't listen right now?

        • By CoastalCoder 2023-08-1717:161 reply

          Guy long-term sneaks into Apple buildings to get his passion project shipped with Apple's first PowerPC Macs.

          But my summary really doesn't do the interview justice. Highly worth listening to.

          • By KerrAvon 2023-08-1717:241 reply

            Note that the Graphing Calculator story is not something that could work after approximately the turn of the century. Security tightened up considerably sometime around then.

            • By Retric 2023-08-1718:261 reply

              Possibly, but a great deal of security only works because people never really tests it.

              There’s a few cases of people walking into ‘secure’ data centers plugging in their laptops only to realize they’re at the wrong company. People while swipe badges, act befuddled because it didn’t work, and then get let into the building. Or get out of an elevator with a bunch of people and just walk in as part of a crowd which holds the doors for each other.

              • By ryandrake 2023-08-1720:211 reply

                The "badging" culture at Apple is pretty extreme. It is routine and totally expected for a low-level worker bee to watch and call out a VP behind him who fails to badge through any external or internally locked door. One of the highlights of my time there was once having to remind Craig Federighi that he forgot to badge into a secured area.

                • By r00fus 2023-08-1721:161 reply

                  Also related to the "secret projects" culture there. Being high on the hierarchy doesn't matter to secret project roster. Security is that key to how Apple operates.

                  • By antijava 2023-08-185:01

                    Reminds me of a privacy training I had to do at Apple. They made a point in the invite to be on time because they had a lot to cover and lateness would not be tolerated. A VP rolled in 2 minutes late and tried the “do you know who I am” thing. The instructor basically said “I don’t care. You are late. Go away and reschedule for another time”. I loved that he could just shut down a VP like that.

    • By yieldcrv 2023-08-179:263 reply

      This is a weird take because the whole point of the last decade of leetcode was that people with special skills or that built something great can't even get hired. which was dumb. but reinforced the supposed uniformity of that process.

      I'm glad people aren’t just continuing the practice simply because they experienced the practice.

      • By curiousllama 2023-08-1716:001 reply

        The comment you're replying to is saying there's 2 processes, and it matters which one you're in.

        System A optimizes for min(p(hire|bad_candidate)). System B optimizes for max(p(hire|good_candidate)).

        System A has resume screens, long lead times, and Leetcode out the wazoo. System B has a few convos, short lead times, and review of actual previous work product.

        Horror stories come from great candidates in system A. This article is describing how to get into system B.

        • By jkaptur 2023-08-1716:443 reply

          Well, it describes what it's like to be in system B. All it says about how to get in is to build something (good? great? flashy?) and hope someone notices.

          This clearly does work sometimes, but it's not necessarily the best advice for everyone.

          • By zem 2023-08-1718:13

            there's an old joke about a company owner who would routinely throw half of every stack of resumes he received straight into the bin, because "who wants unlucky people working here?". i think a large part of why it's funny is because it really does take a considerable amount of luck to get hired at all, and especially through the system B process.

          • By ska 2023-08-1717:541 reply

            Build good things and develop a good network of people who know what you can do.

            A lot of hires, even in companies like this, happen more from conversations that resumes and job postings.

            As a hiring lead, there are a small handful of people I know well that I would try to create a job for immediately if they emailed me they wanted to join. As an employee, many job's I've had started something like that.

            • By jkaptur 2023-08-1718:00

              Yep. Also learn like 5 data structures and 7 algorithms in case the relevant manager can't just unilaterally hire you.

          • By curiousllama 2023-08-1717:02

            Yea fair point, totally agree. Big selection bias.

            Still, I think a lot of folks could benefit from thinking through "how do I get into system B?" - because those skills are tremendously helpful in System A, too.

      • By didibus 2023-08-1718:442 reply

        To be honest, building something on your own time is very different, in that, it's much easier.

        You start from scratch, you can pick something you're interested in building and maybe also feel you can succeed at. You make up your own requirements, as you see please, so things aren't ambiguous or changing in requirements constantly.

        There's no prior legacy constraints, there's no time constraints, it doesn't require finding ways to deliver faster by leveraging other developers.

        You get to spend as much time as you need, go watch tutorials, take a hiatus, come back to it when refreshed, fail multiple times and try again, etc.

        You can choose the programming language, framework, library ecosystem, that you're more familiar with and comfortable with.

        And so on.

        So having someone that can show some cool personal projects I've found isn't always a great way to know if they'll be good in a work environment and on a team.

        • By woobilicious 2023-08-196:22

          But you can't do any of this and expect to get recognized.

          No ones gonna hire you because you spent a decade and have a half finished game engine written Haskell.

          All of that freedom is fake and some even in contradiction with each other.

          You cannot take your time, or you pick a larger scope project, you will eventually run out of savings, or get questions from family members about why your job search is taking so long.

          If you filter out everything but smaller scope projects then you have a far smaller subset of projects that aren't as unique because everyone else has done them. If you just graduated from University, you lack experience with project management and as the saying goes, write what you know, and so that'll limit yourself to video games or web and that one niche subject you took at Uni.

          This advice feels like what you would get from a rock-star who was young and stupid and naive and very lucky telling a kid that if he just makes music and sticks it out he'll get scouted by a record label, When in reality he just was lucky enough to market pop-derivative music at gigs, while not realizing the kid likes to make music from sampled traffic noise and his favorite album is Music for Airports.

          This is a high risk endeavour and you either need to make conscious decisions that mitigate risk heavily and are compatible with your personality, and the end goal of being financially secure.

        • By nitely 2023-08-1721:091 reply

          How can you test all of that? through leetcode kinda questions you surely cannot. Maybe behavioral questions are close, but you would do those in both types of hiring processes, no?

          • By didibus 2023-08-1722:27

            Leetcode questions have their own set of issues. Just wanted to say, not sure a portfolio of personal projects is all that better either.

            A candidate that has a good portfolio and can pass an algorithm and design interview, and described prior work experience on projects that seemed involved is your best bet of course.

      • By sdfghswe 2023-08-179:513 reply

        > This is a weird take because the whole point of the last decade of leetcode was that people with special skills or that built something great can't even get hired.

        No, it looks like you're missing the point. Leetcode is not for people with special skills. It's for people with NO SKILLS other than "can code". Well if the only thing you can do is write code, you better be really good at writing code.

        • By Eddygandr 2023-08-1711:255 reply

          Didn't the guy who made Homebrew fail his interview at Google because he couldn't invert a binary tree? That's a guy who has built a popular product in the wild and can clearly code but failed because of the leetcode barrier at all IC levels.

          • By devoutsalsa 2023-08-1712:281 reply

            If you can’t invert a binary tree, how can I trust you to change my website’s favicon?!

            • By seanmcdirmid 2023-08-1715:101 reply

              You would be surprised how hard it would be to invert a binary tree, or really just what the question is asking for, if you didn't at least study up on the concept in the last decade. It is conventional enough to sound mundane, but how often are we inverting binary trees in practice?

              • By monocasa 2023-08-1715:481 reply

                It came out that by inverting a binary tree just meant swapping the left and right children of all nodes of the tree. It's pretty much 'can you iterate through a tree?' which comes up a surprising amount.

                • By seanmcdirmid 2023-08-1715:592 reply

                  Sure, but try coming up with that without even remembering what invert meant (it isn't a word that is commonly used in practice outside of CS education and l00tcode). Most of the problem in l00tcode question is just figuring out what is being asked for, not in doing the ask. That's why studying and understanding lots of l00tcode problems as prep is very effective (even if you haven't seen the problem, the problem is probably adjacent and you can understand it more quickly during the interview).

                  • By slt2021 2023-08-1717:02

                    you can always ask interviewer - define invert what does it mean - and interviewer in 100% cases will explain and even provide test cases.

                    in fact any candidate that doesnt ask clarifying questions and goes deep into coding right away - has a chance of going into wrong direction and is flagged as red flag.

                    As an interviewer I always lookout for candidates that dont ask questions, dont start with test cases, assume in their mind what is their understanding of ideal solution - and start coding. These are very inexperienced people who do that

                  • By monocasa 2023-08-1716:262 reply

                    'Invert' is a pretty common word.

                    • By ant6n 2023-08-1718:341 reply

                      Yes but is it Referring to the additive or multiplicative inverse?

                      Or maybe it’s making the tree upside down, so all leaves become roots, and the root becomes a leaf. But when we do that, do we just invert all the edges or transform the whole tree?

                      Maybe it’s referring to changing a red-black tree into a green-white tree? Or turning a splay tree into a merge tree?

                      • By monocasa 2023-08-1719:09

                        It can mean a lot of things, so you ask questions.

                        Howell (the homebrew 'google didn't hire me because of inverting a binary tree' guy) confirmed that they meant swapping right and left children of all nodes.

                    • By seanmcdirmid 2023-08-1716:592 reply

                      Yes, but the common slang it is used for isn't the meaning we are using for l00tcode questions.

                      • By monocasa 2023-08-1717:04

                        There isn't one meaning in leetcode questions; it could mean a bunch of things. That's why you ask questions in an interview.

                      • By hotnfresh 2023-08-1719:26

                        The common meaning isn’t slang. The (multiple!) math/CS senses of the word are jargon. Which is fine—nothing wrong with jargon—but their existence doesn’t make the ordinary sense slang.

          • By TrevorAustin 2023-08-1716:023 reply

            To be fair, Homebrew is great product design, but actually pretty janky software engineering. Anyone who's had it wreck their PATH a couple of times isn't going to be an automatic yes vote on a technical screen.

            • By hotnfresh 2023-08-1716:23

              As if average FAANG quality in customer-facing software is better.

              If that’s the hang-up on hiring him, they need to get the log out of their own eyes first, because shifting to the quality level of Homebrew would be a big improvement for a whole lot of their software.

            • By thereisnojesus 2023-08-1716:31

              Yes, we are aware companies hire privileged losers instead of skilled employees

            • By dehrmann 2023-08-1716:38

              Long ago, I switched to MacPorts because its path and directory story is better, and I didn't find myself having to run chown to fix things.

          • By ahoka 2023-08-1719:07

            But inverting a binary tree is trivial. It’s not like finding the shortest path in a graph, or something similar that requires recalling an algorithm on the spot. Go and look at the actual problem if you don’t believe me.

          • By nonameiguess 2023-08-1719:28

            It's amusing the answers so far are mostly all "well this is an easy question and he should have gotten it." I actually agree with that, but even so, he got rejected by Google but did get a job at Apple, which is what this article is about, and that seems like a far more relevant fact to me.

          • By sdfghswe 2023-08-1711:271 reply

            You sound like you're trying to make a point. Make a point.

            • By 121789 2023-08-1714:481 reply

              I agree. Every hiring process will have false negatives. Pointing out every one doesn’t invalidate the effectiveness of the process

              • By thejazzman 2023-08-1715:072 reply

                Effective for whom? And at doing what?

                SV is full of mediocre engineers; so it fails at guaranteeing you got yourself a star. And I don't think anyone needs more anecdotes to think great candidates lose for arbitrary/subjective/misunderstanding/random reasons

                --

                I'm 15y into my career with a degree from CMU; I am treated like royalty everywhere I work ... and yet I still absolutely dread, hate and repeatedly have bad experiences interviewing for jobs.

                I've considered switching careers numerous times because of the emotional distress I go through just interviewing. And that's before we even talk about the insane amount of time every prospective employer demands of you!

                • By HeyLaughingBoy 2023-08-1717:421 reply

                  > insane amount of time every prospective employer demands of you

                  I have worked an average of 40-hour/week jobs for my entire 30-year career. What's this "demand" nonsense?

                • By MichaelZuo 2023-08-1715:34

                  Who's forcing you to stay in SV?

                  If it's making you so stressed out as you claim, then the obvious step, to me, would be a change of scenery.

        • By angarg12 2023-08-1715:431 reply

          I'm a Machine Learning Engineer with 5+ years of experience at FAANG. I have designed and built real time ML systems that support millions of QPS with < 10 ms latency. I also have a variety of other skills.

          And yet I can't escape leetcode interviews. In fact I recently sent a spree of CVs and got automated rejection emails for most of them.

          I don't buy your take.

          • By thereisnojesus 2023-08-1716:303 reply

            This is privilege if you think 3 CVs is a lot. I applied for 100 yesterday.

            • By FirmwareBurner 2023-08-1716:43

              I feel like 100/day is swinging the pendulum in the opposite direction. I apply like 3-5/week and I feel like that's a lot.

              Granted I don't live in a tech hub so my options are limited but 100/day feels like you're just spamming aimlessly and wasting your energy on quantity instead of quality.

            • By HeyLaughingBoy 2023-08-1717:39

              At 100 resumes/day it's hard to believe that you're optimizing them for the position or for that matter, doing anything other than shotgunning.

              You're far more likely to get 100 rejections doing this than if you research a handful of the positions and send targeted resumes to those.

            • By wonderwonder 2023-08-1716:561 reply

              OP said spree, not 3

        • By raydev 2023-08-1721:58

          I'm pretty sure I have some kind of skill having been in the industry for more than a decade, and jumped to higher paying jobs several times.

          Even at the staff/senior staff/principal levels you will still have to face the same LC gauntlet they give to new grads.

    • By flashgordon 2023-08-1719:291 reply

      Most of this is correct - But Faangs have also been having their managers (eg EMs and PMs) do reach outs to make it look authentic - only to forward you to a recruiter and a standard 6 hour interview round (I know because I am not special and have fallen and almost fallen for this trap dozens of times)

      • By ChipSkylark 2023-08-1720:10

        Always nice when the startup CEO emails you directly via CRM automation about your unique potential at the company and when you agree to chat he hands you off to the "senior technical recruiter". Always makes me feel extra special :)

    • By intelVISA 2023-08-179:382 reply

      can confirm, it's as simple PG says "just build something people want"

      it will open many doors :)

      • By nlunbeck 2023-08-1718:061 reply

        Something I've noticed over the past 5 or so years is a "hobby project" is increasingly becoming the standard. Your GitHub portfolio is almost as important as your resumé itself in many cases. It starts the conversation and grabs attention with potential employers, but doesn't act in lieu of a technical evaluation. Almost every competitive applicant at the intern level has some tool or webapp that they've built out extensively.

        • By sjf 2023-08-1719:402 reply

          Do you actually have any evidence for this? While having zero personal projects is probably a red flag, in my last job search I saw almost no clicks on links to projects. From personal experience, most hiring managers are so busy they barely even read the resume. They are definitely not going to comb through someone's github submissions.

          • By returningfory2 2023-08-1720:352 reply

            This has been my experience on the hiring side too. Nowadays almost all resumes have a link to GitHub, but 80%+ of the time the accounts have been dead for months/years. My favorite was a candidate whose GitHub was totally empty - they had just created an account, done nothing on it, and still included it in their resume!!

            • By teunispeters 2023-08-2421:57

              All my GH contributions have been to private/corporate work. sigh yet another barrier. All my contributions before that were before github existed. Since then, I don't know what to work on in public as it's not actually that obvious where to find interesting problems when web is not one's domain. But I guess that's the perils of being an older programmer.

            • By nathan_douglas 2023-08-182:59

              That’s… what I was afraid of.

              I’m hiring too, but few of my applicants include a GH link. I’ve never seen a GL link, much less Gitea, etc.

              And mind you, I’m looking. Hard. I’ll often Google the person to see if I can find a GH account for them. I hit rarely, and it’s weird.

              Today one of my applicants had a GH profile and a README, a couple dozen projects in various stages of abandonment, etc, and I was deliriously happy.

              I’m not very experienced in hiring (this is the first opening that I’ve written the JD for, reviewed the applications, wrote the tech interview questions, etc), but we’re clearly doing something wrong. We have a few great applicants (mostly from here and Reddit) and a whole lot of low-effort, low-value noise.

          • By nlunbeck 2023-08-180:10

            True -- many hrs are too busy to look at projects, but from talking to peers/colleagues I can't think of more than a few people in my space that don't have at least something pinned on their gh. Many of them do this for the sole reason of having something to "stand out" to potential employers. I imagine it varies based on the companies to which you're applying -- smaller companies tended to care a lot, larger ones hardly even asked about my resumé.

      • By zerr 2023-08-1715:527 reply

        Why would you want to become a wage slave if you've already built something that people want (thus can monetize it yourself)?

        • By tylerfontaine 2023-08-1716:041 reply

          HN moment.

          Software jobs, especially at the kinds of FAANG companies largely being discussed here, are quite a stretch for the term "wageslave."

          Entrepreneurship isn't for everyone, even those who've tried it before.

          • By zerr 2023-08-1716:17

            Golden handcuffs if you will :)

        • By kaashif 2023-08-1717:204 reply

          Using the word "wageslave" to describe 300k TC office workers is out of touch at best and downright offensive at worst.

          • By Clubber 2023-08-1718:402 reply

            >downright offensive at worst

            People are so easily offended these days.

            Having said that, if you work for a company and you get fired and blacklisted, you still don't eat. If you work for a wage, you HAVE to work for somebody or you starve. If you work for somebody, that somebody has a lot of sway over how your life looks. Better be good at kissin' ass.

            Also, if you don't think the US healthcare industry will take every penny of your life's earnings upon your eventual and inevitable deterioration, you're fooling yourself.

            FWIW, I'm a wage slave too.

            • By pb7 2023-08-1718:461 reply

              You’re a wage slave when you work for yourself too, probably even more so. You can’t even completely take a week or two off in most cases. Your work eats your entire life.

              • By Clubber 2023-08-1718:532 reply

                >You’re a wage slave when you work for yourself too, probably even more so.

                It certainly can be like that especially early on. Hopefully you would grow enough to hire good people to manage the business. If you work for somebody though, that will never happen.

                • By pb7 2023-08-1719:001 reply

                  >It certainly can be like that especially early on.

                  All the slavery with none of the wage.

                  >If you work for somebody though, that will never happen.

                  The alternative to starting a business that you'll hope will be self-sustaining and still earn you a respectable living is to work for the highest bidder, invest, and become financially independent. Odds of the latter are much higher for the average software engineer than the former.

                  • By yunwal 2023-08-1719:18

                    There’s also quite a few jobs where programmers can automate away a good portion of their work

                • By distant_hat 2023-08-1720:38

                  So the goal is to go from wageslave to wageslave owner?

            • By Eisenstein 2023-08-1721:011 reply

              > If you work for a wage, you HAVE to work for somebody or you starve.

              You really don't. There is no way you can starve in the USA unless you do it on purpose.

              • By jononor 2023-08-1721:421 reply

                5 million households in the USA constantly have poor food security. About double that had intermittently poor food security. I do not think they are doing it on purpose.

                • By Eisenstein 2023-08-1721:50

                  And if they went to any hospital starving they would get fed.

                  Please note the literal use of the word 'starve'.

          • By ericsoderstrom 2023-08-1717:561 reply

            I do think it's still true in my experience that someone with the the capabilities to build useful things on their own tend to not stay very long at these giant companies, unless for specific visa reasons

            • By johnnyanmac 2023-08-1720:19

              depends entirely on the person. The startup life isn't for everyone, especially people with families that value stability and life balance over the idea of millions.

          • By deckard1 2023-08-1717:575 reply

            ah, yes. The American Dream of living in a 50 year old shitbox fixer that costs $2M in the suburbs of Cupertino.

            If you can make that much remote out in Nebraska then sure, fine.

            There are people doing a lot worse. But when doing much better looks like that, what even is the point?

            • By gretch 2023-08-1720:411 reply

              > But when doing much better looks like that, what even is the point?

              Cupertino is an hour away Santa Cruz beaches. 3 hours away from skiing (or boating) at lake tahoe. 1 hour away from one of the best NBA teams (GSW). 30 minutes away from Stanford. 1 hour away from Berkeley. Some of the best average temperatures in the country.

              Maybe they live in a "shitbox fixer", maybe they don't.

              You might consider that people like and care about those other properties though.

              • By deckard1 2023-08-1820:011 reply

                > Cupertino is ...

                a lot of hour drives away from everything? London or Tokyo it is not.

                > Maybe they live in a "shitbox fixer", maybe they don't.

                I was being rather generous at $2M on a $300k salary. Let's just assume the spouse makes that much too. Where do you place the odds of getting a nice house at, in that area? Of a similar quality that would run around $200-400k in the rest of the country. It's the suburbs. You're going to be inside your home more than you would in a city.

                > You might consider that people like and care about those other properties though.

                The point is $300k in SV isn't living large. You save more for retirement or to move out. Great. But you still have to leave to realize that benefit. You're just planning for some tomorrow that usually never comes for most people.

                • By kaashif 2023-08-1823:38

                  > You're just planning for some tomorrow that usually never comes for most people.

                  That's odd, my impression is that a lot of people go to the Bay, save a lot, then leave.

                  Do we have any statistics on this?

            • By pb7 2023-08-1718:493 reply

              Living in Nebraska when you have the means to live in civilization is a punishment. Why would someone choose to live in a place where the nearest restaurant is a Denny’s 45 mins away?

              • By opan 2023-08-1720:182 reply

                Quiet and peaceful, cleaner air, you can play loud music and stomp around without upsetting neighbors, and for many people most of their time is spent on a computer anyway.

                • By pb7 2023-08-184:071 reply

                  The quality of my life is not defined by stomping around or playing loud music. It’s having access to and making use of amenities. What the hell good is money to me if I have no goods and services to spend it on?

                  Maybe most of your time is spent on a computer.

                  • By GlassOwAter 2023-08-1815:221 reply

                    The quality of my life is not defined by how close I am to fast food diners or other frivolous goods and services.

                    • By pb7 2023-08-1815:41

                      Neither is mine, which is why I live in a place that has amazing restaurants with cuisines from all around the world. There's nothing frivolous about food or any other good or service that enhances one's quality of life.

                • By pb7 2023-08-1820:29

                  Air quality is better in San Francisco than Omaha by the way. If you want peace and quiet, you have world class nature less than an hour’s drive away instead of the endless corn fields flat as a pancake for hours in any direction.

              • By slt2021 2023-08-1722:171 reply

                do you seriously think that tenderloin, Oakland, richmond, hunter's point, bay view is civilization?

                • By pb7 2023-08-184:041 reply

                  Do you really think your extreme examples are the average experience outside of Nebraska?

                  • By slt2021 2023-08-189:481 reply

                    Well these are more affordable places in sf, not everyone is techie millionaire, you know.

                    and Nebraska has nice places too, especially if you have a family.

                    Try to raise a family with 5 kids in sf, and compare to Omaha. I would pick Omaha 10 out of 10 times, if I was not a millionaire

                    • By pb7 2023-08-1813:531 reply

                      >Try to raise a family with 5 kids

                      What am I, a farmer? I would pick not doing that 10 out of 10 times regardless of how much money I had.

                      • By slt2021 2023-08-1817:161 reply

                        so we can agree that people can have their own preferences in lifestyle and critique of other people's lifestyle is not mature behavior

                        • By pb7 2023-08-1820:241 reply

                          Let’s see where this conversation started.

                          >ah, yes. The American Dream of living in a 50 year old shitbox fixer that costs $2M in the suburbs of Cupertino.

                          So you’re right, folks living outside of metropolitan areas need to work on their insecurities and learn to be nicer to people that prioritize other things in life.

                          • By slt2021 2023-08-1821:12

                            Insecurity?

                            More like well-justified feeling of intellectual superiority, of being able to afford 5000 sq ft home with few acres of land, and raise a family with 5 kids on a single income, and not having kids wade their way through poop and needles on the way to school, not having to smell urine and marijuana on the streets of neighborhood

              • By mcmcmc 2023-08-1816:02

                Lincoln and Omaha would like a word

            • By brandall10 2023-08-1812:00

              Seems everyday on Blind there's a few posts from mid 30s folks reporting ~$3M NW and wondering if it's enough to retire on.

            • By slt2021 2023-08-1718:531 reply

              people choose to live in bay area not because its housing situation, but despite of it.

              mainly because cutting edge R&D type technology has been developed in the area and alternatives to SV have not developed yet. its not even pay - I would say bay area pay is bad, because of cost of living & taxation.

              But opportunities for growth are unmatched in bay area

              • By ryandrake 2023-08-1720:252 reply

                The point is you can't adequately judge whether a job counts as "wageslave" just from the salary. A $300K job where houses cost $2M is like a $30K job where houses cost $200K.

                • By slt2021 2023-08-1721:101 reply

                  you are more than right, it is actually objectively worse.

                  because $300K will demand much much more than 30k job.

                  300k job leads to stress, anxiety, performance calibrations, mental breakdowns, overwork, competition, lack of job security etc.

                  30k job could be very relaxed, could be part-time gig where you work few hours in a week.

                  so work-life balance is really tilted worse for higher paying jobs

                  • By kaashif 2023-08-1722:23

                    I mean, not necessarily. A 300k job at a tech company may be less stressful than e.g. a 150k job at a non tech company with a toxic culture.

                    To be clear, it can be true, there are lots of stressful high paying jobs, my point is that it's not necessarily true.

                    I know low paid people with stressful jobs and highly paid people with less stress.

                • By kaashif 2023-08-1722:521 reply

                  This is incorrect. If my income and expenses both increase by 10x, my savings increase by 10x. After just a few years of saving, I have the option of moving somewhere cheaper and living like a king.

                  It's not like your savings and investments are adjusted for the cost of living when you move.

                  In the extreme case, you can earn as much as possible and accumulate enough to live on indefinitely in a cheap country. This is obviously better than just earning a low salary in the cheap country for the same amount of time.

                  • By slt2021 2023-08-1723:151 reply

                    if your income 10x and you are on the wage - then that means you are either will have to work 10x more hours - or work 10x more intensively/efficiently, which leads to its own burnout and issues.

                    main point being is that if your income doubles, your savings rate will double, but your work related stress will double, and arguably your health (mental and physical) will deteriorate at 2x faster rate

                    • By pb7 2023-08-1813:44

                      That’s not how any of this works.

            • By smugma 2023-08-1723:27

              Most new Apple hires are not in Cupertino. It’s “full”.

          • By geodel 2023-08-1718:462 reply

            Huh, its like calling couch potato is offensive to someone is offensive who watch TV and sit in couch all day because their TV is 77" OLED, couch is full grain leather and beer artisanal.

            If someone with 300K+ TC gets offended by this term, playing world's smallest violin for those snowflakes would be most appropriate.

            • By coeneedell 2023-08-1720:29

              It’s more about the people making 30k a year putting up fencing and barely scraping by watching those 300k a year SWEs complain about how they’re wage slaves.

            • By namdnay 2023-08-1720:01

              Offensive as in “offensive to real wage slaves”

        • By afavour 2023-08-1717:44

          Your hilarious perspective on highly paid FAANG jobs aside: because now that you’ve made it and demonstrated there is a target market it’s trivial for the billion dollar company to make their own version and eat your breakfast. If they’re offering you the chance to join them as they do so it’s very often in your interest to do it.

        • By TaylorAlexander 2023-08-1717:31

          Running your own business kinda sucks. I did it and failed and it was extremely painful. Now I’m building my dream product working for a philanthropist who pays my wages. SO MUCH easier than doing it myself.

        • By ska 2023-08-1717:58

          > you've already built something that people want (thus can monetize it yourself)

          The part in brackets isn't something to hand wave about. Depends a lot on how you want to spend your time, also.

        • By gretch 2023-08-1717:591 reply

          If you care about achieving a particular mission, you could view joining a large funded organization as an opportunity to achieve that mission with higher likelihood or speed.

          For example, if you had an idea about planting trees via drones and a big company said "come to our company and we can get this launched at scale as early as 2026". Then you think about how long it would take to do it on your own and you'd still have to convince investors and hire people and stuff.

          If at the end of the day, what you care about is planting more trees quickly, you should probably join that big company. (of course there are risks too, where they cancel the project or divert its direction).

          And also, not every startup found cares about achieving some grandiose mission. Some just want to get rich which is totally fine.

          • By zerr 2023-08-1720:17

            Decoupling an income from the time spend on work.

        • By bdcravens 2023-08-1717:12

          Building is the easy part.

    • By PartiallyTyped 2023-08-1717:11

      I can confirm that AWS has done this as well, I know of at least 1 person who has been hired in this manner, and it was because they were excellent OSS contributors.

    • By jackson1442 2023-08-1719:34

      As a data point on the scale of internships, Amazon hired approximately 15,000 interns last summer (not including winter interns). While I don't have a number for how many get full time offers, a large portion do since the internship serves as on-the-job training.

  • By KaiserPro 2023-08-179:1818 reply

    The problem is that "leetcode" is a definitely a thing that exists in "FAANG" interviews.

    The biggest stumbling block with leetcode is that you shouldn't be programming like that in real life.

    "make a linked list" no, just use a library like everyone else.

    "Implement addition in python but with string inputs", "no you can't use the built in x" All of that "clever" shit should be filtered out at PR/MR/diff review time.

    All of this "clever shit" is exceptionally bad programming. We don't live in the 80s anymore. we don't need to make our own sort algorithms. just. use. a. Library.

    • By gumby 2023-08-1710:364 reply

      I'm not going to defend "leetcode grinding" and its pathologies but TBF this is problematic:

      > "make a linked list" no, just use a library like everyone else.

      > "Implement addition in python but with string inputs", "no you can't use the built in x" All of that "clever" shit should be filtered out at PR/MR/diff review time.

      Sure, those statements (just use an existing library) are what you'll do in practice especially as a beginner. But there is value in asking these kinds of questions.

      One is "do you know what's going on under the hood?" On another post I just saw a comment in which someone advocated counting the number of occurrences of something in a list by filtering it and then getting the length of the result. This is almost certainly a terrible solution as it allocates memory (which has to be freed) in what can be done in a single quick pass. By asking you such a question the interviewer can learn if you have some idea of the tradeoffs and why something might be a good or bad idea.

      These are the kinds of decisions that can have order of magnitude impacts on runtime, which can have huge impact on the company's costs.

      Likewise doing arithmetic with strings as inputs would expose interesting but not super complicated questions about how arithmetic works, how you parse a numeric value out of its written representation (detest the word "conversion" for this), what are interesting bounds. If the job is really so high level that you don't have to think that there's an actual machine involved, then yes the questions aren't useful. But how many jobs are really so abstract?

      > We don't live in the 80s anymore. we don't need to make our own sort algorithms.

      No, but sometimes you have to make a choice based on the data to be operated on.

      • By SirMaster 2023-08-1716:53

        > One is "do you know what's going on under the hood?" On another post I just saw a comment in which someone advocated counting the number of occurrences of something in a list by filtering it and then getting the length of the result. This is almost certainly a terrible solution as it allocates memory (which has to be freed) in what can be done in a single quick pass. By asking you such a question the interviewer can learn if you have some idea of the tradeoffs and why something might be a good or bad idea.

        > These are the kinds of decisions that can have order of magnitude impacts on runtime, which can have huge impact on the company's costs.

        Then the questions should be more like: What data structure, library, method, steps, would you use to solve this problem and why. What are the tradeoffs of your choices, etc?

        All of this can be answered in fairly high level pseudocode too and still show that they understand the concepts etc.

      • By KaiserPro 2023-08-1711:592 reply

        > Sure, those statements (just use an existing library) are what you'll do in practice especially as a beginner

        The more code you write, the more you have to maintain. Sure, of course there are times where you need to re-implement something from scratch. But those times are rare (or should be). Making something from scratch without strong justification is a strong signal, just not a positive one.

        Now, as you point out, "when would you write x from scratch" is a great question to ask someone. I am vary wary of people that are willing to overspend innovation tokens. But thats a design/systems/culture question, not a coding question.

        the signal I want from a coding test is the following:

        o Can they demonstrate and understanding of the programming language?

        o Do they create readable code?

        o Do they ask questions?

        o Do they follow the style of the programme they are modifying?

        o Do they say "I don't know"?

        o Do they push back on weird or silly requirements?

        all of those things make working with someone much easier. None of those questions require "implement algorithm that only exist in Computer Science courses". They can all be answered by something like:

        "here is a program that fetches a json document, but it breaks often, please make it more reliable"

        That is far more realistic, and more likely to what they'll be doing.

        The dirty little secret about most coding jobs is that actually, the important thing is getting something functional and stable for the business, so it can make money. Then after that its responding to feature/bug requests. As a programmer, your job is to convert business logic into computer logic. 99% of the time, this doesn't mean making artisan libraries that improve some tiny metric by 20x.

        • By gumby 2023-08-1712:262 reply

          > o Do they ask questions?

          I find I get 90% of the insight from simple questions like "write a function to shuffle a deck of cards. Don't worry about simple typos like forgetting a semicolon."

          You learn a lot from how they set things up (make a suit class, and a vector of card classes? Or just use the integers 1-52?) and talking about that. Do they think about the problem (and, as you say, ask a couple of "requirement" questions) before diving in?

          One of the best hires I remember was someone who got this problem wrong (went to a lot of work to leave the deck unshuffled). We gently asked if it did what was required. Hi smacked himself on the forehead and said, "I'm a fucking idiot" (in front of us in his interview!) and quickly corrected the bug. Great guy.

          • By catiopatio 2023-08-1715:18

            I’m not sure that’s a great interview question; the right answer to google the appropriate algorithm (e.g. Fisher–Yates), make sure you understand implementation errors that will lead to bias, and implement it over any arbitrary sequence.

          • By devoutsalsa 2023-08-1712:461 reply

            If you ask me a question that boils down to “write a card shuffling algorithm”, I’m going to do less well because I’m being taxed by the thought of “Why is this person asking me to shuffle a deck of virtual cards?” During the interview, I’d probably just google “best algorithm for shuffling deck of cards in <language>”, and I’d tell you I was looking it up. If you tasked me with shuffling cards on the job, that’s what I’d do.

            • By gumby 2023-08-1713:003 reply

              You could just ask, and we'd answer "it's just a simple problem so both of us can see what it's like to work together." You'd be surprised how many people show up who don't actually know how to write a for loop.

              And if you didn't like the experience you wouldn't want to work for us so the interview would be a success too.

              • By HeyLaughingBoy 2023-08-1718:07

                > don't actually know how to write a for loop

                My god, yes. We had a two-part problem that we used for the "work skills" part of the interview. Part 1 boiled down to writing a two-level nested for loop that was simpler than fizzbuzz. Part 2 was using that loop to solve the rest of the problem, which was far more complex. I lost track of how many candidates spent 40 of the 50 minutes just writing that loop.

              • By deckard1 2023-08-1718:231 reply

                you don't actually believe that "work together" crap do you? You realize you're dangling a job over their head, right? There is a power imbalance. You'll never see "work together" in an interview because you're not colleagues on equal footing.

                • By gumby 2023-08-1720:02

                  Often candidates already have a job and are looking to see if they want a change. There's parity in such situations.

              • By neon_electro 2023-08-1718:121 reply

                Come up with better problems, please.

                • By gumby 2023-08-1720:03

                  What would you recommend?

        • By gumby 2023-08-1713:041 reply

          > The more code you write, the more you have to maintain. Sure, of course there are times where you need to re-implement something from scratch. But those times are rare (or should be). Making something from scratch without strong justification is a strong signal, just not a positive one.

          It really depends on what you're working on. A package to manage a dentist's office should be as off the shelf as possible. I don't care about I/O and try to do as little as possible, using whatever's off the shelf, but my HFT buddies are bumming the hell out of it, customizing the kernel, and whatnot. You may use elastic search to save you time and money, but the folks working on it have probably run over it so much there's nothing but custom code left.

          It's all context.

          • By josephg 2023-08-1717:022 reply

            Yep I absolutely agree with this.

            I’ve spent about the last year optimising text CRDTs so they’re actually usable in practice. A few years ago, 800mb of ram usage and 5 minutes processing was common to open a document. Now we’re talking 2mb of ram and 20ms. That is the difference between something not being viable and something being usable everywhere. And yes: my code involved a lot of custom data structures and algorithms. There were no libraries in cargo which did exactly what I needed.

            This thread is full of people bemoaning “leetcode problems” for being irrelevant in software jobs. But I use them all the time in my work. Software engineering is far more varied than any of our individual careers.

            • By neon_electro 2023-08-1718:152 reply

              I'm happy for you that you've found a job where the things Leetcode emphasizes has merit and importance and value in your day to day work.

              Everyone who's on the other side of the Leetcode debate from you wants the exact same thing - an interview process that is representative of the actual day-to-day work.

              As a Web developer, inverting a binary tree is not a thing an employer has ever asked me to do.

              • By josephg 2023-08-1718:451 reply

                Yes. You, me and the GP commenter seem to all be vigorously agreeing with one another. Job interviews should be based on what the role entails. If that includes data structures and algorithms, so be it. If not, leave them out!

                As the GP commenter said:

                > It really depends on what you're working on. ... It's all context.

                I brought it up because many (most) commenters in this thread seem to be claiming that this knowledge and skill is never useful. That its ridiculous to ask about this stuff in any job interviews, except as a ritualistic hazing ritual. This is also absurd.

                > As a Web developer, inverting a binary tree is not a thing an employer has ever asked me to do.

                I've never had an employer name any data structures explicitly. Its our job as the software experts to know which tools and technologies are relevant. But with that said, I can't remember ever using custom data structures in frontend website code either. If I were hiring a web developer, there are so many things I'd rather spend time talking about in an interview. (HTML & CSS knowledge, web frameworks, design skills, raw programming skill, etc.)

                • By Apocryphon 2023-08-1718:55

                  > many (most) commenters in this thread seem to be claiming that this knowledge and skill is never useful.

                  Those commenters are making generalizations because many (most) jobs in the industry do not find that knowledge and skill useful. Certainly specialized edge positions exist.

              • By nonameiguess 2023-08-1719:34

                I believe Google at least at that time was trying to hire engineers who could theoretically be put to work on any team, potentially being asked to create TensorFlow or MapReduce or contributing to the Linux kernel in service of Android, not people who have pigeonholed themselves into only being considered web developers.

                If pure CRUD companies only looking for JavaScript specialists are also using leetcode screening, they're missing the point.

            • By noleetcode 2023-08-1720:50

              Here's the difference: I bet you had time to think through the novel problems and didn't have someone hovering over your shoulder, demanding you come up with solutions within 20 - 30 minutes -or else-.

      • By alex_lav 2023-08-1718:57

        > Sure, those statements (just use an existing library) are what you'll do in practice especially as a beginner.

        I think it's really not about "beginner" vs. "expert", but moreso about the specificity of your role. If you're tasked with making general cloud services, it's probably fine. As your role gets closer to core systems/algorithms engineering, obviously that changes.

        > But there is value in asking these kinds of questions.

        There is value knowing, but the dynamic of an interview make things like this harder to ask/harder to answer.

        > One is "do you know what's going on under the hood?" On another post I just saw a comment in which someone advocated counting the number of occurrences of something in a list by filtering it and then getting the length of the result. This is almost certainly a terrible solution as it allocates memory (which has to be freed) in what can be done in a single quick pass.

        In the real world the validity of this solution depends on its input and use. Also in the real world, especially if you're not on one of the above-mentioned specialist teams, it's usually more important to be readable and maintainable instead of just purely performance oriented. So a single pass solution that's harder to grasp at a glance becomes less desirable than multiple passes as long as your performance requirements can afford it.

        > By asking you such a question the interviewer can learn if you have some idea of the tradeoffs and why something might be a good or bad idea.

        Totally, but the issue becomes "Can you figure out an algorithm on a whiteboard", instead of the (as you've already agreed) correct path of "Can you work through tradeoffs of one implementation vs. another". I think this question could pretty easily be presented in a way that isn't a quiz and also allows the programmer to demonstrate their problemsolving ability without seeming adversarial.

      • By EMM_386 2023-08-1719:361 reply

        > One is "do you know what's going on under the hood?"

        Why should I need to? Let's take Microsoft's .Net sort implemtation.

        It will intelligently determine which is the optimized sort given the conditions it's facing.

        Heapsort? Mergesort? Quicksort? Radix Sort.

        And the most-possibility optimized versions of each.

        This is what data scientists do. We don't need programmers standing at whiteboards writting BubbleShort and being told it's wrong. In the real world, you call .Sort() and get on with real work.

        Sure, you can hand-roll your own sort for hot-path cases but that's likely been taken into account anyway!

        • By nottorp 2023-08-1722:05

          Uh oh. You realize you just stated you actually know sorting algorithms and even know enough to be able to decide to roll your own if needed?

    • By PaulRobinson 2023-08-179:345 reply

      The problem is though how do you evaluate for real work without a portfolio of experience? Real work projects take weeks - perhaps months - to design, build, review and release. How do you test for that, really?

      I agree leetcode style interviews are artificial, but I think they persist because few people have identified and popularised effective alternatives. At least with leetcode you've shown people in front of you have been prepared to go learn arcane stuff and apply it. It's not good, but it's better than nothing.

      I was once asked to do the Gilded Rose kata[1] for one ~200 headcount Series D "startup", and it not only resembled real work - it's a refactoring problem - but it also showed their engineering culture. When I joined, I found smart people who weren't leetcode robots, but thoughtful engineers trying to solve tricky engineering problems. I "stole" Gilded Rose to use in other companies when interviewing until I joined my current employer (a FAANG, heavily prescribed process), with great success. I would like to see more katas that are as good at testing real world skills.

      Also, something I've only ever been interviewed for twice in 25+ years, which I think is underplayed: pair programming and handling code review feedback. Do this more, please. If you hire people not knowing how they're going to respond to a principal engineer telling them "we need you to think about 4 other things that weren't in the original scope given to you by the PM, can you please go deal with them", why are you surprised when toys are subsequently thrown out of metaphorical prams?

      [1] https://github.com/emilybache/GildedRose-Refactoring-Kata

      • By MichaelZuo 2023-08-1715:373 reply

        It seems fairly straightforward to just ask verbal questions?

        For example, if the position is mostly coding C then just get them to explain how some X interacts with some Y and how that interacts with some Z. Maybe with a copy of of K&R and get them to point to page so and so.

        Do that a few times, maybe use a whiteboard, and I think any experienced C developer will be able to tell who's faking it and who really understands within 2 or 3 iterations.

        Even if there are no experienced folks in the company, then it will take longer but, after an hour or two it'd be pretty difficult for anyone to fake a solid understanding of hundreds of pages of K&R.

        • By PaulRobinson 2023-08-1716:383 reply

          Not the point you’re making but in a C shop, if I interview and somebody pulls out K&R in 2023, they’re not getting hired.

          I get the wider point you’re making, and yes, a chat can help. Elsewhere in a reply to this I talk about how I personally like to do that, but the problem is, a significant number of people can talk about coding but can’t actually code.

          I once interviewed somebody who had passed 3 previous calls. Asked them to implement fizzbuzz. Couldn’t.

          That is a real problem. It’s not myth.

          As such, I’m not hiring somebody without seen them writing code the same way I wouldn’t hire a designer without seeing their actual personal portfolio.

          • By nomel 2023-08-1718:08

            > a significant number of people can talk about coding but can’t actually code.

            We removed pseudocode from our pre-screening due to this. Some people are absolutely great with English and pseudocode, but can't write a for loop, in their "preferred" language of their choosing. I'm sure they could be great at programming...eventually.

          • By MichaelZuo 2023-08-183:39

            Asking people face-to-face is a lot different then asking over a phone, it's easily 1/10th the info, or less, so of course the percentage of fakers is much higher.

          • By Apocryphon 2023-08-1718:56

            A Zed Shaw's Learn C the Hard Way fan, I see.

        • By noodle 2023-08-1717:00

          > It seems fairly straightforward to just ask verbal questions?

          This is basically my interviewing POV. If you've done the work, you can talk about the work intelligently if I ask some questions about it. If I ask you how you would think about solving problem XYZ, you can probably verbally think through how you would solve the problem, what a solution might take.

        • By david2ndaccount 2023-08-1716:59

          I write a lot of C and gave up on reading K&R as it is just too outdated.

      • By jebarker 2023-08-1712:332 reply

        This seems like a better way to evaluate real-world coding skills. Did you use it in a standard 45-60 min interview or as a take home problem? It seems like it'd take a decent amount of time to read the requirements and just introduce the task.

        • By PaulRobinson 2023-08-1716:311 reply

          Take home and “please time box it to maybe an hour maximum, you’re probably doing a load of interviews and tech tests at the moment, so you don’t need to finish: I just want to see your approach”.

          In-person time I used to like to ask a question I got from here: “Tell me about your favourite coding work or side project”. We’d then dig into choices, trade offs, obstacles and how they got around them.

          My favourite answer to this was “an OpenGL implementation for the X Window protocol which I wrote in Common Lisp”. Just getting through the first layer of “Why [x]?”, took 15 minutes and we spent an hour talking about all the facets. Hired him, was a superb colleague.

          • By kaashif 2023-08-1717:222 reply

            "Please timebox to an hour" is a bit dodgy though. If one candidate really does that, but the rest give it an extra 2 or 3 hours, that 1 hour candidate will probably be at a disadvantage.

            • By PaulRobinson 2023-08-1812:461 reply

              I often ask for them to version control and send me a zip of the git repo, so I can look at commit histories. Yes, they can fake that, sure, but I can normally tell a lot about a dev from that, and actually if I see 4-5 commits over an hour perhaps with some wrong turns, that pushes the candidate up in my estimation than somebody with 1-2 commits that don't tell a story, but does show a complete solution - which is most likely what would happen if you edited history a bit.

              • By kaashif 2023-08-1821:45

                When I'm actually writing code and hashing out a solution over the course of a single hour in my job, I'm not going to commit the wrong turns.

                What you're really asking for is a candidate to spend extra time inventing a convincing git history.

                I really think the only way this actually works is if the problem is on a page which you can only view after you start a timer or something.

                Or do it on site and watch them.

                This is all high pressure but if you really want to time box, there can't be a way around it.

            • By neon_electro 2023-08-1718:191 reply

              Thank you for mentioning this. I always find myself going further back and forth with employers who allow a take-home exercise but ask that it be time-boxed nonetheless; it's difficult to try to unpack how they're trying to communicate what kind of time pressure a role experiences, and that if I took longer than their expected time box, does that look bad just because I needed some more time to understand the problem?

              • By remich 2023-08-1722:361 reply

                I don't think most employers are out there looking at the timestamps on your commits to see if you really completed it within the timebox or not -- I certainly wouldn't.

                I don't think that candidates who spend less time or turn in incomplete take homes are necessarily at a disadvantage. Sooo much can be discerned from a take home even if it's not finished. I can evaluate a candidate's familiarity with modern syntax, how they organize functions, how readable their code is, whether or not they used ChatGPT/CoPilot or copy/pasted from an online tutorial (surprisingly easy to discern when you're evaluating many submissions), and so on.

                All of that tells me a lot about how well someone functions as an engineer, as well as what level they're operating at, and it doesn't require the completion of the take home problem.

                • By neon_electro 2023-08-1812:53

                  Thanks for sharing your take. I wish I came across interviewers like yourself in the last 18 months of job searching.

        • By remich 2023-08-1722:31

          In a current hiring loop my company is doing for a senior, we have a take home divided into a series of steps, with explicit instructions that say that completion of the entire exercise is not necessary to advance (and we mean it).

          The take home serves two purposes: (1) should the candidate progress to the in person interviews? (2) if the candidate stumbles in the in person coding, can I deduce from the take home that they do actually know what they're doing, and the stumbling was a side effect of interview anxiety?

          I can tell a lot even from an incomplete take home, about whether someone is likely to do well on the in person interviews, but I mostly find it extremely valuable for (2), as a tiebreaker.

          It hasn't happened yet in this cycle, but I can imagine a situation where someone turned in a fantastic take home and then brain farted during the in person coding, and, thanks to the take home, got hired.

      • By nine_zeros 2023-08-1714:431 reply

        Refactoring is the best kind of test! It has a slight bias for programming languages but the bias can be mitigated by having refactorable libraries in many languages.

        • By nomel 2023-08-1718:131 reply

          I'm fairly certain I would not perform well with this, unless the library was trivial.

          Refactoring is a task that's mostly about reading, understanding context, and a bit of rumination.

          I think having them design the library, or a fraction of it, from scratch, would give a more momentum.

          • By nine_zeros 2023-08-1719:101 reply

            > I think having them design the library, or a fraction of it, from scratch, would give a more momentum.

            I have done this as a take home test and I am ok with this as long as it doesn't take more than 5 hours.

            • By nomel 2023-08-180:33

              I would never allow this. I need to know that they generated the answer. In several video interviews, I've had people copy paste the first google hit, and one used co-programmer, listening and writing the answers in another window. The second was good at coding, but couldn't explain a single line of it. I think it's only safe to assume that anyone with a take home will cheat. But, it's also very hard to fire people, in our group.

      • By VoodooJuJu 2023-08-1716:30

        >I think they persist because few people have identified and popularised effective alternatives

        Astrology persists, but that's not a testament to its efficacy.

      • By dkdbejwi383 2023-08-179:59

        Thanks for sharing, I've not come across this kata before. Seems like it'll be a fun one.

    • By hotnfresh 2023-08-1716:353 reply

      What’s funny is that in most positions the hard work has nothing to do with any of that. It’s communication, empathy, navigating people-problems and organizational dysfunction, and working with/around awful systems that you can’t change, while limiting their blast-radius to protect the business (and your own sanity).

      You can always just google how to invert a binary tree or whatever and get a solid answer in no time. Which means it’s easy shit. Unless you’re one of a few devs doing PhD level work in the industry, that CS-heavy “mathy” stuff’s not the hardest thing you’re dealing with, and being good at that indicates almost nothing about your ability to deal with the hard problems you will encounter on the job.

      (or else you’re greenfielding at a startup and are doing everything on easy-mode anyway, aside from problems you create for yourself on purpose or by accident)

      • By remich 2023-08-1722:141 reply

        In fairness, the ratio of "just write code" to everything you listed above changes quite drastically as your seniority increases.

        To be sure, there will always be some senior/staff/principal engineers who sit in a room by themselves and code all day without talking to anyone, but, typically, the more senior you get in an organization the more your job consists of things other than writing code. When you're a junior or a mid, however, writing code makes up the vast majority of your day.

        • By hotnfresh 2023-08-1722:42

          I was thinking about “just writing code” with the communication and empathy parts, especially, in fact, though you’re right that they also apply (differently, though I’m not sure if it’s more) to more-senior work.

      • By varjag 2023-08-1721:081 reply

        Communication, empathy and navigating people is easy: there's a deluge of people capable of doing that. Writing code is hard. Not many people can code at all; even fewer are any good at it. This is why you can easily be unemployed after BA in Communications but have little problem getting a job after high school if you can code.

        • By remich 2023-08-1722:111 reply

          In my experience, it's relatively rare among software engineers. So, even if it's over-represented in the general population (which I'm skeptical of), having actual skill at that makes you leaps and bounds more effective than others, once you get up to senior+ level.

          • By varjag 2023-08-187:43

            I agree good people skills along with technical skills is a huge bonus. But it's still a less common combination among overall candidate pool than good people skills and lacking technical skills.

      • By nh23423fefe 2023-08-1719:411 reply

        Sure, you can pretend developers don't read and write code. Just like people who complain about leetcode pretend the questions are hard and that performance is uncorrelated somehow.

        • By hotnfresh 2023-08-1719:44

          > Sure, you can pretend developers don't read and write code.

          Weird. Why would someone pretend that?

    • By onion2k 2023-08-1710:061 reply

      All of this "clever shit" is exceptionally bad programming.

      In a company like Google (or Google 15 years ago really) there are problems with many possible solutions, but some solutions are better than others. The aim of leetcode recruitment is that it filters for people who can not only solve hard computer science problems, but also recognize what problem they're solving and find good solutions rather than just solutions.

      "I can implement this with a library" is only a good solution if the library is solving the problem in the right way. If the library is solving the problem but solving it in an inefficient-but-working way that is not good programming. At the end of the spectrum where Google exists you need developers who know the difference.

      The problem with leetcode is that it doesn't actually filter for people who can understand problems in a general sense. It filters for people who know leetcode problems.

      • By josephg 2023-08-1717:11

        > If the library is solving the problem but solving it in an inefficient-but-working way that is not good programming.

        Yep. And even then, you need to know what you’re looking for. Years ago I wanted a library which implemented occlusion on vector shapes for plotter art. I had no idea what terms to search for because I don’t have a strong enough background in graphics. Turns out there are algorithms which help - but it was years before I found a good enough library.

        And if you know what to search for, there are so many terrible implementations out there. Look for priority queues on npm. Half the libraries implement custom binary trees or something, despite the fact that using a heap (an array) is way faster and simpler. If you don’t know why a heap is better, how could you possibly evaluate whether any given library is any good?

    • By circuit 2023-08-1718:551 reply

      You do know we hire people who have to _write_ these libraries, and they can't just defer to something else with no consideration to time or space constraints. None of the questions are designed to be brainteasers or 'gotchas' but to get you to start discussing the problem and show your depth of knowledge/expertise.

      If I ask you a question along the lines of "write me a function to tell if two number ranges intersect" and your solution is to grab a library instead of writing a simple predicate...then perhaps the role is not a good fit.

      "Use a library for everything" is how we ended up with left-pad on npm.

      • By KaiserPro 2023-08-1817:52

        > "Use a library for everything" is how we ended up with left-pad on npm.

        bollocks, that's because javascript doesn't have a standard lib.

        > You do know we hire people who have to _write_ these libraries

        I know, because I'm there. I'm working in VR/AR. We have a number of people who are world experts for doing what they are doing. Do I go off and re-make a SLAM library because I don't like the layout? no because I have to ship something useable in a normal time frame. I can't just drop 3 months replicating someone else's work because I think the layout is a bit shit, or I can't be bothered to read the docs (I mean obviously there are no docs, but thats a different problem)

        But, and I cannot stress this enough, having more than one person making similar or related libraries is a disaster. Nothing gets shipped and everything is devoted to "improving" the competing libraries.

    • By jeffbee 2023-08-1716:531 reply

      Adding 1 to an ASCII decimal strings is a great icebreaker and I always use it. It is not leetcode. It is a filter for people who have actually encountered computers before. Even though our industry is maturing there are still a huge number of candidates who present themselves without ever once having written a program. I find the question has a massive signal. Either the candidate aces it in 15 seconds, or they immediately ask a bunch of on-point clarifying questions, or they are stumped.

      • By marliechiller 2023-08-1717:113 reply

        I have written countless programs but would not be able to answer that without first turning to google. You might have screened out plenty of valid applicants with this

        • By jeffbee 2023-08-1717:17

          A person who isn't well-versed in how the computer represents data internally is not a "valid applicant" for the positions I interview to fill.

        • By pphysch 2023-08-1717:154 reply

          You don't know how to transform the string "12345" to "12346" in a mainstream PL?

          I don't think "valid applicant" and "doesn't really grok strings/types" are compatible, outside of intern/maybe junior positions. The filter works.

          • By kaashif 2023-08-1717:31

            If someone really can't do that, then either they don't know how to count (very unlikely), they didn't understand the question, or they are really bad at translating what they would do on paper into a program. All disqualifying.

            Another possibility is nerves. Early in my career I was very nervous in interviews and I have sympathy. I have fucked up the most basic search algorithms completely and spewed gibberish when asked to explain the complexity of my solution.

            I have sympathy for that, but the only way to get through interview nerves is exposure therapy. At least in my experience.

          • By ninkendo 2023-08-1718:112 reply

            Eh…

            You’re given `99999`. Increment it. A naive approach would turn this into `9999:`. Making this work is a bit complicated and involves memory reallocation if you’re in a C-like language and you need to increase the length of the string in order to increment it. You’ll probably want a system where the caller passes a buffer of sufficient size to use for rewriting the string, in case you overflow. Make sure to have a way for the caller to pass the buffer length. You don’t want to allocate because that’s not the way it should be done in C, callers should generally allocate. You could use atoi, increment, and itoa to go back again, but that’s probably “cheating” from the perspective of a leetcode advocate, they likely want you to do this without the stdlib conversion functions.

            There’s a bazillion reasons why this sucks as an interview question. There’s no way a correct answer is just something you’ll “get in 15 seconds”.

            • By Aurornis 2023-08-1718:532 reply

              Ironically, you just answered the "difficult" interview question in a few lines of casual commenting.

              If you're not allowed to use atoi and itoa, it's still not all that difficult to do in C. Incrementing ASCII characters and handling carries is really trivial.

              I'd be kind of worried if I was hiring a C developer who didn't know the basic things you described above. I'm not sure why you think those are esoteric concepts that we shouldn't expect developers to know.

              • By suresk 2023-08-1719:321 reply

                Your last 2 sentences highlight the crux of it, I think - in the first sentence, you say "C developer" and in the second just "developers".

                This actually does seem like a great icebreaker-type question for a C developer. I'm less convinced every developer should be able to go into that level of detail if they are doing Javascript or Python or whatever. Ideally they'd be able to at least reason through some of this and demonstrate some understanding of some of this, but I'm not sure it is a great icebreaker question for all developer roles.

                • By crooked-v 2023-08-1721:29

                  Javascript doesn't even have ASCII - every string is UTF-16.

              • By ninkendo 2023-08-183:28

                I didn’t answer the interview question. The interview question would be to actually implement it. Something that was stated should be trivially done in 15 seconds. It would take me longer than that to explain why it’s not a trivial problem.

            • By jeffbee 2023-08-1718:241 reply

              Whether this should be done in-place or not is a completely valid direction in which to take the discussion and would be a "pass" from me. Also a "pass" would be `return itoa(atoi(input)+1))` with relevant caveats.

              An O(1) in-place solution with a sane API exists in C++ and the form of it is also a handy indicator of whether candidate who proposes solving this in C++ is familiar with more recent standards or not.

              • By ninkendo 2023-08-1718:322 reply

                I don’t see how you can increment `9999` in O(1) if the string length is considered the size of the input. You have to rewrite the string with zeroes, which is O(n) of the size of the string.

                • By jeffbee 2023-08-1718:481 reply

                  For that case, which is the worst case, yes. And the amortized average complexity is O(1) because that case is unlikely.

                  Are you starting to see why this is a good icebreaker? It has all kinds of discussion potential.

                  • By ninkendo 2023-08-183:32

                    No, not when the goal is to actually implement it. You implied in your comment that if I wasn’t someone who could implement this in 15 seconds, I’m not a good candidate in your mind. It would take me longer to explain why it’s not trivial.

                • By ericbarrett 2023-08-1723:401 reply

                  You could return the 0s with a carry flag.

                  • By jeffbee 2023-08-180:341 reply

                    It's still O(N) even if you don't need to copy the input, because you nonetheless visited every character in the string.

                    • By ericbarrett 2023-08-189:34

                      Oh, I skimmed over the O(1) part.

                      That baffled me for a moment, then I realized you were talking about the general case of a uniform random input where a carry for the 1s digit has probability 0.1, a carry for the 10s digit 0.01, etc., and all 9s is the pathological worst case, right? That's what I get for coming into the discussion sideways.

          • By suresk 2023-08-1718:40

            I think a lot depends on the context, the job, and the languages involved.

            Of course there is a trivial solution in pretty much any language, for example something like str(Decimal(x) + 1) in python. That's dead-simple and anyone should be able to do at least that.

            The later addendum that they want someone to know how data is store by the computer seems to imply that they want an answer that doesn't use these conversions, which gets a lot trickier depending on the context. I think you'd still expect someone who does C/C++ work to get there pretty quickly, but it is more than 15 seconds - you have to think about some corner cases and how you handle the string having to be resized in some situations.

            But in some languages, it isn't obvious to me how you'd do it (especially since strings are immutable in many languages) and I think it is maybe a bit unfair to ask someone who does Java or Python or whatever to do it off the top of their head.

          • By marliechiller 2023-08-1717:211 reply

            The filter works perhaps for whatever niche you might be working in. I cant imagine asking this to one of my candidates and then assessing their entire professional experience off of something like this though.

            • By pphysch 2023-08-1717:292 reply

              What domain do you program in where handling strings/bytes is not a weekly if not daily task?

              • By marliechiller 2023-08-1717:361 reply

                The point is not whether an applicant can or cannot do it, the point is that the question is deliberately rephrasing to obscure a candidates understanding. If you ask your average candidate to do that in laymans terms or they were given 5 seconds to google this would be a trivial task and you would have a different outcome. All this selects for is the candidate to have a working definition of an ascii decimal string in their head, it represents no ability to problem solve whatsoever.

                • By pphysch 2023-08-1717:59

                  > All this selects for is the candidate to have a working definition of an ascii decimal string in their head, it represents no ability to problem solve whatsoever.

                  Problem solving isn't orthogonal to having genuine expertise. Loads of awful, brittle, hard-to-read, but working, code gets written every day by people who are good at finding a solution but haven't RTFM, so to speak.

              • By KaiserPro 2023-08-1818:02

                There is a difference between "handle this string to do a normal thing, but make it secure" and "do something stupid with this string, which goes against all good practice, oh and you can't use the obvious tools because reasons".

                for example, if you are using strings to do addition, why the fuck aren't you allows to to atoi? also, why are you using strings to hold numbers?

                everything to do with that question is something that you'd insta-reject in a diff/pr/mr.

                Surely converting from string to int, validating it, catching errors and generally making it nice, is a much better test?

                Its like going to an interview for a copywriter(someone who writes text) for safety sign company, and they ask you to make a riddle in English, but you can't use any words that are derived from Latin. Sure it shows an impressive command of both etymology and english, but its totally opposite to making clear, easy to understand text.

        • By hcks 2023-08-1721:30

          What programs have you written?

    • By a_humean 2023-08-179:271 reply

      The only justification is that its a filtering mechanism. You likely won't use any of this, but its a proxy to certain characteristics you might find desirable in a candidate - some baseline intelligence and motivation.

      That you have the capacity to sit down and rote memorise a bunch of different techniques and practice completing a these kinds of tests indicates the likeliness of success in absence of other hard evidence of likely future performance. In a way it is the same function as university entrance exams.

      That these companies continue to do this for experienced candidates and not just recent graduates without a track record in employment is more perplexing.

      • By shagie 2023-08-1718:33

        > That these companies continue to do this for experienced candidates and not just recent graduates without a track record in employment is more perplexing.

        This assumes that they don't get similar number of people applying to the experienced positions who are lacking skills.

        For example, I know some Java devs who could put down 5+ years of professional experience but are still very junior when it comes to problem solving skills. They are capable of following precise instructions and there's enough work of that nature to do - but an open ended "there's a bug that has a null pointer exception when running in test but not dev or production" is something that they're not capable of doing.

        If they were to apply to a position that said senior java developer based on their years of experience and there was no code test as part if it, they might be able to talk their way through parts of it and there is a risk that they could get hired.

        For a senior java developer position at Google, would it be surprising if they got 500 applicants with 5+ years of experience?

        How would you meaningfully filter that down to a set of candidates who are likely to be able to fill the role?

    • By foldr 2023-08-1711:401 reply

      I think a fair number of Leetcode 'medium' problems are reasonable as augmented versions of FizzBuzz. In most cases, someone who can code should at least be able to write a brute force solution to one of these problems and explain why their brute force solution is slow. Where I think Leetcode-style questions become problematic is when they're used as test of whether someone can invent and implement a clever algorithm under time pressure. Unless you're hiring someone to do specifically that, then I think this style of Leetcode interviewing is of limited value.

      Also, some Leetcode problems just have unnecessarily unfriendly descriptions. For example this one, which is quite simple to implement, but which has an unnecessarily obscure problem description: https://leetcode.com/problems/count-and-say/

      • By slt2021 2023-08-1718:47

        some companies/teams use leetcode hard level problems to specifically select for ACM ICPC level talent to solve their particular problems, writing very tight compute kernels in constrained environment and unbounded input

    • By fnands 2023-08-179:241 reply

      My understanding is that they use it to filter candidates a bit. FAANG positions get loads of applicants, so they have to find efficient ways of thinning the herd a bit. The correlation between people who are willing to grind leetcode and who turn out to be good engineers is high enough that it's worth it for them to keep as a tool to sort the massive pile of applicants they get.

      Of course, hiring someone purely on how good they are at leetcode would be... dumb.

      • By dkdbejwi383 2023-08-1710:024 reply

        > The correlation between people who are willing to grind leetcode and who turn out to be good engineers is high enough that it's worth it for them to keep as a tool to sort the massive pile of applicants they get.

        One "subtlety" this misses is that leetcode-style trivia tests only work for those who are willing _and able_ to grind leetcode etc.

        There are many who have the aptitude and experience but have e.g. children, or interests outside of programming which means they do not have the required free time to spend rehearsing for this kind of interview.

        • By josephg 2023-08-1717:17

          > One "subtlety" this misses is that leetcode-style trivia tests only work for those who are willing _and able_ to grind leetcode etc.

          This is simply not true. The smartest people I graduated my CS program with can pass leetcode style interviews without practicing. They live and breathe this stuff.

          Are these problems overemphasised? Absolutely. But they don’t expect you to grind. They exist so they can find my smart classmates to make sure they get offered a job.

        • By fnands 2023-08-1711:001 reply

          The cynical part of thinks that that might be a feature, not a bug.

          • By comprev 2023-08-1718:462 reply

            It is a feature.

            FAANG want dedicated engineers who don't have the distraction of family and/or sick relatives.

            They don't want people who need to finish _promptly_ each day to put their kids to bed.

            They want their pound of flesh in exchange for a high salary and ability to add "Worked at FAANG" on their CV.

            If you have the time and dedication to grind leetcode for months the you've passed their requirement.

            • By Aurornis 2023-08-1718:591 reply

              > FAANG want dedicated engineers who don't have the distraction of family and/or sick relatives.

              This is hilariously out of touch.

              Most of the FAANG people I know have kids.

              Nearly all of their managers have families.

              The one person I know who has two special needs kids specifically sought out a FAANG job for the stability, compensation, and work life balance it afforded.

              • By remich 2023-08-1722:42

                Yeah, this sounds more like a late-00s startup mentality than anything else. Maybe the FAANGs were this once upon a time, but nowadays they are firmly in "stable grownup job" territory.

            • By jen20 2023-08-191:56

              This certainly does not match my FAANG experience.

        • By Aurornis 2023-08-1718:58

          > One "subtlety" this misses is that leetcode-style trivia tests only work for those who are willing _and able_ to grind leetcode etc.

          As a parent of young children, I think this is greatly exaggerated.

          If you're a skilled developer with several years of experience then you shouldn't have "grind" leetcode for 10s of hours per week for months on end. It's trivial enough to do a few problems per week on a break or during some down time.

          I think too many people refuse to even start because the difficulty has been exaggerated to the extreme. When I was mentoring college grads some of them would grind leetcode for months and months and even delay their interviews, then walk away dumbfounded when their interviewers didn't ask them anything resembling a Leetcode Hard. Many of them got questions that were basically Leetcode Easy questions.

          They had all been convinced by the internet that they needed to grind Leetcode until they were miserable, but it's not really true unless maybe you're starting with almost zero knowledge of algorithms and data structures.

        • By slt2021 2023-08-1717:121 reply

          this is a feature, not a bug. Companies absolutely want people with minimum outside job responsiblities, so that they can work them during the day, and pagerduty them during the night when stuff breaks.

          or overwork with boat load of feature requests and bug fixes and Ops workload - this is the reason why faang's offices are so fancy, have free food, laundry, massage, and bunch of other stuff.

          These fancy offices are for engineers to pull all nighters, not for tiktokers to show off in social media.

          if you are 9-5 with 5 kids - you are not gonna make it in venture capital funded Silicon Valley world. 9-5 is for regular "enterprise" engineers at Initech or Dunder Mifflin Paper Company in Lubbock TX

          • By stcroixx 2023-08-1719:081 reply

            I did it for 10 years with 4 kids. Multiple startups. Very few work off hours and none did in my experience.

            • By HWR_14 2023-08-1722:23

              Did you found a startup with 4 kids, or were you an early hire, or just one of several worker bees?

              Serious question, not rhetorical, in case it doesn't come across.

    • By catiopatio 2023-08-1714:391 reply

      > "make a linked list" no, just use a library like everyone else.

      If you cannot sketch out a simple linked list on a whiteboard, you’re not an engineer and have no business being hired as one at a place like Apple, full stop.

      I was asked to sketch out a hash table on the whiteboard. It was trivial, because a trivial hash table is trivial.

      • By KaiserPro 2023-08-1715:063 reply

        > you’re not an engineer and have no business being hired as one at a place like Apple

        well, unless you have a engineering degree, you're not actually an engineer, but we'll gloss over that. (big hint CS isn't an engineering discipline, otherwise testing, requirements gathering and cost analysis would be a big part of the course. )

        I was once asked to implement a distributed fault tolerant hashtable on a whiteboard. I'd still never make one from scratch unless I really really needed to. (and I've worked on distributed datastores....)

        but that wasn't part of the coding test, that was part of the design test.

        Which is my point, re-implementing things for the hell of it, is an antipattern. rote learning of toy implementations of some everyday function doesn't give you a good signal on if the candidate understands why you should use x over y.

        and again, my point is this: If I catch someone re-implementing something in a code review, they need to have a really good fucking reason to do it, otherwise it'll be rejected.

        • By OkayPhysicist 2023-08-1717:43

          They're not asking you to re-implement it on a whiteboard so they can open a PR and shove it in their new app. They're asking you to re-implement it to demonstrate that you understand it, and that given an understanding of something, that you have the skills to implement it.

          If you can't hammer out a technical interview using off-the-top of your knowledge, you're in the group they're trying to weed out.

        • By edgyquant 2023-08-1719:37

          >unless you have an engineering degree

          This is not true. There are dozens of types of engineers and that word doesn’t mean civil engineer. There are audio engineers who work on music and film ffs, get over yourself.

        • By whateverman23 2023-08-1717:361 reply

          > well, unless you have a engineering degree, you're not actually an engineer

          That's not a requirement in the US.

          • By edgyquant 2023-08-1719:38

            Nor is it a requirement for a majority of engineering types regardless of country. Civil engineers think they have a monopoly on the word; this should always be pushed back upon.

    • By hardware2win 2023-08-1710:401 reply

      You realize that somebody wrote that lib and maybe they want ppl with skills to build stuff instead of just reusing?

      People always make weird arguments about lc, but whats the point?

      Just put effort into it or not, no excuses needed

      • By PartiallyTyped 2023-08-1717:21

        My team is doing things for which libraries do not exist, things that are very much leetcode-esque, deeply into theoretical CS, lots of applied science. Some other teams here are doing data plumbing others do UI stuff.

        Our team can get to be very picky about people because ... well, we need to be.

    • By TillE 2023-08-1719:39

      If you can't explain in detail how a linked list works, that's an enormous red flag that you've probably never studied data structures. It's a FizzBuzz level question.

      I'm sure some companies have lousy interview practices, but algorithms and data structures are super important if you want to hire someone who's actually competent, who can think for themselves.

    • By dkdbejwi383 2023-08-179:204 reply

      It also doesn't resemble "real" work with regards to gathering requirements, clarifying ambiguity, weighing up trade-offs, making sure code is clear, etc. It tends to be a rote regurgitation exercise.

      • By photon_lines 2023-08-179:402 reply

        LeetCode has no correlation with great software development. Great development is more about paying attention to the end users, having an eye for usability and design and great communication & the ability to execute. The current LeetCode churning explains why Google hasn't produced anything worth using since Brin & Page checked out and why so much of software today is absolute garbage - but it is what it is I suppose. I suppose its better to screen for IQ and desparation than you know...people who love developing great software. Let them keep doing what they're doing while treating their own people like disposable garbage during hard times (like Google & Meta just did) and we'll see what they'll churn out over the next decade or so (I'm not expecting anything from either of these companies).

        • By josephg 2023-08-1717:491 reply

          > LeetCode has no correlation with great software development. Great development is more about paying attention to the end users

          You can’t make blanket statements about software like that. Our field is way too varied.

          For example, if you’re doing high frequency trading, then performance absolutely 100% matters. And knowing your data structures and algorithms backwards is part of that. On the other hand, if you’re building the website at a large company, the hard part of your job may be interfacing with the rest of the business. So networking and navigating corporate politics will be an incredibly important part of your job. And if you’re on a small team making a product for consumers, then your work will succeed or fail based on usability.

          We could brainstorm dozens of other skills which might be important. Which of these skills matter the most depends entirely on the company and the role.

          • By photon_lines 2023-08-180:20

            I don't disagree with you and I agree with your take on understanding data structures and algorithms ... it is important, but making 80 to 90 percent of your recruitment process based on this and on playing games with quizzes and LeetCode is idiotic. There are lots of other factors that play a vitally important role in creating great software and most big companies do NOTHING to pay attention to these factors albeit I fully admit to this being hard to test for. That's why I offer every company I'm recruited into to do a paid (or free albeit open source) work sample test if they want to do so. Most don't take me up on this offer and I think its idiotic but it is what it is.

        • By nonameiguess 2023-08-1719:551 reply

          This isn't really fair. All of Android, the Go programming language, TensorFlow, MapReduce, Big Table, Kubernetes, V8, Chrome are all very good engineering, software that stands the test of time and is likely to remain in use for decades. It's not garbage. They're great at libraries, plumbing, infrastructure layer tooling that enables Internet scale.

          What they aren't good at is consumer-facing web services with graphical frontends, at least since Gmail or so. Even there, businesses seem to like the G Suite.

          • By photon_lines 2023-08-180:39

            Google acquired the early android team and they were vital in making it succesful: https://www.androidauthority.com/google-android-acquisition-...

            Chrome: hmm - was Chrome developed after Brin & Page left? I never realized this but OK you got me on that one if that indeed is the case.

            Go: I liked it initially and I love the performance, but i don't necessarily love the language syntax and design.

            The rest: mostly tools which make scaling Google's infrastructure easier. I don't count these as outstanding accomplishments but I suppose you may have had me here too (albeit the scope I was referring to mostly referred to regular ppl not infra teams but meh I suppose I'll give you this one as well).

      • By slt2021 2023-08-1717:30

        > gathering requirements, clarifying ambiguity, weighing up trade-offs, making sure code is clear

        if you dont do that in leetcode interview - you will not make it, or you will be graded as junior/entry level engineer.

        No senior engineer will be passed without doing what you described during the leetcode interview

      • By yieldcrv 2023-08-179:24

        > It tends to be a rote regurgitation exercise.

        where there are much greater selective pressures in India and China to excel at this than there are in the US, raising this irrelevant bar to absurd territory if you value your time

      • By robryan 2023-08-179:301 reply

        A lot of places will also do a desgin interview to cover this aspect of the job.

        • By pavlov 2023-08-179:382 reply

          Which raises the question of why do the other kind of interview at all. I mean the leetcode nonsense whose end state is often a theatrical performance: “I’m pretending to invent this clever algorithm on the fly although I’ve practiced it for weeks”.

          Is there any evidence that candidates who do well on design interviews but fumble on leetcode would be any worse at the actual job?

          • By slt2021 2023-08-1717:333 reply

            Leetcode is simply testing whether you studied Computer Science, took Data Structures & Algorithms course, and read the CLR book on algos and practices it. Nothing else. This is really freshman level cs work. very simple.

            people who cannot leetcode - a simple data structures & algorithms inteview - cannot understand runtime nuances of what they write.

            This is how you end up with N+1 algorithms and exponential runtime.

            For example look at all modern front-end in javascript - usually leetcode is more relaxed for front end, and you end up with ungodly gobbles of unnecessary loops inside loops wrapped in loops that traverse DOM for no good reason and freeze the browser.

            it is the javascript people who import node libraries that contain 3 lines of code, instead of writing it properly

            • By Clamchop 2023-08-1719:50

              Maybe. My experience is that a lot of the unprimed recall gets weak very quickly without practice. There's irony in testing for skills that a fresh graduate may do better at than someone with substantially more experience.

              Primed recall can remain strong for many years, but leetcode often penalizes googling around to refresh your memory, even though that is what almost everyone should do before taking any further steps toward an implementation. Depending, it's often also the correct thing to do before choosing a library, the parameters to a function, code base organization, and lots of other details.

              Of course, domain experts may be very strong in their specialty, but that's a special case with narrower scope.

              I can hypothesize that testing for a "fast study" may have more predictive power. I have seen some interviews that are designed for this, leetcode adjacent but less antagonistic.

              But anyway, I am spitballing, to be real with you.

            • By remich 2023-08-1722:46

              You don't need to be good at leetcode to make a performant and well written frontend. You don't even need to know data structures, algorithms, or Big O notation.

            • By iwsk 2023-08-186:041 reply

              what do you mean by N+1 algorithms?

          • By porridgeandrice 2023-08-1717:45

            IME it's a test in which it is easy to grade many people in a way that it is really unlikely that two people end up with the same grade. That is what leetcode achieves and that is really the majority of the reason it is used. So it is just very convenient for hiring. In India, we have companies coming to hire students from colleges, and as the first filter, they give you three leetcode questions, and average the number of test cases you passed in each of them and rank you based on that. I spoke to one of the companies, they said that they had _very_ few people that had the same score, and it was easy to choose within those small sets by reading their resume/whatever.

    • By sdfghswe 2023-08-179:531 reply

      Just use a library, but those who can implement the library are better than the ones who can't. And that's what leetcode aims to distinguish.

      You thought the point of leetcode was to simulate live work conditions? lol

      • By thereisnojesus 2023-08-1716:37

        What is it for. I don't think anyone here understands its purpose anymore.

    • By faizshah 2023-08-179:32

      The reason they do this is because there is a lot of debate over having some objective way to collect information about a candidate. So they have multiple rounds of standardized technical interview questions from which they can compare interview feedback. The rounds will be from different interviewers so they can control for bias of one interviewer. Then they are able to compare this standardized data across multiple candidates.

      Imo this process is flawed though because just one or two rounds of technical interviewing gives you enough information about whether the candidate can code. After that you need to understand how the candidate thinks since most of the job is spent doing things that aren’t coding. These are better probed by design questions, asking the candidate to critique some code, asking the candidate to explain a project from their resume and then propose alternatives and trade offs.

      Too often you get people who pass this interview process that can code at a basic level but hinder your team by giving poor feedback, having a fixed mindset, being a bad communicator, not being able to unblock themselves etc.

      It’s fine if you are just looking to grow a new grad though, although former interns are better.

    • By varjag 2023-08-1710:33

      Not a fan of LeetCode but arguments like this almost sell me on it.

    • By zyang 2023-08-1716:163 reply

      Hiring should be a team level decision. Product roadmap should be an exec level decision. Google has it completely backwards. That's how you end up with hoards people gaming the hiring process by spending months on leetcode. And 3 chat apps from Google competing against each other.

      • By compiler-guy 2023-08-1717:52

        Teams at Google are very fluid, there are many of them, and they change regularly. So it makes a lot of sense to be sure a candidate could be successful in a wide variety of teams.

      • By slt2021 2023-08-1717:28

        gogle's product failure is failure of executives and product managers, not engineers.

    • By gaoshan 2023-08-1717:21

      Agreed. At our company the technical interview involves walking a dev through a working app that uses the same stack we develop with. There are bugs to solve, potential optimizations that exist and the dev explains and walks through the client/server/database portions (leaning into one or the other as needed). No tricky questions or puzzles... just actual code (a simplified subset but still real, working code).

  • By toyg 2023-08-178:57

    As long as you're young and willing to put the work in (which is demonstrated by building things like nice apps), the software industry will always have space for you. No commitments, high stamina, inexperience in contract negotiation, willingness to believe in corporate ideals, willingness to live in corporate accomodation... what's not to like?

    Microsoft and Apple were the first companies to understand this truth so deeply, so I'm not surprised Apple is still into these practices. If you are young, use them to your advantage; just - please go in with eyes wide open, because the industry doesn't really have your best interest at heart and never will.

HackerNews