Передача

Какую документацию должна дать передача программы?

Бо́льшую часть документации для передачи пишут в спешке, о том, что кто-то помнит, для читателя, которого ещё не наняли. Разделение труда бывает и лучше.

Короткий ответ

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

#Разделение, которое работает

Два вида знания, два разных метода
Факты о системеРешения и привычки
ПримерыКомпоненты, зависимости, эндпоинты, потоки данных, работа по расписаниюПочему такой дизайн, что отвергли, что ломается регулярно, что проверять после выкатки
Где живётВ системеВ людях
Лучший методВывестиЗадать конкретные письменные вопросы
Цена вручнуюДни и недели, и всё равно неполноЧас, если вопросы хорошие
Можно проверить?Да, если несёт ссылки на источникНет — это свидетельство
ОкноОткрыто бессрочноЗакрывается, когда перестают отвечать

Почти любая плохая передача делает это наоборот: тратит закрывающееся окно на колонку, которая остаётся открытой, и производит документ о системе вместо документа о решениях.

#Что выводить

Это свойства кода, и установить их может любой, у кого есть к нему доступ, в любой момент — в том числе когда все уже ушли:

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

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

#Что обязан написать человек

Шесть вещей, ни одну из которых никакой анализ никогда не восстановит, примерно по убыванию ценности:

  1. Что вам было бы страшно отдать на изменение и почему

    Самый ценный абзац в любом документе передачи. Он короткий, конкретный и невыводимый.

  2. Что пробовали и бросили

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

  3. Что здесь стоит из-за ограничения, которого больше нет

    Вторая половина: не даёт им сохранить то, что уже можно убрать, или убрать то, что несущее.

  4. Что ломается регулярно и что вы с этим делаете

    Эксплуатационный ранбук, написанный как то, что происходит на самом деле, а не как процедура.

  5. Какие оповещения важны, а какие шум

    Без этого новая команда либо игнорирует всё, либо расследует всё.

  6. Что приходится делать руками и когда

    Месячные и квартальные ручные шаги обнаруживают на третий месяц — по их отсутствию.

#Как прописать это в договоре

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

Пункт о передаче, который можно оценить Вымышленный пример — не клиент
При расторжении Исполнитель передаёт:

1. Письменные ответы на список вопросов, предоставленный
   Заказчиком не позднее чем за 15 рабочих дней до окончания
   работ. Заказчик вправе задать до 25 вопросов.

2. Неделю показа, в течение которой принимающая команда
   Заказчика самостоятельно: (а) поднимает систему локально по
   письменной инструкции, (б) выкатывает изменение в продакшен,
   (в) откатывает это изменение и (г) разворачивает бэкап во
   временную среду. Исполнитель доступен для консультаций.

3. Список всего, что работает и не лежит в репозитории.

4. Список всех внешних сервисов, от которых зависит система, с
   указанием владельца аккаунта по каждому.

Приёмка: работы считаются завершёнными, когда принимающая
команда (а) самостоятельно выкатила, (б) развернула бэкап и
(в) правильно и письменно ответила на десять вопросов о системе,
выбранных Заказчиком.

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

#Как выглядит документ, который читают

Если человек всё-таки что-то пишет, то читают это снова или нет по трём свойствам:

  • Коротко. Шесть прочитанных абзацев выигрывают у шестидесяти непрочитанных страниц. Документ передачи, который никто не дочитывает, не стоит ничего.
  • Ответы, а не разделы. Написано как ответы на конкретные вопросы, а не как документ с воображаемой структурой. Вопросы задают порядок, по которому сможет двигаться кто-то другой.
  • С датой и авторством. Утверждение о системе без даты и имени невозможно взвесить тому, кто найдёт его через два года.

#Что идёт не так

Просить «полную документацию системы».

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

Заставить уходящую команду писать обзор архитектуры.

Вместо этого Выведите его. Их оставшиеся часы — единственный в мире источник для другой колонки.

Принять записанный видеообзор как результат.

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

Написать один раз и не поставить дату.

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

Производить документацию, которую нельзя проверить.

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

#Чего это не покрывает

Чего это не делает

  • Продуктовую документацию для пользователей. Другая аудитория, другая задача.
  • Документацию API для внешних потребителей: это публикуемый артефакт, а не артефакт передачи.
  • Документацию для соответствия требованиям: у неё есть заданная форма, которую определяет кто-то другой.
  • Вопрос о том, кто всё это потом поддерживает, — вопрос настоящий, и именно поэтому со временем выведенная картина стоит дороже написанной.

Узнайте, чем вы на самом деле владеете.

Без доступа к репозиторию. Без загрузки исходного кода. Без банковской карты.

Построить карту проекта — бесплатно