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

Почему утечка знаний страшнее утечки памяти

В большинстве компаний инфраструктура знаний существует на уровне «сказал на созвоне», «скинул кусок кода в чат» или «лежит где-то в Confluence». Когда ключевой инженер уходит, эти куски не складываются в цельную картину. Результат: баги, которые никто не может починить, архитектурные решения без объяснений, потерянные наработки.

Ирония в том, что документация часто воспринимается как лишняя работа. Но именно она превращает хаотичный опыт в системное знание.

Живая документация против «мертвого архива»

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

  • Автоматическая генерация документации из кода (например, через Sphinx для Python или TypeDoc для TypeScript).

  • Документация как код (Docs-as-Code): хранение рядом с проектом в Git, с ревью и CI.

  • Регулярные knowledge review — не только код-ревью, но и проверка документации на актуальность.

Мини-пример: генерация документации для Python

"""
Модуль: payment_gateway.py
Описание: Обработка платежей через внешний сервис
"""

class PaymentGateway:
    """
    Класс для работы с платежным API
    """
    def __init__(self, api_key: str):
        """
        :param api_key: ключ для аутентификации
        """
        self.api_key = api_key

    def charge(self, user_id: str, amount: float) -> bool:
        """
        Списывает деньги с пользователя.
        :param user_id: идентификатор пользователя
        :param amount: сумма списания
        :return: True при успешной операции
        """
        # Здесь могла быть ваша реклама
        return True

Обычная документация, встроенная в код, позже автоматически попадает в HTML-портал через Sphinx. Так каждый новый разработчик получает описание без отдельного «копипаста».

Формат «теневого программиста»

Один из самых эффективных способов передачи знаний — практика shadowing: к ключевому инженеру «прикрепляется» коллега, который повторяет его рабочий день.

Да, это дорого, да, замедляет работу. Но этот метод лучше любого онбординга. В отличие от инструкций, здесь передаются не только технические детали, но и «инженерная чуйка»: почему выбирается именно это решение, какие грабли обходят стороной.

Архив проектов — не кладбище, а музей

Архивировать код и решения важно, но ещё важнее уметь искать по этому архиву.

Простейший подход — метаданные. Вместо тысячи папок «final_v2_final_fix» используйте теги: версия языка, зависимые сервисы, стек, статус (прод, тест, драфт).

Мини-пример: метаданные через YAML

project: billing_service
status: archived
stack: 
  - Python 3.10
  - PostgreSQL 14
  - Kafka 3.5
dependencies:
  - auth_service >= 2.1
  - payment_gateway >= 1.0
notes: >
  Устарел из-за перехода на микросервисную архитектуру.
  Полезен для примеров работы с Kafka.

Такие описания позволяют новому сотруднику понять контекст ещё до чтения кода.

Истории провалов: чему учат чужие ошибки

Один проект у нас «умер» вместе с архитектором. Никто не знал, как работает часть очередей, потому что всё было «в голове». Итог — три месяца расследований, переписывание системы, потерянные бюджеты.

После этого мы ввели правило: любое нестандартное архитектурное решение должно сопровождаться коротким текстом «почему именно так». Даже если это две строчки в README.md. Через год это спасло нас от аналогичной ситуации, когда ушёл DevOps — мы знали, почему он выбрал Terraform вместо Ansible.

Практика «блиц-докладов»

Раз в месяц инженеры делали 15-минутные доклады о том, что нового узнали или внедрили. Никаких длинных презентаций, просто экран и код.

Со временем накопился целый «видеопарк» знаний, который стал лучшей базой для новых сотрудников. Иногда смотришь старый доклад и думаешь: «О, оказывается, это мы придумали год назад, а не конкуренты».

Автоматизация передачи знаний

Технологии помогают:

  • Чат-боты, которые отвечают на вопросы по документации.

  • LLM-модели (но аккуратно, приватные данные нельзя «сливать» наружу).

  • CI-триггеры, которые напоминают обновить документацию при изменении критичного кода.

Пример простого Git-хука на Bash, который блокирует пуш, если не обновлён README.md:

#!/bin/bash
if git diff --cached --name-only | grep -q "src/"; then
    if ! git diff --cached --name-only | grep -q "README.md"; then
        echo "Ошибка: изменения в коде без обновления README.md"
        exit 1
    fi
fiНемного жёстко, но дисциплинирует.

Зачем всё это менеджерам и топам

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

Уменьшает время онбординга.

Снижает зависимость от «незаменимых» людей.

Повышает устойчивость к уходу сотрудников.

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

Финальные мысли

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

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

Немного жёстко, но дисциплинирует.

Зачем всё это менеджерам и топам

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

  • Уменьшает время онбординга.

  • Снижает зависимость от «незаменимых» людей.

  • Повышает устойчивость к уходу сотрудников.

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

Финальные мысли

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

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

Комментарии (2)


  1. Wesha
    28.09.2025 04:52

    Проблема в том, что документация имеет тенденцию «протухать»: она описывает не ту версию кода, которая сейчас, а ту, которая была, когда документацию писали — как говорится, «человек, у которого одни часы, всегда знает, который час; человек, у которого двое часов, никогда в этом не уверен». Поэтому надо писать самодокументирующийся код.


  1. mmMike
    28.09.2025 04:52

    Как узко...
    А коментарии к коду это такая фигня.. Чет все зацикливаются на том как пуговици пришиты (код написан).
    Костюм не только из пуговиц состоит.

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

    1. А когда и в каком контексте это делали.

    2. Где лежит обсуждение с заказчиком и почему сделано так или не иначе.

    3. А почему вот от этого отказались и выбрали это..

    4. и т.д.

    И это все не всегда можно востановить. Переписка теряется.. люди уходят (и на строне заказчика то же). В заявка часто не пишут все. Типа зачем писать "это ж очевидно". А через полгода даже автор это "очевидно" уже не воспринимает как очевидно.
    А если в конференции голосовй никто не вел протокол или что то в нем упустил то эту инфу можно вообще только перекрестным допросом извлечь.