Мы знаем, что про код писать сложно, но хотим, чтобы посты с ним на Хабре становились всё лучше. Поэтому на ежегодном хабраконкурсе «Технотекст-2021» мы поддержали номинацию «Программирование». А ещё создали коллекцию советов — как написать крутой пост про свой код и порадовать этим постом хабрааудиторию.  Мы пройдём по основным шагам работы с текстом и покажем, как работать с темой, форматом и структурой. Научим техноавторским приёмчикам. А в пример приведём посты из нашего блога — и отличные материалы участников «Технотекста-2021».  В работе над статьёй можно выделить несколько этапов: Выбор темы; Выбор формата; Работа над структурой статьи (создание тезисного плана); Работа с текстом; Оформление поста; Публикация и наслаждение реакцией аудитории. И на каждый этап у нас есть советы и рекомендации, как можно сделать свой пост интересным. Да, писать на интересные и редкие темы — самый очевидный способ привлечь внимание читателя к своим статьям. Например, вот статья про языки программирования на эмодзи. В ней и экскурс в историю смайликов, прародителей эмодзи, и освещение самых интересных эмодзи-языков, и даже полезные советы, как с помощью эмодзи сделать код живее. Почитать такой материал будет интересно даже тем пользователям Хабра, которые не интересуются кодом. Всё-таки не зря пост соединяет рабочую направленность и тему, с которой мы все сталкиваемся ежедневно. А опытные разработчики почерпнут из материала практическую пользу в разделе советов. Тот, кто пишет на не освоенные другими авторами темы, следует одному из основных правил маркетинга: не борется за место под солнцем с десятками и сотнями конкурентов, а первым занимает пустующую нишу. У таких авторов шансы на успех просто статистически выше, чем у более консервативных конкурентов. В каких же областях искать эти новые и интересные темы? Программирование — огромный хаб, но чаще всего статьи с кодом в него пишут о Python, JavaScript, разработке веб-сайтов, C++, машинном обучении, Java, алгоритмах, Open Source, .NET и C#. Начинающему автору полезно почитать эти хабы и прикинуть, что в них ещё не освещено. Итак, вы придумали тему, которая интересна и вам, и читателям Хабра. Теперь самое время сфокусировать свою авторскую экспертизу так, чтобы ваш текст принёс сообществу максимальную пользу. Для этого нужно определиться с форматом. Например, пост из нашего блога о том, как создать микросервисное приложение за 15 минут, — это инструкция. Жанр заметен уже из заголовка. Сразу ясно, что текст прежде всего рассчитан на людей, которые хотят научиться быстро создавать микросервисы. Любой, кто нуждается в этих знаниях или просто интересуется темой, захочет его прочитать и положит в закладки. На Хабре много разных форматов. Например, кейс — это рассказ о том, как вы сделали что-то полезное. В кейсах разбираются теоретические идеи. У инструкции цель иная — помочь сделать что-то полезное вашему читателю. Статьи-подборки приводят перечни экспертных материалов на узкую тему. Реализация этих форматов будет разной: внутри инструкции читателю нужны описания шагов с примерами кода, а в подборке достаточно описания и собственного мнения. В результате одну тему можно будет раскрыть либо с помощью кода, либо с помощью текста. Например, вот так одна тема будет выглядеть в разных форматах: Формат Заголовок Кому интересно Кейс Как мы научились запускать 10-часовые UI-тесты за 5 минут Почти все QA-инженеры и те, кто с ними работает Инструкция Расписываем по шагам, как запускать 10-часовые UI-тесты QA-инженеры Подборка 100 и 1 способ ускорить UI-тесты при большом числе релизов в день QA-инженеры Обзор Основные способы ускорения UI-тестов QA-инженеры, разработчики Анализ Основные ошибки при ускорении UI-тестов QA-инженеры, разработчики Ретроспектива Как менялся подход к ускорению UI-тестов за последние 15 лет Все разработчики, которые любят поностальгировать Нет одного лучшего, самого полезного хабравчанам формата. Его нужно подбирать по ситуации. Но если бы пост-пример был сделан в формате кейса и назывался «Как мы в Сбере научились быстро создавать микросервисы», то он был бы ориентирован совсем на другую аудиторию (например, тимлидов) и рассказывал о другом. Это надо учитывать. Истории не просто так занимают важное место в человеческой культуре. Нашим сознанию и подсознанию нравится, когда набор событий складывается в стройное повествование с очевидными началом, серединой и концом, интересными действующими лицами и набором проблем, которые эти действующие лица успешно (или не очень) преодолевают. Не просто так ведь некоторые айтишники думают о багах как о живых и весьма зловредных существах, а подготовку к каждому релизу описывают в красках, достойных сай-файного эпика. Эта структура помогает лучше проанализировать и усвоить полученную информацию. Возьмём для примера: как IT-команда Сбера научилась комфортно укладываться в сроки, нужные бизнесу. В нём интересно и ясно упорядочена история наших разработчиков: как IT-отдел подписался на новый проект, как потом из-за неправильного подхода к работе с бизнес-отделом в этом проекте возникли препятствия и как эти препятствия в итоге удалось преодолеть. Герои статьи встретились с проблемой, которая нарушила их привычное существование, и после многих трудностей разрешили её. Классическая история, почти греческий миф. Часто читателям в постах на Хабре не хватает контекста. Распространённый вопрос в комментариях: «А почему вы вообще сделали всё так, а не иначе?» Частные варианты этого вопроса тоже многочисленны. Почему пользовались конкретным языком программирования? Зачем снабдили программу именно таким набором костылей? Используя сторителлинг, вы будете отвечать на эти вопросы внутри поста. Потому что будете писать про код не абстрактно, а в контексте вашей конкретной рабочей ситуации. С другой стороны — избежите лишнего осуждения комментаторов: «Я бы сделал лучше, автор просто зелёный джун, посту минус». Того, кто объяснил причины своих поступков, куда сложнее обвинить в нехватке опыта и навыка. Вместо этого вы сразу сможете перейти к конструктивному диалогу. Как оформить сторителлинг в посте? Полезно придерживаться трёхактной структуры, самой распространённой формы сторителлинга. Она довольно проста. Начало (у нас появилась определённая задача и нам нужно её выполнить) → середина (выполняем эту задачу, сталкиваемся со всё более серьёзными препятствиями) → конец (задача выполнена/не выполнена, но из работы извлечён полезный опыт/выполнена не так, как предполагалось в начале, но вышло даже лучше). Проходим всё тот же мифологический путь героя — из привычной жизни через испытания к победе. В начале истории необходимо чётко обозначить решаемую проблему: читатель должен понимать, что конкретно вам нужно сделать и в каких условиях. Чтобы история была интересной, читатель должен понимать потенциальные риски и важность решаемой проблемы. Материал сразу захватывает внимание, если в нём, например, с начала понятно, что без этой фичи или действий всё встанет, клиенты обидятся и уйдут, а автора из тёплого офиса отправят поднимать народное хозяйство. Содержание поста — очевидно, самый важный его элемент. Если информация в материале будет скучной и банальной, никакие ухищрения его не спасут. Чтобы читателям было интересно, нужно соблюдать в тексте баланс фактов и стиля.  Проще говоря, пишем не слишком сухо, но и не теряем в завитушках суть поста. И по ходу поста повышаем градус информативности. Вот в «CSS-in-JS в Angular или всё-таки CSS?» автор завлекает читателя стилем и лёгкостью. А ближе к концу, когда читатель уже погружён в тему, на первое место выходит фактология.  Тому, кто читает подобный материал, приятно, что текст написал не бездушный робот, а именно эксперт-человек. Что автор не только много знает, но и умеет свои знания интересно передавать. Поэтому для рассчитанного на широкую аудиторию поста очень подходящий стиль — интеллектуальный рассказ из айтишной курилки. Важная часть фактологии — фактчекинг. Да, вы в своей теме про. Вы на ней собаку съели. Но всё же перед тем, как запостить материал на Хабр, проверяйте себя. Наверное, все в курсе, что IT-аудитория в России не стесняется указывать авторам на их фактические и технические ошибки в текстах. Кто забивает на фактчекинг, тот потом долго с горечью и обидой собирает минусы от язвительных хабравчан.  А как быть, если, несмотря на все ваши проверки, читатели всё же заметили в посте недочёты и ошибки? Честно признайте это в комментах и поправьте материал, как сделал автор текста про собеседование Golang-разработчика. Он по замечаниям комментаторов не только устранил мелкие описки и ошибки в коде, но и дополнил материал, расширив раздел Const в Golang. Когда вы пишете пост на Хабр, то пишете его для своих. Айтишников, которые в теме. Но уровень опыта и порог, после которого голова закипает от информации, у всех разный. Поэтому, когда уходите в дебри экспертности, всегда рискуете для многих остаться непонятым.  Если хотите, чтобы ваш материал прочли до конца, а не бросили на середине, лучше говорить о сложном просто. Не нужно упрощать саму тему, но текст вокруг кода должен быть максимально понятным. Чем больше ваших коллег прочтёт этот текст без лишних стрессов и напряжения, поймёт и получит от вашего материала конкретную пользу, тем лучше.  Наш пост о том, почему принцип единственной ответственности не всегда работает, полон кода и обсуждает довольно сложный вопрос. Но в тексте простой язык и уделено время объяснению базовых понятий. Почему? Как признаёт автор, недопонимание этого принципа — типичная ошибка новичка. Значит, нужно, чтобы эти самые новички могли в посте разобраться.  Хороший материал — это круто поданная и описанная конкретная идея. А если внутри одного-единственного поста, даже большого, написать про всё и сразу? Выйдет несфокусированно, читатель с трудом вспомнит, о чём именно вы рассказывали.  Без стеснения отсекайте идеи, которые не относятся к основной теме вашего поста. А если чувствуете, что отсечённое очень важно, лучше потом напишите об этом другой материал. Автор поста «Властелин структур» в самом начале текста ссылается на свой прошлый материал по близкой теме. Вместо того, чтобы сразу нагружать читателей основами абстрактной алгебры и продвинутыми экзерсисами в ней же, он написал два раздельных текста. Это не повлияло на количество плюсов, закладок и комментов ко второй статье. Читатели смогли постепенно разобраться в теме: разделение на два сфокусированных поста упростило её понимание. Как сочно представить читателям ваши интересную тему, точно подобранный формат, мощный сторителлинг и убойный текст? Необходимо максимум внимания уделить заголовку, докатному тексту и заглавной картинке. В ленте на Хабре аудитория увидит не ваш прекрасный пост целиком, а только эти три элемента: название поста, немного текста и картинку. Поэтому увлекательные заголовок и лид с сочной картинкой — ваше всё. Если эти три фактора читателя заинтересуют, то он, скорее всего, перейдёт под кат и прочтёт материал. Если же лид с заголовком сухи и скучны, а картинка обыденна, читатель зевнёт, пролистнёт ленту и забудет про ваш пост. Пусть даже его содержание чрезвычайно ценно и полезно. Если бы пост «Old Skull — фронтенд-фреймворк из альтернативной вселенной» назывался «Делаем бенчмарки Old Skull, основанного на Backbone.js, сравниваем с React и Angular», то вызвал бы куда меньше интереса. Поэтому автор нагнал интригу: и фреймворк у него из иной вселенной, и на альтернативу современной веб-разработке в посте можно посмотреть, и картинка под стать — похожа на пугающий кадр из триллера или фильма ужасов. Просто невозможно не перейти под кат.  Хорошие сфокусированные заголовок, докатный текст и заглавная картинка должны привлекать именно ту аудиторию, под которую вы писали текст. Пост про и для джунов? Смело заявляйте об этом на старте.  Как сделать крутые заголовок, докатный текст и заглавную картинку? Вынесите в них самую яркую и необычную идею вашего материала. В посте-примере это мысль о том, что Old Skull — пришелец из другой вселенной, где веб-разработка развивалась иначе.  Или поставьте перед читателем неожиданный и вроде бы абсурдный вопрос. Например, представьте научную гипотезу происхождения Карлсона. И предложите разобраться вместе. Кликбейтить тоже можно, но осторожно, не забывая о содержательности и пользе. Если самой интересной частью вашего поста окажется отображение в ленте, то вы отхватите минусов.  Подкованный в теме читатель хочет быть на равных правах с автором. Уважьте его желание. В зависимости от формата вы можете пригласить читателей поработать с кодом в вашем посте и написать об успехах в комментариях. Или, например, пройти тест, как сделали мы в материале «Нужно больше топлива!».  Взаимодействие заставит читателей глубже погрузиться в ваш текст. Если вы поставили перед хабравчанами интересную задачу, то будьте уверены — они сконцентрируют все силы на поисках креативного решения.  Даже большей популярностью, чем тесты, пользуются задачи, допускающие множество решений. Самый распространённый тип таких задач — оптимизация нестандартного кода. Часто их сочетают с двумя столпами программерского быта: уже упоминавшимся FizzBuzz и игрой «Жизнь». Если вы умеете создавать элегантные программерские задачки — без стеснения предлагайте их Хабру. Комьюнити оценит. Значительная часть Хабра — разработчики с большим опытом. И они очень любят этим опытом делиться. Поэтому в комментарии к посту обязательно придут разбираться в вашей работе и предлагать свою экспертизу. Если вы написали крутой сфокусированный пост, вряд ли в него вошли все детали до единой. Разъясняя их в комментариях, отвечая на вопросы читателей, вы делаете материал лучше и полнее, не жертвуя при этом качеством основного текста.  На комменты важно и нужно отвечать, как это делает автор «IO_URING. Часть 1. Введение». Это будет долго привлекать людей к вашему блогу . Аудитория увидит, что вы не просто вбрасываете мнение, а готовы к диалогу. Вам должен быть интересен отклик, чужое мнение. Читатель, на чей коммент вы ответили, скорее всего зайдёт почитать и следующий ваш пост, а там и на блог подпишется.  Как мы используем эту схему и готовим тексты на Хабр Мы понимаем, что хабравчанам нужны не поверхностные обзоры и маркетинговая хвала продуктам, а интересные тексты и конкретная польза. Поэтому каждый наш материал создаётся по уже описанным выше правилам:- содержит максимум полезной информации и конкретики: код, ссылки, скриншоты, названия, имена;- раскрывает одну тему, имеет логичный план и чёткую структуру с небольшими абзацами, нумерованными и маркированными списками;- написан простым языком для людей, а не для поисковых роботов.- Наши авторы — не копирайтеры, а разработчики, тестировщики, ML-инженеры, тимлиды. Словом, практикующие специалисты. Они проводят фактчекинг своих материалов самостоятельно и в команде с коллегами, а финальный текст помогают формировать редактор и корректор.- По словам авторов, часто самая сложная креативная задача — придумать заголовок. Он должен быть одновременно кратким, информативным и примечательным. Отлично, если в него можно добавить метафору или отсылку, например к названию книги. Это привлекает внимание и добавляет материалу новые смыслы.У нас есть излюбленные форматы:- Кейсы работы с фичами, сервисами или технологиями от первого лица. Например, недавно именно так мы писали о Scrum-практиках.- Пошаговые инструкции, которыми может воспользоваться любой. Как этот материал про работу с инструментом SDK.- Глубокие обзоры, в которых мы обширно раскрываем ту или иную тему, - разбираемся в истории и копаемся в малоизвестных фактах. Такой вышла публикация про бумажный интернет.- Ретроспективы и мнения наших сотрудников. Здесь они рассказывают, как перешли в IT из других профессий.Чтобы сделать статьи про код нескучными, наши авторы используют сторителлинг: живо описывают свою работу, рассказывают историю с неожиданными сюжетными поворотами. Мы сохраняем тексты информативными, но при этом увлекательными, не перегружая читателя данными и не давая отвлечься от основной темы. И конечно, мы поддерживаем живой диалог в комментариях и принимаем критику. Читатели делятся опытом. Этот взгляд со стороны помогает нам исправить недочёты и учитывать их в будущих материалах. Мемы — универсальный язык современности. В том числе в IT-среде. Так что не нужно бояться их использовать и вообще шутить в своих материалах. Даже если мем в посте всего один, как в материале про войну с компилятором и оптимизацию вещественной арифметики на Эльбрусе, это уже прекрасный почин. Ведь мем — отличное средство разбавить монотонное течение поста. Когда материал полон сложного кода — внимание читателя постепенно рассеивается и теряется в непрерывном потоке знаний. Мемы служат естественными передышками. Удачно подобранный, а тем более созданный самим автором мем поможет читателю расслабиться, немножко поржать и вновь в полную силу воспринимать поток серьёзной информации. И не стоит забывать, что аудитория ценит смешные шутки. Опытным хабравчанам они показывают, что вы шарите в теме, более юным — помогают не чувствовать себя лишними. Ведь мемы просто и сжато доносят сложную информацию даже до тех, у кого сравнительно мало опыта в сфере. Как и чисто развлекательные посты, мемы внутри серьёзного материала убеждают читателей, что вы свой среди своих. Как подойти к наполнению текста мемами? Не перебарщивайте, одного-двух на пост будет достаточно. Мемы должны кратко и чётко отражать суть вашего поста, а не быть самоцелью. Не стесняйтесь использовать известные мемные форматы, даже устаревшие. Шутки на узкие IT-темы могут из замшелого баяна сделать новую классику. В качестве пробы покажите своё творчество друзьям/коллегам: пусть оценят, насколько смешно получилось. После редактуры — смело кидайте готовые мемы в пост. Все мы уважаем fun. Серьёзные бородачи-программисты — отнюдь не исключение. Они листают Хабр не только по работе, но и ради отдыха, чтобы переключить внимание, расслабиться и вновь взбодриться. Хороший развлекательный материал о процедурной генерации бумажных снежинок способен снискать у них уважение, гору плюсиков и закладок.  Да и как не порадоваться этому рассказу? Айтишник перед Новым годом развлекается тем, что учит алгоритм генерировать красивые бумажные снежинки. Кода в посте много, но, поскольку тема развлекательная, а автор подходит к делу с фантазией, читать легко и совсем не скучно. Подобные посты также покажут хабравчанам, что вы свой среди своих. Для вас IT и программирование — не просто рутинный способ зарабатывать деньги в режиме 5/2. Это ваш стиль жизни. Как создать такой пост? Наводка тут одна. Примените свой профессиональный опыт в оффтопной теме. Задумывались, как устроен советский микрокомпьютер? Писали FizzBuzz максимально астральным методом? Расскажите об этом аудитории Хабра, она оценит.  Вот так и создаётся интересный материал с кодом внутри: от зарождения в виде темы до публикации на Хабре. Мы, конечно, расписали далеко не всё, что помогает нашим авторам и авторам других блогов на Хабре создавать крутые посты про кодинг. Так что в комментариях приглашаем вас рассказывать о любимых приёмах — и делиться текстами с кодом, которые вас чем-то зацепили.