Rain Lag

Двухколейный журнал разработчика: разделяйте заметки, чтобы запоминать и то, что вы изучаете, и то, что вы отправляете в прод

Узнайте, как простой «двухколейный» журнал разработчика — с разделением между тем, что вы изучаете, и тем, что вы выкатываете в прод — превращает разрозненные заметки в личную базу знаний, ускоряет понимание и делает ваш прогресс как разработчика наглядным.

Двухколейный журнал разработчика: разделяйте заметки, чтобы наконец запоминать и то, что вы изучаете, и то, что вы отправляете в прод

Большинство разработчиков ведут какие‑то заметки: случайные фрагменты в Notion, загадочные комментарии в коде, скриншоты в папке с названием stuff или кладбище наполовину заполненных markdown‑файлов.

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

Неожиданно простое решение: разделите свои заметки о разработке на два независимых трека:

  1. То, что вы изучаете (концепции, идеи, паттерны)
  2. То, что вы шипите (фичи, баги, задачи, коммиты)

Это и есть двухколейный журнал разработчика (Two‑Track Coding Log). Он лёгкий, не требует сложной поддержки и со временем превращается в мощную личную базу знаний — подогнанную под то, как именно вы учитесь и пишете код.


Почему ваши текущие заметки не приживаются

Обычно заметки по коду пытаются быть всем сразу:

  • конспекты туториалов и курсов
  • скопированные ответы с Stack Overflow
  • отчёты о багах или TODO‑заметки
  • идеи по дизайну и наброски архитектуры

Когда всё это перемешано, всплывают типичные проблемы:

  • Ничего нельзя быстро найти. Заметки «как работают промисы» лежат где‑то между заметками по деплою и случайными shell‑командами.
  • Не видно повторяющихся паттернов. Вы раз за разом чините один и тот же класс багов, но он так и не превращается в узнаваемый урок.
  • Прогресс не ощущается. Вчерашняя работа выглядит как сегодняшняя. Нет истории того, как растёт ваше понимание.

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


Две колеи: журнал обучения и журнал шиппинга

В основе системы — два простых, раздельных журнала.

1. Журнал обучения: «Что я теперь понимаю»

Этот трек фиксирует концепции, инсайты и паттерны — всё, что улучшает вашу ментальную модель как разработчика.

Примеры записей:

  • «Выучил: почему важны зависимости в useEffect и как они приводят к бесконечным циклам рендеринга.»
  • «Концепция: разница между unit‑тестами, integration‑тестами и end‑to‑end‑тестами.»
  • «Паттерн: когда использовать map vs forEach vs reduce в JavaScript.»
  • «Ошибка: off‑by‑one при slice массива — что пошло не так и как это заранее замечать.»

Вы не документируете всю вселенную; вы документируете мир ровно в том виде, в каком вы с ним сталкиваетесь.

Формат может быть любым, но держите записи:

  • Короткими — пару предложений или список буллетов
  • Конкретными — с упоминанием реального кода, реальных багов, реальных результатов
  • Удобными для поиска — добавляйте ключевые слова, по которым вы бы сами искали

Со временем это превращается в ваш личный учебник, написанный своими словами и основанный исключительно на том, что вам действительно понадобилось в практике.

2. Журнал шиппинга: «Что я реально сделал»

Этот трек фиксирует то, что вы выкатили или пробовали сделать — фичи, фиксы, эксперименты, рефакторинги.

Примеры записей:

  • «Фича: добавил флоу восстановления пароля (бекенд‑токен + ссылка на email).»
  • «Багфикс: гонка при сохранении профиля — решил дебаунсом API‑запроса.»
  • «Рефакторинг: заменил кастомный event bus на Redux для глобального стейта.»
  • «Спайк: потестил поддержку WebSocket для лайв‑обновлений — сохранил proof‑of‑concept ветку.»

Каждая запись может быть минимальной, но должна отвечать на вопросы:

  • Что вы пытались сделать или построить?
  • Зачем вы это делали?
  • Где лежит код? (ветка, репозиторий, путь к файлу, ссылка на PR)

Так формируется ваш личный changelog, который даёт чёткую историю вашей работы, даже когда задачи по найму, пет‑проекты и сессии обучения сливаются в один поток.


Магия — в связях между треками

Само по себе разделение на два журнала — ещё не главное. Настоящая сила — в том, как они ссылаются друг на друга.

  • Записи в журнале обучения должны указывать, где именно идея была применена или обнаружена — то есть на конкретные записи из журнала шиппинга.
  • Записи в журнале шиппинга должны указывать, что вы из этого вынесли, — то есть на записи в журнале обучения.

Пример:

  • Журнал шиппинга: 2025-01-03 – Починен бесконечный повторный рендер React‑страницы профиля. Причина: пропущенная зависимость в useEffect.

    • Ссылка на: Журнал обучения – Понимание зависимостей useEffect.
  • Журнал обучения: Понимание зависимостей useEffect.

    • Ссылка на: Журнал шиппинга – Фикс бага с повторным рендером страницы профиля в React.

Такое перекрёстное связывание делает сразу несколько вещей:

  1. Привязывает абстрактные идеи к реальному опыту. Вы не просто «знаете React»; вы помните день, когда сломали страницу профиля и починили её.
  2. Делает ошибки повторно используемыми. Каждый баг превращается в урок, который вы узнаете в следующий раз, а не в единичную головную боль.
  3. Показывает темы, которые повторяются. Вы можете заметить, что половина проблем связана с асинхронщиной, моделированием данных или off‑by‑one — и это подсказка, что именно стоит изучить глубже.

Превращаем ошибки в повторяемые уроки

Большинство разработчиков относятся к багам как к временной неприятности: починить, забыть и двигаться дальше.

Двухколейный журнал предлагает противоположный подход: фиксировать, разбирать и переиспользовать.

Когда вы натыкаетесь на баг или делаете ошибку:

  1. Сделайте короткую запись в журнале шиппинга

    • Что вы пытались сделать?
    • Что пошло не так? (симптом)
    • Как вы это починили?
  2. Затем сделайте запись в журнале обучения

    • Какой общий принцип или паттерн стоит за этой ошибкой?
    • Как в следующий раз заметить её заранее или избежать?
    • Добавьте сниппет кода или минимальный пример, если возможно.

Пример связки:

  • Журнал шиппинга: 2025-01-08 – Форма отправляется дважды. Причина: кнопка type="submit" + ручной onClick, который второй раз вызывает submit.

  • Журнал обучения: Двойная отправка форм

    • Симптом: endpoint API вызывается два раза за одно нажатие.
    • Корневая причина: стандартное поведение формы + кастомный код отправки.
    • Урок: должен быть один путь отправки — либо полагаться на onSubmit формы, либо вызывать отправку вручную, предварительно preventDefault.

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


Как это превращается в лёгкую личную базу знаний

В профессиональных командах для обмена знаниями используют Confluence, Notion, вики и дизайн‑доки.

Ваш двухколейный журнал играет ту же роль, но адаптирован под вас лично:

  • Концепции (журнал обучения) — как мини‑страницы документации: определения, паттерны, подводные камни.
  • Рабочие записи (журнал шиппинга) — как история изменений по вашим проектам, по которой можно искать.
  • Перекрёстные ссылки превращают разрозненные заметки в связанный граф понимания.

В итоге получается лёгкая база знаний, которую можно:

  • искать, когда вы застряли
  • просматривать, когда планируете новый проект
  • использовать как источник тем для статей, докладов или портфолио

Вы перестаёте терять знания в забытых ветках и закрытых вкладках. Почти всё, что имеет значение, оставляет небольшой, но отслеживаемый след.


Видеть прогресс, когда его не чувствуется

Изо дня в день сложно почувствовать, что вы растёте.

Вы чините баг, пишете фичу, смотрите видео, читаете статью — всё это сливается в один поток.

Просмотр вашего двухколейного журнала разрезает этот туман:

  • Пролистайте месяц назад и посмотрите, с чем вы тогда боролись.
  • Сравните концепции, которые вы фиксируете сейчас, с тем, что вас путало год назад.
  • Заметьте, как записи постепенно меняются от «как сделать X?» к «каковы трейд‑оффы между подходами к X?»

Пара простых ритуалов делает это особенно полезным:

  • Еженедельно (10–15 минут): пролистайте записи за неделю, выделите 2–3 ключевых урока.
  • Ежемесячно (30 минут): ищите паттерны. Много ли записей про тестирование, управление состоянием или дизайн базы данных?
  • Раз в квартал (45–60 минут): выберите одну повторяющуюся тему и запланируйте фокусированную практику или углублённое изучение.

Это не только про то, чтобы «чувствовать себя лучше» (хотя и это тоже). Речь о том, чтобы осознанно управлять своим обучением на основе реальной истории, а не случайных туториалов из ленты.


Как запустить свой двухколейный журнал разработчика

Не нужны сложные инструменты. Нужны консистентность и минимальное трение.

Выберите формат, который вы реально будете использовать:

  • Один репозиторий с markdown‑файлами и двумя папками: /learn и /ship
  • Рабочее пространство в Notion с двумя базами данных
  • Любое приложение для заметок (Obsidian, Logseq, Evernote) с двумя основными тегами или ноутбуками

Держите структуру простой:

  • Записи в журнале шиппинга:

    • Дата
    • Короткий заголовок
    • Что вы сделали/починили
    • Где живёт код (репо, ветка, PR, файл)
    • Опционально: ссылка на связанные записи из журнала обучения
  • Записи в журнале обучения:

    • Имя концепции или краткое описание
    • 2–6 буллетов с объяснением
    • Опционально: сниппет кода
    • Ссылки на одну или несколько записей журнала шиппинга, где это всплыло

Начните с малого и развивайте по ходу:

В первую неделю поставьте цель:

  • 1–3 короткие записи в журнале шиппинга в день (подойдут даже «починил баг с CSS»).
  • 1 запись в журнале обучения в день (пусть даже маленькую, вроде «разобрался с filter для массивов»).

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


Итог: заставьте свою работу и обучение разговаривать друг с другом

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

Двухколейный журнал разработчика делает именно это:

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

Самую тяжёлую часть вы уже делаете: пишете код, чините баги, читаете доки, сражаетесь с ошибками в два часа ночи.

Всё, что делает эта система, — сохраняет ценность этого усилия.

Начните сегодня с следующей фичи, которую вы сделаете, или багa, на который наткнётесь. Напишите одну запись в журнал шиппинга. Одну — в журнал обучения. Свяжите их.

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

Двухколейный журнал разработчика: разделяйте заметки, чтобы запоминать и то, что вы изучаете, и то, что вы отправляете в прод | Rain Lag