Тёмный
No video :(

5 Coding Interview Misconceptions, Analyzed (this will change your approach) 

Gordon Zhu
Подписаться 5 тыс.
Просмотров 1,3 тыс.
50% 1

The "interviews are broken" idea is so appealing because it captures a lot of the frustration people have around a process that feels elitist and arbitrary. But does it make sense?
My teaching: watchandcode.com
Twitter: / gordon_zhu
In 2014, I founded the teaching company Watch and Code (watchandcode.com). Before that, I worked at Google on the Engineering Education team, Maps, TalkBin (a YCombinator startup acquired by Google), and AdWords.

Опубликовано:

 

5 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 24   
@rickhallett4223
@rickhallett4223 Год назад
This is the most comprehensive and thoughtful analysis of the narrative surrounding this subject I've witnessed so far. It can be BEWILDERING to understand what the truth is without this kind of breakdown, so thank you for your efforts. Most importantly, you are arguing that we need to be crystal clear on what a good engineer actually is and how work experience isn't always a good proxy for raw problem solving ability. If I am honest with myself, I prefer take home interviews PRECISELY because they allow me to work around my weaknesses in this area. I think a lot of the complaints are coming from people who just don't have the emotional maturity to face painful truths like this. After 3 months of immersion into your program, I recently passed a coding interview for a senior position that is considerably above my industry experience. I would have absolutely failed were it not for an improvement in my problem solving approach that I worked on with you. I didn't get further in the interview process as my domain knowledge was not extensive enough; this was a fullstack position and I've only got enterprise experience on the frontend. Clearly, domain knowledge is important to companies and it can still be used as a filter, but I like how you explained that in some ways its actually a separate concern. Great stuff, Gordon. Keep them coming!
@GordonZhu
@GordonZhu Год назад
Glad that our problem-solving approach has helped! Yep that's a great observation, that problem-solving and domain expertise can be pulled apart and evaluated separately.
@ranga8152
@ranga8152 Год назад
This is a refreshing rejoinder to what's become a common trend in software engineering. Having a low interest rate environment has coincided with a boom for tech and sky high demand for engineers: companies that shouldn't exist, companies that have no business / expertise meddling in tech, and bloated tech companies have created huge demand for devs. Bootcamps have only been too happy to promise a 'get rich quick' style offering that develops a facsimile of engineering - and this has delivered to some extent. It's been a democratisation of sorts - people getting in to tech who otherwise wouldn't have, and being able to earn comfortably for their loved ones. But I sense this democratisation has gone too far, and led to an erosion of standards around development. Engineers now, need to make sure that (1) they're able to get into software centred companies that will give them a real grounding in software engineering, and (2) make sure that they are up to the task of problem solving. Great video, Gordon!
@GordonZhu
@GordonZhu Год назад
Thanks for the thoughtful note. Very much agree with the overall sentiment here. I have an essay that talks about similar ideas: watchandcode.com/essays/flight-to-quality-in-teaching-and-hiring/. I'm also seeing this concerning trend: 1) People got into the industry when things were easy (~2012-2022). 2) Got laid off in the recent market correction (~2022). 3) And now have been unable to re-enter the industry (even after many months). It's a hard thing to watch up close, but it makes sense given the macro trends. It seems like there are three plays. 1) Become a competitive candidate (most difficult). 2) Downgrade into less competitive roles like technical support (easiest). 3) Wait it out in hopes that the bar lowers again (most risky).
@MrCode-et7yj
@MrCode-et7yj Год назад
Well said. To people who complain that LeetCode is divorced from actual software engineering, I always say, "It just means you've never built anything interesting."
@GordonZhu
@GordonZhu Год назад
The old unknown unknowns problem. Most work is just gluing things together but if that's all you know it's hard to imagine anything else.
@sleepybraincells
@sleepybraincells 2 дня назад
Damn this is really insightful
@GordonZhu
@GordonZhu День назад
Thank you! Is there a specific part that stood out?
@sleepybraincells
@sleepybraincells День назад
@@GordonZhu I think it's the perspective shift that, DSA questions are not just for testing your knowledge in DSA, but actually to test your general problem-solving abilities; something that takes longer to cultivate. Also, the way you explained how companies need to filter down candidates made sense; it feels less unfair now.
@GordonZhu
@GordonZhu 21 час назад
@@sleepybraincells Thank you -- that's helpful. It's good for me to understand what messages are getting through.
@-.-smile
@-.-smile 5 месяцев назад
Great video. Excellently broken down
@GordonZhu
@GordonZhu 5 месяцев назад
Thank you!
@therealestever
@therealestever Год назад
so in terms of practicality, the way to get better at problem solving is to solve problems at the edge of your competency? did i get that right?
@GordonZhu
@GordonZhu Год назад
It's not that simple. That's just ONE important aspect. And it's difficult to get right. Most people overestimate their ability and work on problems that are too hard. This is especially true with LeetCode, where even the "easy" questions are too hard for most people at the beginning. There are a ton of things you have to get right to become a good problem-solver, but if I had to describe it in one sentence, I'd say that it requires large, recurring doses of [thoughtful practice] + [deep introspection]. For example, just ONE aspect of thoughtful practice is doing problems at the right level. Another is not looking at solutions. Within introspection, you have to reflect deeply and accurately on where your current weaknesses are, and how you can fix them. You then have to successfully implement the fix(es). All of these subtasks are difficult and nuanced, and may trigger more subtasks, all of which are also difficult and nuanced. That's what makes problem-solving so difficult, satisfying, and frustrating at times. If this is interesting to you, you may enjoy the book "How to Solve It" by Polya. It was written for mathematicians, but is equally applicable to programming.
@gonkong5638
@gonkong5638 Год назад
Love your program Gordon. Have you considering adjusting the program fee by GDP with "gifted" test ? It's kinda hard for student in low income country to join your program even if they are just $99 entry and 299$/month. What happen with the old program? I remember it used to be a free intro and only 99$/month. I understand that your company time are expensive, lower the price mean you have to work more with less profit. But I do believe that there are some very bright students that can bring value to your program too. I used to recommend you program to my student but now most of them can't afford it. Hope you can find a way to solve this problem.
@GordonZhu
@GordonZhu Год назад
For full context, see watchandcode.com/essays/a-brief-history-of-watch-and-code/. From 2014-2020, we functioned primarily as a video tutorial site, and our pricing reflected that. Because of the many limitations of passive video (just not effective for most people), we transformed into an intensive hands-on program. The heart of that is our assessments, which are HAND-GRADED assignments that simulate a rigorous code review process. This labor intensive aspect is required to help students learn about the nuanced parts of programming. And all of the hands-on work is done by senior staff. We do NOT use teaching assistants because it's just not possible to maintain the same quality of instruction. This is all very expensive, and we've done everything we can to keep things affordable given our current structure. One reason I'm posting on RU-vid again is to help interested students that can't afford our program. In the future, we're also strongly considering low cost self-serve options. Though the efficacy of passive video is limited, I honestly think we do them much a lot better than everyone else. And so if people watch *better* videos than they would otherwise, that's still a big win for everyone.
@the-web-scraping-guy
@the-web-scraping-guy Год назад
Gordon! LFG!!!
@GordonZhu
@GordonZhu Год назад
Hey Adrian! Just checked out your channel too. Looks neat. I don't know anything about web scraping.
@fire-wn6dj
@fire-wn6dj Год назад
nice video
@GordonZhu
@GordonZhu Год назад
Thank you!
@leoparadoxo
@leoparadoxo Год назад
First of all, thanks for bringing up this discussion. I agree with a lot of what you said, and I think it is a health discussion to have. In my experience, DS&A is not that universal. I'm self taught and for the first few years in my career, I only knew the basics of it. During these years I was learning other things, like software architecture (things like design patterns, architectural patters and SOLID), frameworks, databases, etc. These things were super useful and helped me write better code a lot more than DS&A would. There was really just one time in my career when diving into data structures really helped with a problem I was facing. I don't think measuring how good a person is with DS&A is a good proxy for measuring the person coding skills, even if DS&A were super universal. Using your analogy, is liking asking the surgeons you are interviewing for a hearth surgery a question about a specific thing common to all medical specialties (let's say, about the hand anatomy), while leaving the anatomy of the hearth uncovered. Maybe during the surgery something falls and breaks the patient hand, but that's the least of my concerns. The problem with what you said is that you are assuming both surgeons have the same competency on the most common tasks, which is 100% not true in real life. Someone can be really good on problem solving/DS&A and not be competent in other, more common, things. For example, I have worked for one of the big tech companies and I was really disappointed by how bad can a lot of (even senior) engineers be at software architecting. Convoluted made up patterns that gives no real benefit (only makes things harder to understand and debug) or overall code structure that overcomplicate things. Well, at least they know DS&A and problem solving. Of course there are good engineers too, but it may be more by chance than by design. Yes, asking about DS&A is still a lot better, in general, than asking things about specifics languages or frameworks, but why do interviews have to be universal, no matter the role the opening is for? I argue the important skills for FE and BE are really different. There are, yes, common skills, like problem solving, that can be evaluated in the interview process, but is it the best proxy for the person ability to create a new screen in your app? I don't think so. If so, I, a (mostly) BE engineer, with good enough problem solving/DS&A knowledge to join a big tech, would be a really good FE engineer, which is not the case. My final step in the interview process was a 4 hour interview. They verified some base level of problem solving/DS&A prior to that, maybe they should use the 4 hours to cover more ground?
@GordonZhu
@GordonZhu Год назад
The purpose of using data structures and algorithms is to minimize the prerequisite knowledge required. Otherwise, candidates would have to study X for one company, Y for another company, and Z for others. A lot of the things that you mentioned, like code design, can be assessed in algorithms interviews. The more difficult the problem, the more good design and readability matters. You said "Someone can be really good on problem solving/DS&A and not be competent in other, more common, things." Totally agree. Problem-solving ability will not immediately translate to tasks that require prerequisite knowledge. If you're a backend engineer, it'll take you a period to get up to speed on a different domain, like frontend, no matter how good you are at problem-solving. It is true that most people don't run into issues where skill with data structures and algorithms is the *limiting factor*. But at scale, it often IS a limiting factor because of the size of the data. Also, even when performance is not a limiting factor, it still informs program design. In our internal research, people routinely make important decisions based on performance misconceptions. CS researchers have had similar findings. See blog.brownplt.org/2022/10/10/performance-preconceptions.html. Completely agree that algorithms interviews DO NOT tell you whether someone can "create a new screen in your app". But that's not what these companies are trying to figure out.
@leoparadoxo
@leoparadoxo Год назад
​@@GordonZhu The way I see, when people say that interviews are broken, they don't mean that they are not happening exactly as designed by companies. They mean that the design itself is flawed. For example, when you say in the video that companies probes the problem solving skills of the candidates because that's how they differentiate good from great developers, it reduces developer skills to a 1-dimension metric. If you are good at this thing, you are good at everything "easier", which is an absurd oversimplification. The process, as designed, can find a consistent type of developer, but that type is not necessarily of great developers, as I have experienced. Yes, minimizing the prerequisite knowledge is a good thing in general. I don't think data structures and algorithms are, necessarily, bad for the interview process. You can use it to assess important skills, like problem solving or getting an insight on the person way of tackling a problem. 100% agree with you here. But I disagree that you can get a lot about other skills. If you are capable of going through a difficult problem, trying to find a solution, and then thinking if there is a better solution, implementing it, while thinking/developing a good design, with abstractions, implementing patterns, following principles, or whatever would make that a good design, in just 45 minutes, you are in another level. Easier problems could be used to asses these other things a bit better, but you lose data on problem solving. Also, if you agree that we can and should assess these kind of things in a candidate, you should agree that DS&A is not the only thing should know/study for an interview. Which is why I think that reducing the interview process to evaluate only DS&A, just because it is somewhat universal, is a super flawed logic. I had an interview in the past where the interviewer and I were chatting for maybe 30min about a lot of different topics in a higher level, like APIs, DBs, infrastructure, security, etc. Did that evaluate my problem solving skills? No, but it was valuable for him in other ways. I'm not saying that it's a better solution, but combining a few different strategies like that could result in a much more complete assessment of the candidate skills. I am aware of the misconceptions about optimization. Martin Fowler says that "If you make an optimization and don’t measure to confirm the performance increase, all you know for certain is that you’ve made your code harder to read.". That's because people with the misconceptions can think they are making things faster without it actually being the case. Knowing algorithm complexity analysis can help you optimize your code, but it's not always that simple, as asymptotic behavior can mislead you. Also, code run time optimization is just one link in the overall service optimization. If a service runs 10% faster after a code optimization, but becomes 20% harder to maintain (new functionalities get harder to implement or bugs harder to fix), than the original optimization may no be worth. Writing clear code, in this sense, can be a lot more valuable than optimizing it. Yes, there are situations where you can get a lot from optimizations, but if you want to evaluate something more universal (the argument for using DS&A), you should focus more on the things that makes a code more maintainable. Adding something new if you allow me, what I understand when people say there is a lot of memorization behind interviewing, that's because the preparation requires a lot of "training" to get (or regain) the hang of problem solving. There are even books that gives tips on how to solve the problems fast. Once you get the job and stop "exercising" your interview problem solving skills, they quickly degrade. If you ever need that kind of skill in the job, you will have to re-train yourself. Same for the tips that are not useful outside of the controlled interviewing process. I understand that there is some value in being able to train and get good in the first place, but if you do something almost exclusively for the interview and nothing more, something that you will not keep in the long term, it can feel a lot like memorization.
Далее
Why Coding Interviews Are STILL Broken
8:49
Просмотров 7 тыс.
Китайка Шрек всех Сожрал😂😆
00:20
Редакция. News: 128-я неделя
57:33
Просмотров 1,8 млн
I learned to code from scratch in 1 year. Here's how.
41:55
Why Most Programmers DON'T Last
18:56
Просмотров 291 тыс.
10 Things That Tell You're Well-Educated
13:02
Просмотров 823 тыс.
The only book you need to get better at anything
6:56
Rethinking the Technical Interview
13:09
Просмотров 68 тыс.
Coding Your Dumb Ideas Into Minecraft
10:58
Просмотров 1,7 млн
Google Coding Interview With A High School Student
57:24
Coding Interviews are NOT Broken (a Deep Dive)
33:35
Просмотров 123 тыс.
Китайка Шрек всех Сожрал😂😆
00:20