DataTalksClub - The Importance Of Writing In A Tech Career
Eugene Yan, прикладной учёный из Amazon, рассказывает в подкасте DataTalks.Club о том, почему умение писать — ключевой навык в технической карьере. Он делится своим путём от выпускника факультета психологии до специалиста по машинному обучению, описывает свой процесс написания статей: 50–70% времени уходит на итерации по структуре (outline), а не на прозу, и каждую неделю он публикует новый материал, тратя около 25 часов. Eugene выделяет три мотивации: делиться знаниями, учиться через письмо и быть «маяком» для единомышленников. Также обсуждается культура документов в Amazon — пресс-релизы и дизайн-документы вместо презентаций — и практические советы для начинающих: просто начать писать, не гнаться за оригинальностью и не тратить время на выбор идеальной платформы.
DataTalksClub — Важность письма в технической карьере
Недавно мне посчастливилось побывать в подкасте DataTalk.Club, где мы с Alexey обсудили важность письма в технической карьере. Мы поговорили о том, почему я начал писать, что мотивирует меня писать неделя за неделей, о моём процессе написания, о том, как начать писать, о культуре и процессе написания в Amazon и о многом другом.
• • •
Ниже — расшифровка нашего разговора, слегка отредактированная для ясности и удобства чтения.
Alexey Grigorev: Всем привет. Спасибо, что пришли на наше мероприятие сегодня. Это мероприятие организовано datatalks.club — сообществом людей, которые любят говорить о данных.
Сегодня мы поговорим о техническом писательстве и блогинге. У нас сегодня особенный гость — Eugene Yan. Eugene работает на стыке машинного обучения и продукта. Ему нравится создавать практичные системы машинного обучения. А ещё он пишет и выступает на темы эффективной data science, машинного обучения в продакшене и карьерного роста.
Если вы следите за Eugene, вы знаете, что он пишет очень много каждую неделю на своём личном сайте. Естественно, мне было очень сложно придумать кого-то более подходящего для этого выпуска подкаста. Так что спасибо тебе, Eugene. Добро пожаловать.
Eugene Yan: Спасибо, Alexey, рад быть здесь.
Alexey Grigorev: Прежде чем мы перейдём к нашей основной теме — письму, — давайте начнём с твоего бэкграунда. Можешь рассказать немного о своём пути, о карьере, о том, как ты начинал.
Eugene Yan: Мой путь довольно необычный. Я окончил факультет психологии около 10 лет назад. Несколько лет проработал в сфере инвестиционной политики и понял, что мне это не очень нравится. Я много занимался контрактами и соглашениями, а хотел больше работать с данными. Поэтому я прошёл примерно 20–30 онлайн-курсов (MOOC), сходил на собеседования в несколько компаний и мне очень повезло — меня приняли в IBM.
Пока я работал в IBM, я участвовал в соревновании Kaggle по классификации продуктов. Моя команда попала в топ-3%, и мы рассказали о нашем подходе на митапе. Случилось так, что один e-commerce стартап сталкивался с аналогичной проблемой — как правильно категоризировать товары — и в зале был их представитель.
Они пригласили меня на обед и спросили, как бы я решил эту задачу для них на разных языках — во Вьетнаме, Индонезии и на английском. А на следующий день предложили работу. Мне было интересно узнать, каково это — работать в стартапе. Я был ещё в начале карьеры и присоединился к ним в качестве третьего дата-сайентиста.
Этим стартапом был Lazada. Через несколько лет Alibaba нас приобрела, и я перешёл в health-tech стартап. К сожалению, там всё сложилось не очень хорошо. Так что вот я здесь. Сейчас я Applied Scientist в Amazon в Сиэтле, работаю над рекомендательными системами и машинным обучением.
Alexey Grigorev: Так что если кто-то скажет вам, что Kaggle — пустая трата времени, вы — живое доказательство обратного.
Eugene Yan: Ха-ха, мне просто очень повезло.
Alexey Grigorev: У тебя же есть статья о твоём карьерном пути, и это одна из самых просматриваемых, верно? Как она называется?
Eugene Yan: Я скину ссылку позже. Найду и поделюсь.
Вот эта статья: From Psych Grad to Leading Data Science at Lazada
Alexey Grigorev: Это довольно подробное описание карьерного пути. Отличное чтение, рекомендую всем прочитать, как и практически любую другую статью, которую ты написал. Раз уж мы сегодня говорим о письме, мне любопытно: когда ты начал писать? И я имею в виду не внутреннюю документацию — понятно, что в начале карьеры приходится что-то писать. А именно что-то внешнее, вроде блогинга — когда ты начал этим заниматься?
Eugene Yan: Я смотрю сейчас на свой сайт, и мой первый пост был от сентября 2015 года. Это был отчёт для DataKind — НКО, которая занимается проектами. Это был проектный акселератор с несколькими НКО, которым мы пытались помочь. Почему я это написал? Потому что они искали волонтёров для написания текстов, и я вызвался. Почему вызвался? Признаюсь, мои мотивы были не совсем альтруистическими. Я вызвался, потому что хотел попрактиковаться в письме.
Я знаю, Alexey спросил, когда я начал писать. Но я хочу также ответить на вопрос, почему я начал писать, — а это, на мой взгляд, очень важный вопрос. Тогда я провёл интервью с несколькими дата-сайентистами и руководителями data science, которыми восхищался, — некоторые из них были на два-три шага впереди меня, — похоже на то, как несколько месяцев назад я интервьюировал Alexey для серии informal mentors.
Alexey Grigorev: Ха-ха, я не на два-три шага впереди тебя.
Eugene Yan: Ключевой вопрос, который я им задавал: какие навыки нужны, чтобы быть эффективным дата-сайентистом? Экспертиза в предметной области, хакерские навыки ниндзя, исследования на уровне PhD, построение пайплайнов данных? Что именно? Ответ меня очень удивил. Хочет кто-нибудь угадать? … Видимо, все слишком стесняются.
Alexey Grigorev: Я попробую — бизнес-навыки?
Eugene Yan: Нет. Они говорили, что всему этому можно научиться. Но то, что действительно выделяло человека в команде, — это умение коммуницировать, умение писать, умение разговаривать с нетехническими людьми так, чтобы дела двигались.
Честно говоря, когда мне это впервые сказали, я подумал, что они просто шутят, что это ерунда. Но потом я решил: ладно, я их спросил, 80% говорят одно и то же. Попробую в течение года. И целый год каждый раз, когда нужно было что-то написать, я брался за это.
Так я писал год, и в тот же год я выступил на своём первом митапе — о соревновании Kaggle. И за этот год со мной произошло столько хорошего, что я решил: ладно, попробую ещё год. И в итоге это стало привычкой. Так что, если коротко: я начал писать около пяти лет назад, потому что люди сказали мне писать, потому что они говорили, что это важно для эффективности. Вот почему я это делаю.
Alexey Grigorev: И, кстати, Ricky в чате написал «коммуникация». Так что он угадал.
Eugene Yan: Да, он угадал, верно.
Alexey Grigorev: Да. И, наверное, это то, что тебя мотивирует, верно? Потому что, мне кажется, у меня похожая ситуация. Я знаю, что писать важно. Я знаю обо всех преимуществах, которые это даёт, — обо всех этих связях. И каждый раз, когда я что-то публикую, люди пишут мне и задают вопросы. Но всё равно писать очень трудно, потому что, ну, писать — это сложно.
Это требует много времени. Требует подготовки, а иногда приходится даже интервьюировать людей, чтобы собрать материал. Это много времени и усилий. И награда не приходит сразу. Так что да, нужно прикладывать много усилий, и делать это регулярно. Так что тебя мотивирует — эта награда или что-то другое?
Eugene Yan: Хороший вопрос. В конце 2020 года я провёл рефлексию. Я просмотрел все свои посты, и одна вещь сильно выделялась. Я понял, что главная причина, по которой я пишу, — это желание делиться.
Например, я делал свои проекты и рассказывал людям: вот так я очищаю данные Amazon, вот так я разворачиваю API. Ещё я писал о курсах, которые проходил в рамках онлайн-магистратуры по информатике в Georgia Tech. Я написал обзор каждого курса, потому что многие спрашивали, какие курсы хорошие, какие преподаватели хорошие. Вот я и написал. А когда я посещал конференции — а некоторые из этих конференций стоят дорого — мне хотелось поделиться своими заметками. Так что я просто писал и выкладывал в сеть.
И это была первая причина, и она очень приятная, потому что когда я делюсь и другие люди находят это полезным, это мотивирует меня писать ещё больше. Так что, к счастью, меня мотивирует именно это, и это поддерживает мою привычку писать.
Но по ходу дела я нашёл и другие причины писать. Alexey, ты и сам об этом упоминал. Иногда тебе кажется, что ты достаточно знаешь о чём-то, чтобы написать об этом. А когда садишься писать, понимаешь, что не знаешь ничего. Со мной это происходит постоянно. Я забываю детали. Поэтому я пишу, чтобы собрать все эти детали воедино и заполнить пробелы. И это ещё одна причина писать — учиться, систематизировать свои знания.
Недавно я применил эту технику к темам, с которыми был немного знаком, но хотел систематизировать знания, — например, обзор обработки естественного языка от RNN до Big Bird. А также к темам, которые были для меня новыми, например обзор платформ для обнаружения данных. И ещё — систематизация и рассказ о рекомендациях в реальном времени. Заставляя себя писать, я заставлял себя учиться — и это потрясающе.
Итак, я пишу, чтобы делиться, и пишу, чтобы учиться. И, наверное, последняя причина — совершенно замечательная, и именно она привела к этому разговору — нечто очень интересное происходит, когда ты пишешь в интернете. Люди начинают обращаться к тебе за обратной связью, обсуждать идеи. Они говорят: «Это очень полезно», «Вот эту часть можно улучшить».
И среди этих людей есть те, кто меня по-настоящему вдохновляет, и я очень благодарен за возможность пообщаться с ними — с моими кумирами, которыми я восхищаюсь в интернете. И именно это привело к нынешнему разговору с Alexey — чтобы рассказать о письме в интернете и помочь большему количеству людей.
Так что третья причина, по которой я пишу, — быть маяком. Я говорю: «Вот что мне интересно. Если вам тоже это интересно, я надеюсь, что вы поговорите со мной об этом. Я надеюсь на разговор, чтобы мы могли учиться друг у друга и вдохновлять друг друга». Я пишу, чтобы делиться, чтобы учиться и чтобы быть маяком.
Alexey Grigorev: Да, это здорово. Кстати, сейчас я вспомнил, как мы впервые общались в Twitter. И мой первый вопрос — ты помнишь, что я спросил?
Eugene Yan: Нет, не могу вспомнить. (Alexey засмеялся) Ты написал мне первый или я тебе?
Alexey Grigorev: Думаю, я написал тебе первый. Я спросил: «Слушай, а что ты используешь для блогинга? Я тоже хочу вести блог. Что ты для этого используешь?»
Eugene Yan: А, да.
Alexey Grigorev: Вот это ты и есть — маяк.
Eugene Yan: Ха-ха, точно. Кстати, если кому-то интересно, я использую очень простой фреймворк Jekyll и хощу сайт на Github Pages.
Alexey Grigorev: Да, это впечатляет. И особенно часть про обучение — я могу на 100% это подтвердить. Думаешь, ладно, это займёт два часа, я же всё знаю. Садишься, а через неделю пост всё ещё не закончен, потому что столько всего нужно проверить — особенно если это что-то техническое, фреймворки развиваются, что-то перестаёт работать. Но да, это тоже очень помогает учиться.
Alexey Grigorev: Мне любопытно, как ты пишешь? Мотивацию мы поняли — и это здорово, я полностью с этим согласен. Но интересен ещё и сам процесс. У тебя есть статья об этом, но я хотел бы услышать лично от тебя. Есть ли у тебя какой-то процесс, может быть? Как ты подходишь к написанию?
Eugene Yan: Хороший вопрос. Давайте сначала расскажу, как я писал неправильно. Когда я только начинал писать, я думал: ну вот, сядешь перед компьютером, начнёшь набирать текст, и выйдет что-то прекрасное. Но так не бывает.
И я думал, что всё, что я пишу, должно быть на 100% оригинальным — никто не должен был писать об этом раньше. Должно быть на 100% полезным. И, оглядываясь назад, я понимаю, что это очень, очень, очень высокая планка. Это сильно затрудняло мне процесс.
Так как я пишу сейчас? Я понял, что, во-первых, нельзя иметь такой настрой. Теперь мой настрой — «я пишу, чтобы делиться, учиться и быть маяком». И я осознал, что написание не начинается с написания. Начинаешь с чтения — читаешь то, что тебе интересно, изучаешь то, что тебе интересно, думаешь об этом и делаешь заметки. И теперь, когда я смотрю на это так, моё письмо не должно быть оригинальным. Не должно быть идеальным. Не должно быть на сто процентов полезным. И это значительно облегчает мне процесс.
Так как я пишу — ты имеешь в виду, как я выбираю темы или как я непосредственно работаю над постом? Что именно?
Alexey Grigorev: Да, твой процесс в целом. Допустим, ты хочешь написать о чём-то. Вдруг, скажем, ты гуляешь и к тебе приходит идея, или ты видишь твит о машинном обучении в реальном времени в Китае и думаешь: окей, вот об этом я могу написать. И вот у тебя есть идея. У тебя есть какие-то знания по этой теме, и ты хочешь написать. Что происходит дальше?
Eugene Yan: Обычно, когда у меня появляется идея для темы, я просто записываю заголовок в заметки. Пишу: «Эй, вот возможная тема». Сейчас в моих заметках около 50 тем, которые мне нужно постепенно разбирать, неделя за неделей.
Так как я пишу? Мой процесс довольно прямолинейный. Он начинается с дедлайна, который я себе ставлю. Я задаю себе срок в семь дней. Каждую неделю я стремлюсь опубликовать пост, в каком бы состоянии он ни был. Я публикую каждую неделю. Итак, начиная с первого дня, я просто выбираю тему. Пишу план (outline) — как я хочу структурировать материал.
Например, возьмём машинное обучение в реальном времени. Я хочу написать о том, почему не стоит делать рекомендации в реальном времени и почему это всё же может быть полезно, потом — как выглядят рекомендации в реальном времени, а затем — как сделать MVP самостоятельно. Это общая картина. Потом я начинаю добавлять тезисы. На это уходит примерно два часа.
На второй день я снова смотрю на этот план и переписываю его по памяти. Всё плохое и слабые идеи уходят, а новые приходят. И, может быть, на третий день — если меня устраивает план, я прекращаю итерации. Если нет — итерирую снова. Я повторяю это несколько раз, пока не буду доволен.
К субботе — шестому дню, когда времени на итерации плана уже не остаётся, — я вынужден писать прозу. Как я пишу прозу? Просто беру план… по сути, план к этому моменту уже очень подробный, всё на месте. Мне нужно лишь переписать его нормальным человеческим языком вместо тезисов, чтобы люди могли это читать. И подобрать иллюстрации. Так что к концу шестого дня у меня всегда есть проза. Иногда на это уходит 12 часов, иногда 6, но она всегда готова.
На седьмой день, после ночи сна, я перечитываю текст заново, упорядочиваю идеи, абзацы, предложения, нахожу иллюстрации и всё такое. К седьмому дню время истекает. Я обязан опубликовать. Если люди дают обратную связь, я могу ещё поправить что-то в понедельник-вторник, но обычно после этого останавливаюсь.
Ключевая часть этого процесса — итерации. Я в основном итерирую план. Почему именно план? Потому что итерировать прозу для меня занимает слишком много времени. Я слишком сильно переживаю за язык, структуру предложений и точные слова. Заставляя себя фокусироваться только на идеях, на плане, я улучшаю его и оставляю очень мало времени на работу с прозой. Вот мой процесс.
Alexey Grigorev: Это очень интересно. То есть если посмотреть на общее время написания статьи — сколько, по-твоему, уходит на план? 50 процентов?
Eugene Yan: Точно больше, я бы сказал, что на план уходит как минимум 50%, а иногда и 70%.
Alexey Grigorev: Значит, основная часть времени уходит на план, и мне теперь очень любопытно, как этот план выглядит, потому что для меня «план» — это три-четыре тезиса. Так как ты структурируешь этот план?
Eugene Yan: План — это, по сути, ключевые заголовки разделов. А под каждым заголовком — какой должна быть ключевая мысль каждого абзаца и, может быть, подкрепляющие аргументы и так далее. Вот и всё. На поздних стадиях план становится чем-то вроде самого содержания. Просто он не в форме абзацев. И это облегчает мне работу. Я просто заставляю себя писать тезисами.
Alexey Grigorev: Да, то есть у тебя уже есть все идеи, ты уже знаешь, о чём писать. Скорее всего, у тебя уже есть разделы, подразделы, даже абзацы — может, они уже есть в этом плане. И всё, что тебе нужно сделать на шестой день, — это взять эти тезисы и перевести их на нормальный, естественный язык.
Eugene Yan: Именно.
Alexey Grigorev: Ладно, логично. Это очень интересно, потому что мой подход совсем другой. Я сразу пишу прозу, а потом — ладно, этот абзац нужно удалить. И это суперневффективно и занимает кучу времени, а ещё удалять фрагменты из статьи ужасно сложно.
Я потратил столько времени, написал этот кусок, а потом вижу, что чтение займёт 20 минут. И я знаю, что никто не будет это читать, потому что это слишком долго. И приходится редактировать. Приходится удалять. И это делает процесс написания очень сложным. А твой подход — я думаю, мне определённо стоит его попробовать.
Eugene Yan: Полностью понимаю. Да, рекомендую. У меня та же проблема. Написание одного абзаца занимает у меня 20–30 минут, а тезисы писать элементарно, потому что мне всё равно — я всё равно их выброшу.
Alexey Grigorev: Да, мне ещё любопытно: ты сказал, что пытаешься восстановить план по памяти. Зачем ты это делаешь?
Eugene Yan: Допустим, ты прочитал книгу, и друг спрашивает: о чём она? Ты рассказываешь ему самое лучшее, самое важное, верно? Восстановление плана по памяти делает то же самое. Я запоминаю только лучшие части моей аргументации, лучшие части истории, которую хочу рассказать. И всё.
И иногда, после восстановления, я сравниваю два варианта бок о бок. Не упустил ли я ключевые моменты? Если я не смог что-то вспомнить, возможно, это не так важно. Восстановление по памяти — это как пропустить через нейронную сеть (если точнее — автоэнкодер): проходит только самое важное. И я делаю это несколько раз.
Alexey Grigorev: Да, это интересно, потому что у меня тоже проблема с тем, что я не могу полагаться только на память, и я собирался тебя об этом спросить. Но ты ещё упомянул, что всё-таки сверяешься с оригиналом. Как часто ты забываешь вещи?
Eugene Yan: Довольно часто. Я всегда провожу регрессионный анализ: лучше ли новый вариант старого? Наступает момент, когда разница становится очень маленькой. Вот тогда можно начинать превращать план в прозу.
Alexey Grigorev: То есть ты делаешь это каждый день? Каждый день пытаешься начать с нуля, с чистого листа?
Eugene Yan: Не обязательно. Зависит от ситуации. Бывают дни, когда я не успеваю закончить план, и тогда продолжаю на следующий день. Если накануне я завершил план, но ещё не доволен — пытаюсь переписать. Если доволен — начинаю писать прозу раньше, чтобы на выходных немного отдохнуть.
Alexey Grigorev: Отдых — это важно, особенно если тратишь столько времени на писательство.
Eugene Yan: Да, проблема в том, что я очень медленно пишу. Я очень медленно думаю. Поэтому мне нужно тратить на это много времени. Надеюсь, что если кто-то из вас пытается писать, у вас не будет такой проблемы, но у меня она есть. Вот почему итерации плана мне так помогают.
Alexey Grigorev: Да, это интересно, потому что когда читаешь пост и знаешь, что этот человек публикует каждую неделю, очень сложно представить себе весь этот процесс, всю работу, которую автору приходится проделывать. А ты говоришь, что медленно пишешь. И когда я захожу на твой блог и вижу, сколько ты публикуешь, это выглядит…
Eugene Yan: Ну, если подумать, это один-два часа каждый рабочий день утром. Это около семи часов. А на выходных — допустим, 13 часов плюс ещё пять часов на финальную редактуру. Итого около 25 часов в неделю. Так что да, это занимает прилично времени.
Alexey Grigorev: Ты ещё упомянул, что у тебя есть список тем — список идей, около 50 штук. Как ты выбираешь из этого бэклога, и откуда вообще берёшь идеи?
Eugene Yan: Когда я оглядываюсь на то, что написал, я вижу закономерность. Например, я пишу, когда вижу, что люди в чём-то не уверены. Когда я рассказываю, что моя команда работает по Scrum, мы используем Agile и Scrum, люди всегда спрашивают: как вы это делаете? Как это выглядит? И когда достаточно много людей спрашивают, я решаю написать об этом. Люди также спрашивают: как ты перешёл от психологии к data science? Столько людей спрашивают, что я просто решаю написать об этом. Мне задают много вопросов, и я пишу ответы на них — а они могут масштабироваться бесконечно.
Это один способ. Иногда я также пишу на темы, с которыми хочу поспорить. Например, я увидел пост на Reddit, где перечислялись 10 разных ролей в data science — data scientist, decision scientist, AI-инженер, AI product manager и т. д. Я не согласен. Я считаю, что дата-сайентисты должны быть более end-to-end, и Alexey думает так же — он считает, что дата-сайентисты должны быть более фулстек. Я думал, что моё мнение будет непопулярным — хотя Netflix и Stitch Fix придерживаются того же подхода, — но оно оказалось удивительно популярным.
Иногда я также вижу, что люди фокусируются не на том. Например, многие обращаются ко мне и спрашивают, важно ли писать. Они говорят, что написание документации занимает много времени. Я не согласен. Я считаю, что письмо становится всё более важным по мере продвижения по карьере. Иногда люди спрашивают: зачем читать статьи? Я не согласен. Нужно читать статьи, чтобы держаться в курсе своей области.
Так что я пишу, чтобы отвечать на вопросы, которые мне задают. А иногда, когда я заслужил достаточно доверия сообщества, я высказываю несогласие и делюсь своим отличающимся мнением.
Vaibhav: Можно вопрос? Он связан с тем, о чём спрашивал Alexey. Ты сказал, что думаешь примерно о 50 темах. Но при этом нужно закончить тему за неделю. Как ты расставляешь приоритеты среди этих 50 или N тем?
Eugene Yan: Я заметил, что людям, которые приходят на мой сайт, нравится читать про машинное обучение. Но, честно говоря, ребята, я не могу писать о машинном обучении каждую неделю. Мне это очень интересно, но не настолько, чтобы писать об этом еженедельно. Поэтому я стараюсь писать о машинном обучении раз или два в месяц, а в остальное время добавляю другие вещи, которые считаю действительно важными.
Например, на следующей неделе я хочу написать о том, почему не стоит проходить онлайн-курсы в 2021 году. Знаю, это спорно, но мы с Alexey много об этом говорили, и он, наверное, догадывается, почему я так считаю. Я хочу написать это. Просто сказать людям: ребята, есть более эффективный способ учиться. Потому что многие люди, когда разговаривают со мной, спрашивают: хороший ли этот курс, стоит ли пройти вот тот, нужно ли мне поступать в магистратуру.
Таким образом, единственный мой принцип приоритизации — хотя бы одна-две темы по машинному обучению в месяц. В остальное время — это сообщения, которые я хочу донести. Я представляю, что пишу для своих коллег по команде. Для своих менти. Какую свою точку зрения я хочу до них донести, чтобы помочь им стать более эффективными дата-сайентистами — и это не всегда связано с машинным обучением.
Alexey Grigorev: То есть ты держишь в голове образ целевой аудитории — человека, который будет это читать. И используешь ли ты это как-то в процессе написания — когда готовишь план, как ты это применяешь?
Eugene Yan: Отличный вопрос. Я пишу в основном для трёх групп людей.
Первый человек, для которого я пишу, — это я сам. Когда пишешь, нужно писать для себя, потому что, будем честны, никто это не прочитает. Если пишешь для себя, то хотя бы сам извлечёшь пользу — углубишь свои знания.
Второй человек, для которого я пишу, — моя жена. Я надеюсь хотя бы помочь ей понять, чем я занимаюсь.
Третий — мои нынешние и будущие коллеги по команде, а также единомышленники в сообществе. Я предполагаю, что это люди с небольшим техническим бэкграундом, может быть, с некоторым опытом в машинном обучении, люди, которые стремятся учиться и расти.
Иногда темы, о которых я пишу, не набирают большую аудиторию, не становятся популярными — например, статья о важности письма по сравнению с кодингом. Я считаю это очень важной темой, но она не получила столько внимания, сколько мне хотелось бы. Может быть, сообщество ещё не готово к ней. Но да, у меня есть конкретная группа людей. Мои будущие и нынешние коллеги в моей отрасли.
Evgeniy: Можно вопрос? Прежде всего, спасибо за такие подробности — мне многое откликается. У тебя очень организованный процесс работы над черновиком и концепцией. Мне интересно, бывает ли так, что наступает переломный момент, когда дальнейшее редактирование делает текст хуже? То есть иногда ты знаешь, что пора публиковать, и дополнительное время на редактирование только ухудшит результат? Или всё всегда линейно? Замечаешь ли ты нелинейности в своём процессе?
Eugene Yan: Хороший вопрос. Делают ли дальнейшие итерации текст хуже? Да, могут сделать хуже. Именно поэтому, когда я итерирую план, я всегда сравниваю варианты бок о бок. Какой из них лучше передаёт историю, послание, которое я хочу донести?
Когда я редактирую абзацы, я просто набираю новый абзац над старым и сравниваю их. Обычно мой критерий успеха — стало ли короче и передаёт ли все ключевые идеи? Если да — хорошо. Если стало длиннее и запутаннее, сложнее написано — значит, стало хуже, и я удаляю. Так что регресс возможен. Всегда стоит проводить своего рода регрессионный анализ, чтобы проверить — стало ли лучше.
Alexey Grigorev: Так вот что ты имеешь в виду под регрессионным анализом. Я как раз хотел спросить, связано ли это с линейной регрессией.
Evgeniy: А ты воспринимаешь свой результат как продукт — с дизайном, жизненным циклом, версионированием?
Eugene Yan: Да, воспринимаю. Я вижу свои тексты как маленькие посылки с заботой (звучит пафосно). Когда я пишу о чём-то, я действительно хочу помочь людям это понять. Если они не понимают — значит, я провалился. Значит, UX моего продукта плохой. Если я написал о продукте, а содержания нет, это бесполезно — значит, бэкенд плохой. Это очень сложно. И я не думаю, что когда-нибудь дойду до идеала. Но путь к этому — заставлять себя писать каждую неделю. И каждый год будет 50 итераций, точнее 50 разных продуктов, и я получу достаточно практики. Может, через 5–10 лет я стану достаточно хорош.
Alexey Grigorev: 5–10 лет… Если сейчас твои статьи настолько хороши, что же будет через 5–10 лет, ха-ха.
Eugene Yan: Через 5–10 лет я смогу написать то же самое за пять часов вместо двадцати.
Alexey Grigorev: Ты как-то пытаешься контролировать объём? Потому что лично для меня это проблема: у меня есть идея, но чтобы её раскрыть, нужно слишком много места, слишком много страниц. А я знаю, что люди с сегодняшним вниманием не будут это читать. Это для тебя проблема? И если да, как ты с ней справляешься?
Eugene Yan: Интересный вопрос. Я читал, и многие говорили мне, что идеальная длина статьи — около 1500 слов, это примерно 10 минут. И это средний порог внимания при чтении в интернете.
Но, честно говоря, раньше, да и сейчас, я об этом особо не думаю. Я хочу написать ровно столько, сколько нужно, чтобы передать суть и смысл. Иногда это всего 600 или 1000 слов — и отлично. Иногда нужно написать 4000–5000 слов, как в недавней статье о рекомендациях в реальном времени, — и я чувствую, что если вырезать хоть один абзац, теряется общая картина.
Я предполагаю, что моя аудитория — это люди вроде меня, мои будущие и нынешние коллеги, люди, которые хотят узнать о рекомендациях в реальном времени. Я исхожу из того, что им это действительно интересно и они будут читать. Я не ожидаю, что они прочитают всё за раз — они могут обращаться к тексту в любое время. Но, честно говоря, у меня нет максимального лимита по объёму. Я просто стараюсь быть как можно лаконичнее, потому что это ещё и уважение к времени читателей.
Alexey Grigorev: И, наверное, дедлайн в одну неделю помогает не перегружать текст информацией.
Eugene Yan: Да, определённо.
Alexey Grigorev: А для меня одна из самых сложных частей — когда ты уже закончил писать. Как ты это называешь? Как ты придумываешь заголовок? Может быть, ты делаешь это до начала написания? Как выглядит твой процесс придумывания заголовка?
Eugene Yan: Хм, я даю заголовки своим постам так же, как называю функции — максимально просто, чтобы никто не понял неправильно. Это непростая задача, я всё ещё учусь. Я просто пытаюсь составить фразу, которая объясняет, о чём текст. Это как писать документацию, как писать код.
Впрочем, я слышал, что есть и другие вещи, которые нужно учитывать, — например, SEO или как сделать так, чтобы люди кликали на заголовок чаще. Но обычно к воскресному вечеру, когда я публикую, у меня просто нет сил думать о заголовке, честно говоря. Так что я не вкладываю в это много усилий.
Alexey Grigorev: Когда мы планировали это мероприятие, я разговаривал с тобой, Eugene. И я сказал: хочу назвать мероприятие «Блогинг и техническое писательство». Но ты сказал: нет-нет-нет. Ты не сказал, что это скучно. Но ты предложил назвать «Важность письма в технической карьере».
Звучит намного лучше того, что предложил я. Это не просто суть — потому что «блогинг и техническое писательство» тоже передаёт суть. Но ты сделал это гораздо интереснее. И мы видим результат: если посмотреть на количество зарегистрировавшихся на это мероприятие, их больше, чем обычно. Так что с заголовком ты попал в точку.
Eugene Yan: Спасибо. Попробую объяснить, почему я назвал это именно так. Когда Alexey впервые обратился ко мне по поводу этого выступления, я подумал: вот отличная возможность побудить людей больше писать. А как побудить людей больше писать? Сказать, что это важно. И аудитория очень конкретная — люди из технической сферы, а технари очень сфокусированы на своей карьере.
Поэтому я хотел рассказать, почему письмо важно в технической карьере, и, надеюсь, убедить людей начать писать и практиковаться. Так и появился этот заголовок.
Alexey Grigorev: Логично. Опять же, ты держишь аудиторию в голове, когда придумываешь заголовок. Допустим, ты убедил всех — у нас сейчас 34 человека онлайн — начать писать. Что им делать дальше?
Eugene Yan: Просто начать писать. Знаю, не самый полезный ответ. Давайте расскажу о вопросах, которые мне задают. «Мне страшно писать в интернете. Можно ли писать об этом? Это просто пересказ статей, просто конспект книги. Будет ли это полезно? Достойно ли это публикации?» Скажу вам довольно жёсткую правду: вашу первую статью никто не прочитает. Так что, как говорят, «танцуй, как будто никто не смотрит» — пиши, как будто никто не читает. Это не важно. Вы пишете для себя, чтобы практиковаться.
Дальше — «о чём писать?» Многие тоже об этом спрашивают. Пишите о том, о чём сейчас думаете. О том, что у вас на уме, о чём не спится по ночам. Это не обязательно должно быть связано с карьерой. Это может быть о садоводстве. О рецептах. Не важно. Просто пишите.
Также некоторые говорят: «Мне нужно найти свою тему, свою нишу, чтобы писать». И я расскажу вам о примере Patrick McKenzie. Не знаю, знаете ли вы его. В Twitter он — patio11. Много лет он просто писал о том, что у него на уме. О компиляторах, Ruby, Java, о том, что происходит в Японии.
Но когда он оглянулся назад через несколько лет, он обнаружил, что тексты на стыке инженерии и маркетинга действительно находили отклик у аудитории. Так он нашёл свою тему. Но ему понадобилось несколько десятков статей и год-два, чтобы это понять. Всё как обычно — нельзя соединить точки, глядя вперёд. Только после того, как ты много написал, ты понимаешь, что тебя мотивирует, какие темы ты пишешь, — и тогда это происходит. Так что это долгосрочный процесс.
Alexey Grigorev: И одна рекомендация, которую я часто вижу в интернете в блог-постах: сначала нужно найти свою нишу. А ты говоришь — не заморачивайтесь с нишей, просто пишите обо всём, что приходит в голову. Садитесь за компьютер и начинайте писать.
Eugene Yan: Я бы сказал, что найти свою нишу полезно, но вы не найдёте её, пока не напишете много. А вот тогда найдёте. Это своего рода замкнутый круг. Люди не видят, что сначала нужно много писать, чтобы найти нишу, которая обнаруживается после того, как вы много написали и провели рефлексию.
Alexey Grigorev: Но при этом писать об одном и том же снова и снова тоже довольно скучно, правда?
Eugene Yan: Именно. Я не могу писать о машинном обучении каждую неделю. Мне это интересно, но у меня есть и другие важные интересы — карьера, процессы в data science. Поэтому я стараюсь писать и об этом. Так что свою основную тему я пока не нашёл, и это нормально, потому что я пишу для себя. Моя основная тема — это всё, о чём думает Eugene. Вот и всё.
Alexey Grigorev: А какие конкретно инструменты ты бы порекомендовал? Medium, WordPress, Jekyll? Что бы ты посоветовал?
Eugene Yan: Рекомендую то, что вам проще всего использовать. Многие тратят слишком много времени на поиск идеального домена, на идеальную настройку Hugo, Gatsby или Jekyll, чтобы всё было с CI/CD. Да ладно, ребята, время, которое вы на это тратите, лучше потратьте на писательство. Просто выберите то, что требует минимум усилий. Писать и так сложно. Уберите всю лишнюю работу и сосредоточьтесь на писательстве.
Когда я начинал, я использовал WordPress. Было очень легко просто начать писать. В какой-то момент я захотел кастомизировать тему, а WordPress этого не позволял. Поэтому я перешёл на собственный хостинг, но к тому времени я уже написал 50–60 статей. Инструмент — это последнее, о чём стоит переживать. Просто пишите и публикуйте. Substack, WordPress, Medium — всё, что снижает порог входа.
Alexey Grigorev: Думаю, Medium — это довольно просто. Там не нужно много делать — завёл аккаунт и пишешь (Eugene: Именно). С WordPress, возможно, потребуется больше настройки (Eugene: Угу). И у нас вопрос. Вопрос такой: предполагаю, что вы заняты. Как вы планируете и приоритизируете работу над текстами в своём ежедневном расписании?
Eugene Yan: Да, я занят, но… давайте расскажу немного контекста. С 2017 по 2019 год я проходил онлайн-магистратуру по информатике. В то время я тратил 20–40 часов в неделю на учёбу, параллельно работая. Когда я закончил, у меня внезапно появилась куча свободного времени. Тогда я и решил: нужно направить эту энергию куда-то ещё, — и решил направить её на писательство.
Это всего один-два часа в день, рано утром. Как зарядка, как медитация. Просто ежедневная привычка. Суббота — это когда я вовсю пишу прозу, а воскресенье — немного редактирую. Я нахожу время погулять, и, к счастью, у меня очень понимающая жена. Я думаю, это реально. И не обязательно тратить столько времени — можно писать короткие заметки, может быть, на 500 слов. Просто начните с малого. Начните с того, что вам комфортно.
Alexey Grigorev: Или твитить.
Eugene Yan: Да, просто твитить.
Alexey Grigorev: Ха-ха, на самом деле твиты ещё сложнее — из-за ограничения по длине. (Eugene: Это правда.) Кстати, о Twitter: вчера я написал твит, что ты расскажешь нам секретный рецепт писательства, ха-ха.
Eugene Yan: Ха-ха, у меня нет секретного рецепта. Честно, когда я проснулся сегодня и увидел твит Alexey, я подумал: «Чёрт, у меня нет секретного рецепта». Но я был полностью открытым и честным. Может быть, подход с итерацией плана — это и есть мой секретный рецепт. Не знаю. Люди говорят, что это для них ново. Но нет, у меня правда нет секретного рецепта.
Alexey Grigorev: У нас вопрос — как ты сделал свой блог популярным? Что ты делал, чтобы привлечь людей, чтобы они приходили, читали и потом связывались с тобой?
Eugene Yan: Не знаю. Я бы хотел знать ответ, чтобы повторить. Я писал, потом писал об этом твит. Потом копировал тот же твит и публиковал его в LinkedIn. И всё. Люди, которые видели, иногда распространяли. Вот и весь секрет.
Это мой единственный канал дистрибуции, потому что составить твит — это уже немало усилий. Я просто напишу 280 символов и опубликую — и всё. Со временем я нашёл единомышленников, которые читали мои тексты. Я не прикладывал к этому особых усилий, честно, и не думаю, что мой блог очень популярен. Но я хотя бы благодарен за то, что нашёл людей с теми же интересами, которые могут со мной это обсуждать.
Alexey Grigorev: Ну, ты говоришь «не популярен», но сколько раз ты попадал на первую страницу Hacker News?
Eugene Yan: А, не помню. (Alexey: Значит, настолько много раз, ха-ха.) Честно, но Hacker News — это совсем другое. Hacker News любит споры. Думаю, мой пост был типа «Хватит делать обычные заметки, используйте Zettelkasten», и люди спорили: «О, этот Zettelkasten — очередная мода». Вот почему.
Alexey Grigorev: Да, но думаю, там был не один пост — ещё твой пост о том, что data science должна быть более end-to-end. Но, по крайней мере, похоже, что секретный рецепт — это несогласие. Найди то, с чем люди не согласны.
Eugene Yan: Возможно. И теперь, когда я об этом думаю, может быть, настоящий секрет в том, что я выпустил очень много стрел. Кажется, в прошлом году я написал 55 эссе, и, ну, три из них попали в цель. Так что мой показатель попаданий — примерно 2,5–5%. Если стреляешь много, что-то да случится.
Alexey Grigorev: По сути — постоянство.
Мы ещё хотели поговорить не только о письме для внешней аудитории в интернете, но и о внутреннем — на работе. И это тоже важная часть карьеры: мы не только весь день пишем код. Нам нужно общаться с другими людьми, а письмо — это форма коммуникации. Когда мы пишем документацию, нам всегда нужно думать о читателе. Это не просто что-то второстепенное. Так что ты думаешь о писательстве на работе — почему это важно и как к этому подходить?
Eugene Yan: Почему писательство на работе важно? Это очень большой вопрос.
Alexey Grigorev: Скажем так: зачем проекту нужна документация?
Eugene Yan: Давайте расскажу вот как. Перед тем как начать проект, нужно обсудить свою идею и проверить её с другими людьми. Возьмём документ, которым славится Amazon. Он называется «пресс-релиз». Перед началом проекта мы пишем пресс-релиз. Например, пресс-релиз для Amazon S3 мог бы звучать так: высокомасштабируемое хранилище по очень низкой цене. Мы рассылаем его внутри компании. Людям это интересно? Если да — может быть, этот продукт имеет шансы. И это ещё до начала написания кода. Сначала мы тестируем идею на аудитории.
А после того как вы решили реализовывать идею — если пресс-релиз сработал — вы, возможно, пишете так называемый дизайн-документ. Знаю, софтверные инженеры хорошо с ним знакомы. Дизайн-документ — это, по сути… допустим, я напишу дизайн-документ для рекомендаций в реальном времени: как я буду обучать модель, как буду обслуживать модель, каковы мои бизнес- и технические требования по задержке, пропускной способности, стоимости. Я пишу это и снова рассылаю.
Таким образом, письмо на работе даёт вам возможность тестировать свои идеи в масштабе до написания любого кода. И это очень мощный инструмент. Сначала вы проверяете с точки зрения клиента: интересна ли идея? Потом проверяете реализацию: возможно ли это? Полезно ли? Вы сверяетесь со своими ведущими инженерами, коллегами и убеждаетесь, что это работает.
И документация. Alexey упоминал о документации. Лично я очень забывчивый. Если я написал код, через полгода я точно его забуду. Буду смотреть на свой код и думать: «Что этот идиот Eugene тут понаписал? Зачем он это так реализовал?» Так что документирование кода — это как сообщение от меня из прошлого самому себе: «Эй, тебе может показаться, что это глупо, но вот причина. Данные до этой даты выглядят вот так. Или мне пришлось оптимизировать код, чтобы уложиться в требования по задержке». Вот что даёт документирование кода.
То же самое с документированием проектов. Почему мы выбрали DynamoDB, а не Redis? Какие плюсы и минусы у каждого варианта? Где журнал решений? Почему мы выбрали Flink, а не Spark? Вы знаете все ответы. Или, по крайней мере, вы провели исследование. Всё это у вас в голове. Но нужно записать — чтобы самому помнить и чтобы поделиться знаниями с командой.
Надеюсь, это отвечает на вопрос. Письмо важно на работе для проверки идей через пресс-релиз, для проверки дизайна через дизайн-документ. Вы документируете на работе, документируете свои решения, чтобы знания не терялись. И это помогает масштабировать знания более эффективно.
Alexey Grigorev: А ещё, как ты сказал, ты пишешь для своего будущего «я». Потому что можно забыть что угодно. Мне это очень знакомо: я знаю, что если выполню эту последовательность команд в терминале, через пару дней я их забуду. Мне нужно записать. Чтобы в следующий раз, когда нужно сделать то же самое, я мог просто скопировать и вставить. Ещё хотел спросить — ты упомянул пресс-релиз и дизайн-документ. Это то, что в Amazon называют «работа от обратного» (working backwards)?
Eugene Yan: Пресс-релиз — это часть процесса working backwards. Процесс working backwards — это не совсем секрет. Он есть в открытом доступе. По сути, working backwards — это именно то, что следует из названия: мы работаем от обратного — от клиента. И это правильный подход. Мы стараемся понять, в чём проблема клиента, каков потенциальный спрос, и работаем от этого. Альтернативный подход — мы строим, а люди используют, потому что то, что мы строим, настолько крутое. Но, знаете, обычно это не работает. Вот что такое working backwards.
И Alexey, ты часто об этом говорил. Сначала проведи исследование. Пойми, в чём проблема клиента, прежде чем обучать модель для её решения. Если это не проблема, или потенциальная экономия или выручка незначительны, не стоит тратить на это ресурсы. Мы работаем от обратного.
Пресс-релиз в процессе working backwards помогает нам сфокусировать идею вокруг одной центральной мысли. Для S3 — мы хотим предоставить высокомасштабируемое, быстрое и дешёвое хранилище. И команда строит работу вокруг этого.
Думаю, для Alexa первоначальный пресс-релиз был: «Вы можете включить музыку голосовой командой». Изначально — только это. Включение музыки голосом. Но со временем, конечно, продукт стал очень популярным и разросся: можно заказывать продукты, задавать вопросы, управлять освещением. Но пресс-релиз, первый пресс-релиз — это просто проверка рынка. Интересно ли это людям? Интересно ли это внутренним стейкхолдерам? Вашим вице-президентам, директорам — готовы ли они направить ресурсы на это исследование?
Alexey Grigorev: Да, логично. И письмо — важная часть этого процесса, верно?
Eugene Yan: Да. Уверен, все знают — или, по крайней мере, большинство — что в Amazon нет слайдов. Мы не используем PowerPoint. По крайней мере, в большинстве случаев. Мы пишем документы, и это позволяет очень легко масштабироваться. Чтобы поделиться чем-то, не нужно быть на месте и презентовать полчаса — можно просто отправить документ, и люди прочитают его. Это экономит массу времени.
Конечно, написание документа занимает много времени. Но однажды написав, вы практически никогда не повторяете эту работу. В отличие от презентации — вам каждый раз нужно быть на месте и выступать, или записать себя на видео, не знаю. Но могу сказать: этот процесс работы с документами очень полезен, и он будет со мной, куда бы я ни пошёл. Я буду применять ту же практику.
Alexey Grigorev: Думаю, у нас ещё есть немного времени, и у меня есть ещё один вопрос. Я хочу спросить тебя о писательстве для портфолио. Допустим, вы сделали отличный проект — скажем, соревнование Kaggle, финишировали в топ-20, топ-30, с медалью, и хотите выложить весь код на Github. Что вы делаете, что нужно написать в README, чтобы люди сразу увидели ценность?
Eugene Yan: Давайте подумаем. Представьте: я ищу на GitHub код для какого-то соревнования Kaggle. Что я найду? Сотни репозиториев по этому соревнованию. Что отличит один репозиторий от другого?
Я думаю, наличие README полезно. README, который рассказывает, как начать использовать этот код, как быстро запустить, как установить, есть ли requirements — это действительно полезно. И, может быть, описание основных этапов: подготовка данных — в этой папке, машинное обучение — в этой, валидация — в этой. Думаю, базовый README, который всё это объясняет, — этого достаточно.
Дальше — представьте это с точки зрения нанимающего менеджера. Если они собираются вас нанять, вы, конечно, должны уметь писать код. Но вопрос в другом: умеете ли вы документировать код и рассказывать о нём? Когда они читают ваш код, имеет ли смысл документация? Когда читают ваш README, понятно ли всё? Объясняете ли вы достаточно хорошо, чтобы у них была уверенность, что вы сможете делать то же самое на работе? Думаю, это было бы полезно.
Alexey Grigorev: Ладно, у нас заканчивается время, и тебе, наверное, пора. Большое спасибо, что пришёл сегодня, поделился своими знаниями и раскрыл свой секретный рецепт. Мне нравится, что ты делаешь по-своему, и это заслуживает такого названия. Я попробую следовать твоему процессу и посмотрю, что получится. Думаю, это будет намного лучше того, что я писал раньше.
Eugene Yan: Спасибо. Надеюсь, что так и будет. Спасибо, Alexey. Спасибо всем.
Отлично поговорили с @Al_Grigor о важности письма в технической карьере. Мы обсудили:• Мотивацию для писательства• Мой процесс написания (итерации плана)• Как начать писать• Культуру письма в Amazon• И многое другое...👇https://t.co/5GJ8IAxJ29— Eugene Yan (@eugeneyan) 19 января 2021
Если это было полезно, пожалуйста, цитируйте этот материал как:
Yan, Ziyou. (Jan 2021). DataTalksClub - The Importance Of Writing In A Tech Career. eugeneyan.com. https://eugeneyan.com/speaking/writing-for-a-tech-career/.
или
@article{yan2021datatalk, title = {DataTalksClub - The Importance Of Writing In A Tech Career}, author = {Yan, Ziyou}, journal = {eugeneyan.com}, year = {2021}, month = {Jan}, url = {https://eugeneyan.com/speaking/writing-for-a-tech-career/} }
Присоединяйтесь к 11 800+ читателям, получающим обновления о машинном обучении, рекомендательных системах, LLM и инженерии.