Как я использую AI для обучения
Последние несколько месяцев я изменил подход к изучению новых тем. Не революционно, но заметно. Хочу рассказать как это выглядит на практике.
Проблема с книгами и документацией
Книги дают структурированное знание, это их сильная сторона. Но они монологичны. Читаешь, что-то не понимаешь, идёшь гуглить, теряешь нить, возвращаешься. Когда я читал Клеппмана, постоянно останавливался на деталях которые хотелось прояснить прямо сейчас. Почему именно так устроен MVCC? Как это соотносится с тем что я вижу в explain analyze? Книга не отвечает, она идёт своим темпом.
Обратная связь растянута на минуты или часы. А хочется на секунды.
Что изменилось
Я начал разбирать незнакомые темы в диалоге с Claude. Не вместо книг, просто другой режим работы со знанием.
Когда изучаю что-то новое, не читаю статью от начала до конца. Начинаю с вопроса который реально беспокоит прямо сейчас, получаю ответ, и следующий вопрос рождается из предыдущего ответа.
Недавний пример. Начал с вопроса про симуляцию конвейеров в Satisfactory. В ответе прозвучало сравнение с backpressure в NATS JetStream. Спросил что такое MaxAckPending. Из этого вырос разговор про DiscardOld и потерю данных, потом про shed load, потом про event loop lag, потом про защиту от OOM.
Ни одного из этих переходов я не планировал. Каждый следующий вопрос рождался из того что стало непонятным в предыдущем ответе. Книга так не умеет, она не знает где именно у тебя пробел.
Как я решаю что спросить
Никакой системы. Иду по ощущению, что наименее понятно и знакомо прямо сейчас.
Звучит ненадёжно, но на практике работает лучше чем заранее составленный план. План строится на том что ты уже знаешь о своих пробелах. Проблема в unknown unknowns, вещах которые ты не знаешь что не знаешь. Их в план не включишь.
Диалог вскрывает их естественно. Думаешь что понимаешь как работает пагинация в MikroORM, и вдруг оказывается что findByCursor и ручной WHERE id > ? это одно и то же на уровне SQL, но с важным отличием при неуникальной сортировке. Этого не было в моём плане, это вышло из разговора.
Инсайты случаются почти каждый день
Главное что дал этот формат, не накопленные факты. Моменты когда разрозненные куски знания складываются в единую картину.
Разбирали теорию очередей, и в какой-то момент дошло почему сервисы деградируют задолго до 100% утилизации CPU. Я это как-то чувствовал интуитивно, но не мог объяснить. Оказывается при 80% загрузке очередь уже в четыре раза длиннее чем при 50%, и растёт она нелинейно. Теперь когда смотрю на метрики, вижу за цифрами поведение системы, а не просто числа.
Или момент когда связались retry storm и теория игр. Каждый клиент при сбое ретраит как можно быстрее, оптимизируя себя. В итоге все ретраят одновременно и сервис не успевает восстановиться. Это оказывается классическая ситуация из теории игр, когда каждый действует рационально, а результат плохой для всех. Jitter это не просто best practice из интернета, он математически разрушает эту ситуацию.
Такие связи не появляются от чтения книг по одной. Они появляются когда двигаешься по собственной нити интереса через разные области.
Что этот формат не заменяет
Книги нужны для глубины и структуры. Когда надо серьёзно разобраться в теме, всё равно открываю Клеппмана или Фаулера. Диалог даёт быстрый вход и заполняет пробелы, но не заменяет проработанное линейное изложение.
Практику тоже не заменяет. Знание из диалога проверяется только когда применяешь его к реальной задаче. Могу объяснить как работает findByCursor, но понимание становится настоящим только когда профилируешь реальный запрос и видишь это в explain analyze.
Итого
Я не стал учиться больше. Стал учиться плотнее. Каждый вопрос точнее попадает в реальный пробел, каждый ответ сразу проверяется следующим вопросом. Цикл обратной связи сжался с часов до секунд.
Посмотрим куда это зайдёт.