Каждый разработчик рано или поздно сталкивается с ситуацией: из команды уходит «тот самый» человек, который держал в голове половину архитектуры. Вместе с ним уходит не только опыт, но и часть будущего проекта. В статье делюсь мыслями и подходами, как минимизировать потери при передаче знаний, какие форматы работают, а какие — нет, и почему документация должна быть живой, а не мёртвым архивом на 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)
mmMike
28.09.2025 04:52Как узко...
А коментарии к коду это такая фигня.. Чет все зацикливаются на том как пуговици пришиты (код написан).
Костюм не только из пуговиц состоит.Обычно возникают проблемы не по коментриям к коду.
А вопросы типа:А когда и в каком контексте это делали.
Где лежит обсуждение с заказчиком и почему сделано так или не иначе.
А почему вот от этого отказались и выбрали это..
и т.д.
И это все не всегда можно востановить. Переписка теряется.. люди уходят (и на строне заказчика то же). В заявка часто не пишут все. Типа зачем писать "это ж очевидно". А через полгода даже автор это "очевидно" уже не воспринимает как очевидно.
А если в конференции голосовй никто не вел протокол или что то в нем упустил то эту инфу можно вообще только перекрестным допросом извлечь.
Wesha
Проблема в том, что документация имеет тенденцию «протухать»: она описывает не ту версию кода, которая сейчас, а ту, которая была, когда документацию писали — как говорится, «человек, у которого одни часы, всегда знает, который час; человек, у которого двое часов, никогда в этом не уверен». Поэтому надо писать самодокументирующийся код.