Как я захотела прочитать книгу, а в итоге собрала сообщество Senior+

 Публичный пост
15 ноября 2024  2462

Предыстория, мотивация и толчок (поездка в НЙ)

Есть вещи, от которых никуда не денешься, например английский. Если не выучила английский в школе, придется учить в универе, если не выучила в универе, придется после работы ходить на частные занятия. C книгой Designing Data-Intensive Applications (aka DDIA, aka "книга с кабанчиком") в мире программирования точно так же. Ты либо прочитаешь ее, либо все время будешь думать "да, да, я открыла, пролистала пару глав, надо как-нибудь дочитать".

Когда ты дорастаешь до уровня Senior, на собеседованиях спрашивают не только алгоритмические задачи, но и System Design. Книга DDIA считается библией в подготовке к System Design собеседованиям. В ней рассказывается, как работают базы данных: индексы, репликация, партиции, как из многих ненадежных компонент собирать одну надежную систему.

В мае этого года у меня появилась волшебная возможность (точнее, я зубами вырвала у жизни эту возможность) -- три месяца отпуска, который я провела в Нью-Йорке на ретрите для программистов, чтобы программировать, то, что ✨хочу✨.

И тогда я поняла, что книгу читать я собираюсь, и не собираюсь делать это одна. Написала вот такой пост и запостила в свой телеграм канал и твиттер

Как работает книжный клуб, логистика

Идея была проста: каждую неделю мы читаем по главе в своем темпе, раз в неделю собираемся на звонок и обсуждаем, что прочитали. Один человек делает презентацию и повторяет основные тезисы главы, но так как все главу прочитали (по идее!), то презентация не должна покрывать весь материал, а только дать толчок для обсуждения.

Ожидания у меня были не высоки. Я думала, что если будет хотя бы 3 человека, кто будет регулярно приходить на звонки, будет здорово. Все-таки книга сложная, а у людей есть еще дела.

Я создала отдельный чат в телеграме для обсуждения книги и назначила первый созвон. К моему удивлению, на первый звонок пришло 30 человек, а сразу после него люди сами скоординировались и составили расписание, кто когда будет делать презентацию. Нагрузка на меня сильно облегчилась!

Клуб держится на усилиях волонтеров, но зачем это нужно им?

В итоге мы прочитали DDIA за 18 недель (некоторые главы разбивали на 2 недели), 10 человек посетили >75% звонков и 13 разных человек делали презентации!

Честно говоря, это был не первый мой опыт создания книжного клуба. Таким же образом я до этого прочитала книгу Database Internals, только тогда книжный клуб был внутри компании. Для меня мир распределенных систем был нов, в то время когда многие мои коллеги уже сами написали свою распределенную файловую систему или протокол распределенных транзакций, так что мне это было сильно нужнее и интереснее, чем коллегам. В итоге почти все презентации готовила я. Тем более неожиданно и приятно для меня стал факт, что в этом клубе мне пришлось делать презентацию только 4 раза из 18, когда не находились другие желающие.

Я верю, что есть два уровня знаний:

  • что-то где-то слышал
  • я это знаю и могу объяснить другому

Знания на первом уровне часто висят в сознании и напоминают о себе "надо все-таки до конца разобраться", а знания второго уровня дают уверенность, что даже если сейчас информация не в кэше, ты можешь ее достать из сознания, когда захочешь.

Те, кто только слушает обсуждение, получают знание на первом уровне, те, кто презентует тему, задают вопросы, делятся своим опытом и мыслями -- получают знания на втором уровне.

Ключевые решения дизайна

Нет анонимусов

На входе в клуб стоит бот, который просит представиться и кикает тех, кто этого не делает. Бот проверяет, чтобы в описании было хотя бы 60 символов. Регулярно появляются те, кто вставляет что-то несодержательное, чтобы набрать 60 символов. Тех кикаю уже я.

В клубе нет какой-то закрытой информации или других ресурсов, единственная ценность клуба -- это вера в то, что остальные участники готовы вкладывать усилия в то, чтобы стать лучше как программисты и помочь в этом другим. Содержательное интро на входе -- это дар сообществу в виде усилий и открытости. Без этого контракт между участниками клуба нарушается.

Звонки не записываются

Много раз были запросы записывать звонки на видео, потому что кому-то не удобно время звонка, но они хотят получить пользу от обсуждения. Я считаю, что это убило бы идею клуба.

tl;dr: я не хочу делить участников клуба на "создателей контента" и "потребителей контента". Чтобы получить пользу, надо вложить усилия = (прочитать главу вовремя + прийти на созвон) + быть открытым = (прийти и задать свой "глупый вопрос" самому)
мои аргументы, почему я не хочу записывать:

  • если кто-то хочет послушать пересказ, лучше сделать это на ютьюбе, потому что там созданный контент + автор постарался структурировать
  • часто мы что-то не поняли или неправильно поняли, мы как раз для того и встречаемся, чтобы задавать "глупые" вопросы, хочется чтобы люди не стеснялись это делать
  • большая ценность встреч в том, что мы делимся историями из опыта и прода. Часто люди не захотят рассказывать под запись историю, как в компании X у нас была вот такая корявая архитектура/такой инцидент

Что в итоге?

Сейчас в клубе 200+ участников, многие из них senior+, много кто работает в FAANG, и все мы собрались чтобы что-то понять и быть полезными другим. Я могу задать вопрос примерно по любой области программирования и получить ответ от человека с опытом в этой области.

DDIA -- второй поток

Новые люди не перестали приходить в группу, когда мы начали читать книгу, а когда мы уже достаточно продвинулись, кто-то пришел и прямо сказал, что не будет нас догонять, а подождет "следующего потока". Так я узнала, что следующий поток будет.

Когда мы (первый поток) дочитали книгу, я поняла, что мне не интересно обсуждать эту книгу во второй раз. Поэтому нашла желающую курировать второй поток, расписала задачки по курированию я радостно доверила ей вести поток)

Что с литкодом?

Я слишком часто слышала этот вопрос и очень долго специально игнорировала эту тему. Я считаю, что leetcode привлекает людей, которые готовятся к собеседованию, а не тех, кто хочет разобраться, как работают системы. Но реальность нашей жизни такова, что leetcode навыки надо держать наготове всем вне зависимости от уровня. В итоге я нашла, кто готов курировать поток по leetcode и отдала бразды правления в отдельно взятом топике. Желающие прорешивают задачи из списка 75 blind, так же по теме в неделю и собираются на обсуждение раз в неделю.

Random coffee для горизонтальных связей

Для меня важно, чтобы я не была bottleneck-ом в клубе для получения пользы. Поэтому я хочу, чтобы в клубе были горизонтальные связи, чтобы люди знали друг друга, а не только знали меня. Поэтому я добавила в клуб random coffee бота. Каждую неделю он случайно матчит желающих познакомиться и поболтать.

Лично я через random coffee нашла кураторку второго потока чтения книги с кабанчиком и кураторку потока leetcode, кто-то нашел с кем сходить на концерт в другом городе. Но по большей части я не знаю, что люди обсуждают на этих звонках, но в этом и идея)

P.S. а да, клуб бесплатный, вот ссылка https://t.me/lenka_ne_club

P.S.S. я могу подготовить тебя к System Design собеседованию, это уже за деньги, писать сюда https://t.me/lenka_colenka

P.S.S.S а если не хочется сейчас ни книжку обсуждать, ни leetcode прорешивать, но хочется быть в курсе новостей от меня, то вам сюда https://t.me/lenka_ne_work

9 комментариев 👇

Очень интересная идея, я не подозревал, что существуют практики подобного рода. Действительно, грядущее обсуждение прочитанной главы фактически вынуждает тебя в ней разобраться, особенно, если ты хочешь быть не хуже и реально въехать, а порой и задать наиболее релевантный вопрос, который будет интересен многим.

Рекомендую ознакомиться с брошюрой русского философа Сергея Поварнина - "Как читать книги для самообразования". Это помогло мне лучше понимать смысл прочитанного (для тех у кого нет клуба и хочется повысить скылл) :)

  Развернуть 1 комментарий

@matveybuk, спасибо за рекомендацию, кстати вот она: http://flibusta.site/b/555499

  Развернуть 1 комментарий

Такой подход крайне недооценён, как мне кажется. Я тоже устраивал пару таких «марафонов» для книг по прикладной рациональности. Было долго, но интересно, поэтому информация усваивалась лучше. Хочется давно повторить это с Хаскелем.

Главный для меня вопрос: как называть этот формат?

«Книжный клуб» — кажется, что это чаще про итеративное чтение разных книг, а не про углублённое чтение одной. «Марафон» — хоть так и называл сам, но меня уже тошнит от сомнительных коннотаций. «Коллективное обучение» — хрен знает, кажется слишком общее название и не то.

  Развернуть 1 комментарий

Точно по такой же схеме с коллегами читали DDIA, но забросили на половине(

Кстати, нет в планах запуска потоков по другим книгам?

  Развернуть 1 комментарий

@KlimAndy, чтобы не забросить, мне кажется нужен один человек, которому нужно больше всех. Чтобы он делал презентацию, когда всем неудобно.

Про другие книги, идей много, больше всех на меня смотрит курс писать свой Redis https://app.codecrafters.io/courses/redis/overview, но это точно не в этом году

  Развернуть 1 комментарий
  Развернуть 1 комментарий

Мы так делали в клубе тоже, на моём опыте это самый эффективный и интересный способ изучать техлитературу.
Только очень долго

  Развернуть 1 комментарий

@MaximKonovalov, ну это точно не подходящий способ, когда нужно быстро подготовиться к собеседованию например. Зато плюсы -- один раз прочитал, а после этого любые статьи и техблоги сильно понятней!

  Развернуть 1 комментарий

Я пробовал так сделать здесь на Вастрике с книжками по информационному дизайну. Но, насколько понял, количество дизайнеров в этом профиле пока не достигло критического значения в здешней тусовке. А на идею выйти во внешние интернеты тогда забил, а зря)

  Развернуть 1 комментарий

😱 Комментарий удален его автором...

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб