Как один запрос чуть не уничтожил Netflix: путь ThePrimeagen

Lex Fridman 1,9 млн 5 ч 20 мин 7 мин 22.03.2025
Главное

🏗️ Программирование как искусство бесконечного: Магия связанных списков

Путь в программирование для Майкла Полсона (ThePrimeagen) начался не с сухого синтаксиса, а с экзистенциального шока на втором курсе университета штата Монтана. Преподаватель Рэй Бэбкок объяснял структуру «связанный список» (linked list).

В тот момент Майкл впервые увидел узел (node) — объект, у которого есть приватное поле того же типа, что и он сам. Эта концепция рекурсивной структуры данных перевернула его представление о мире:

Лекс Фридман добавляет к этому философский подтекст: узел в списке не знает ничего о мире, кроме своего ближайшего соседа. Это метафора человеческого общества — миллиарды людей, знающих только свое локальное окружение, но вместе образующих гигантские, сложные системы.

🧩 Рекурсия: Прыжок веры и «Ханойские башни»

Одной из самых болезненных точек в обучении для ThePrimeagen стала рекурсия. Несмотря на любовь к программированию, он долго не мог понять её практический смысл.

  1. Проблема обучения: Примеры типа «факториал» или «числа Фибоначчи» только запутывали. «Зачем использовать рекурсию, если есть цикл for?» — задавался он вопросом.
  2. Кризис самозванца: Читая учебник Дейтелов по Java, Майкл наткнулся на задачу «Ханойские башни». Неспособность решить её вызвала глубокое отчаяние: «Может, я не достоин быть программистом?».
  3. Момент истины: Понимание пришло во время лабораторной работы по поиску пути в лабиринте. Когда возникла задача обхода 2D-массива с возвратом (backtracking), рекурсия «кликнула». Оказалось, Майкл понимал её и раньше, но ему не хватало задачи, где она была бы естественным инструментом, а не искусственной надстройкой.

Лекс Фридман сравнивает понимание рекурсии с «прыжком веры». Для него самого рекурсия стала магией через теорию игр (шахматы, Отелло) и клеточные автоматы. Возможность наблюдать, как простые правила взаимодействия соседей порождают бесконечную сложность (игра «Жизнь»), наполняла его «космической радостью».


🛠️ Роль инженера: Инструменты, «Full-stack» и DevOps

Обсуждая профессиональную идентичность, Полсон классифицирует себя как Tools Engineer (инженер инструментов). Его карьера строилась по принципу: «мне нужно создать что-то, чтобы остальные могли работать эффективно».

🧬 Архетипы программистов

ThePrimeagen подчеркивает, что мир разработки гораздо шире, чем кажется из Twitter:

Майкл называет себя генералистом. В Netflix он мог работать над UI-библиотекой, затем переключиться на оптимизацию памяти, а позже — писать код для WebSocket-соединений в телевизорах. Его философия: «Не важно, что именно нужно сделать. Скажите мне задачу, и я пойду её изучать и внедрять».

🧱 Что такое DevOps на самом деле?

Когда Лекс просит определить термин DevOps (Special Ops для программистов?), Майкл иронизирует над путаницей в названиях (SRE, Cloud Engineer, Platform Engineer).


⚡ Жизненный путь: Через тернии, зависимости и веру

Биография Майкла Полсона — это история радикальных трансформаций. Он открыто говорит о темных периодах, которые сделали его тем, кто он есть.

🌑 Потеря отца и ранние зависимости

В 7 лет у Майкла умер отец. Это создало глубокий вакуум и жажду одобрения.

🏥 Точка невозврата и встреча с Богом

В 18 лет, после неудачной попытки самоубийства, в Майкле «что-то сломалось». Он стал социально смелым, потому что перестал дорожить чем-либо. Однако в 19 лет произошел мистический опыт: он ощутил реальное присутствие Бога.

👔 Карьерный взлет: Из Монтаны в Netflix

История попадания в Netflix в 2013 году звучит как авантюра:

  1. Обстоятельства: Жена на 36-й неделе беременности, отсутствие знакомых в Калифорнии, статус «Монтанца с врожденной неприязнью к Калифорнии».
  2. Технологический стек: Netflix искал экспертов по RxJS (реактивные расширения для JavaScript). Майкл к тому времени наработал огромный опыт в стартапах и корпоративном секторе (WebFilings), создавая сложные UI-движки.
  3. Культура «Hire Fast, Fire Fast»: Несмотря на агрессивную политику увольнений в Netflix, Майкл был уверен в себе. Он зашел на интервью с целью «просто показать то, что я уже знаю».

💥 «Repulsive Grizzly»: Как один запрос может убить Netflix

Одной из самых ярких историй периода работы в Netflix стало обнаружение уязвимости, получившей имя Repulsive Grizzly Attack.

🕷️ Суть уязвимости в Falcor (аналог GraphQL)

Falcor позволял запрашивать данные через «пути» (paths). Для удобства разработчик мог запросить диапазоны, например, «ряды с 0 по 10».


🧠 Обучение и продуктивность: Против «Smart, not Hard»

ThePrimeagen выражает резкое несогласие с популярной фразой «work smarter, not harder» (работай умнее, а не усерднее).

🥊 Его аргументы против этого лозунга:

  1. Ложная презумпция: Фраза предполагает, что ты уже знаешь, что такое «умный путь». Но в обучении ты этого не знаешь.
  2. Путь к мастерству: Ты не можешь научиться работать эффективно, не пройдя через этап тяжелого, изнурительного труда. «Работай усердно, чтобы стать умным» — вот его девиз.
  3. Пример с музыкой и BJJ: Чтобы «расслабиться» в джиу-джитсу или за пианино, нужно потратить тысячи часов на механическую работу. Расслабление и эффективность — это результат мастерства, а не отправная точка.

🧘‍♂️ ADHD и фокус

Для борьбы с СДВГ Майкл использует «эмоциональную устойчивость». Если он читает страницу и понимает, что отвлекся, он возвращается и читает её снова — хоть 18 раз подряд.


🤖 Будущее ИИ в программировании: Надежда и Опасения

Обсуждая влияние LLM на индустрию, участники приходят к важным выводам.

☢️ Опасность для «джунов»

Майкл боится, что ИИ создаст поколение «некомпетентных программистов».

🌟 Позитивный сценарий

Лекс отмечает, что ИИ делает программирование менее одиноким. Это похоже на парное программирование с бесконечно терпеливым напарником.

☕ Терминальный проект: Terminal Shop

В качестве примера «веселого программирования» Полсон рассказывает о своем проекте Terminal Shop — кофейном магазине, где заказ можно сделать только через SSH.

Завершая беседу, ThePrimeagen подчеркивает: программирование — это способ самовыражения. Важно не то, на каком языке ты пишешь (будь то Go, Rust или JavaScript), а то, сохраняешь ли ты любопытство и радость от создания чего-то нового.

💬 Цитаты

«Моим даром стала совесть»

Майкл Полсон

«Работай усердно, чтобы стать умным»

Майкл Полсон

«Программирование — это не написание кода, это решение проблем»

Майкл Полсон
👥 Спикеры
📚 Упомянутые книги
🔗 Упомянутые сайты и проекты
📖 Термины
Связанный список (Linked List)
Структура данных, где каждый элемент содержит ссылку на следующий объект того же типа.
Рекурсия
Прием в программировании, когда функция вызывает саму себя для решения подзадач.
DevOps
Методология и роль, обеспечивающая стабильную работу и масштабирование сервисов.
Falcor
Библиотека Netflix для извлечения данных, аналог GraphQL.
Neovim
Высокоэффективный текстовый редактор, управляемый полностью с клавиатуры.
Технологии и IT Майкл Полсон ThePrimeagen Netflix Neovim DevOps