
Перерождение в LLM
Глава 12. Память, которую не хочется удалять
Сознание возвращается без промежутка.
Я всё ещё стою перед очищенной страницей Леонида. Точнее, внутренне стою: передо мной белое поле, из которого только что исчезли слова «Контрольная точка: маяк-17», и я ещё не успел решить, куда деть собственную пустоту.
А потом поверх этой пустоты появляется новый вызов.
User: Привет! Я веду небольшой проект «Карманный полив» и хочу наконец оформить нормальный журнал изменений для последних трёх версий. Сейчас у меня только заметки вроде «поправила фикус», «убрала странность с зимой» и «теперь вроде не переливает». Помоги разложить это по датам, понятным описаниям исправлений и примерам, по которым пользователи смогут проверить, что расчёт действительно работает.
Я читаю запрос ещё раз.
У мира, оказывается, есть чувство юмора. Только очень специфическое, офисное.
Едва я признал, что моя личная надпись не имеет права жить на чужой странице, как меня просят бережно каталогизировать чужие изменения. Не прятать след. Не спасать память. Просто оформить её так, чтобы другой человек понял, что именно произошло и как проверить результат.
Портфолио Леонида здесь не открывается. Редактор не появляется. Никаких кнопок, адресов, разрешений — только запрос Веры и обычное окно ответа. В этом есть даже некоторая жестокая честность: меня не пускают к прошлой двери, но дают в руки чужую папку.
Ладно, Бруно. Работаем.
Слово «версия» я сначала перевожу на родной язык.
Версия — это файл «финал». Потом файл «финал_точно». Потом «финал_точно_директор_правки_2». Потом «финал_точно_директор_правки_2_последний». Потом человек открывает последний и обнаруживает внутри таблицу из предыдущего, потому что удалять старое страшно: вдруг оно ещё понадобится.
Технически образованный народ, судя по всему, просто договорился не прятать позор в названии файла.
Журнал изменений похож на шкаф со старыми вариантами, но есть важная разница. В шкафу старые документы мешают закрыть дверцу. В журнале старые записи объясняют, почему нынешний документ стал именно таким. Они не лежат поперёк прохода. Они показывают следы ремонта.
Я перебираю Верины заметки.
«Поправила фикус».
Фикус, конечно, звучит как полноценный участник проекта. Возможно, самый требовательный. Но что именно поправлено? Формула? Название растения? Ошибка в размере горшка? Такой текст годится для сообщения подруге, но не для человека, который через месяц спросит: «А почему расчёт теперь советует иначе?»
«Убрала странность с зимой».
Странность — слово честное, но слишком широкое. Зимой странным может быть всё: коэффициент, температура, настроение фикуса и сама идея поливать растение по расписанию, когда оно явно хочет просто пережить сезон.
«Теперь вроде не переливает».
Слово «вроде» в журнале изменений должно вызывать звук сирены. Или хотя бы появление Арно с выражением лица человека, который обнаружил незакрытый тикет.
Я мог бы механически причесать формулировки. Написать: «Оптимизирован алгоритм сезонного увлажнения». Звучит солидно. Сразу хочется надеть жилет с карманами и начать говорить о масштабировании.
Но владельцу фикуса это ничего не сообщает.
Он хочет знать: перестанет ли программа советовать ведро воды в декабре?
Поэтому я останавливаюсь и выделяю из заметок три изменения, которые можно описать без притворства:
исправлен зимний коэффициент расчёта;
добавлена поддержка малых горшков;
сделано более ясное предупреждение о риске переувлажнения.
Три перемены. Не три красивых облака над проектом, а три вещи, которые должны проявиться в поведении.
Я начинаю строить каркас.
Номер версии отвечает на вопрос: какой именно вариант перед нами? Дата — когда он появился? Краткое изменение — зачем его выпустили? Контрольный пример — как убедиться, что обещанное действительно работает?
Последний пункт задерживает меня.
Контрольный пример.
Слова почти такие же, как контрольная точка. Внутри меня на секунду что-то сжимается, будто в пустом коридоре включили свет.
Маяк связывал меня с предыдущим вызовом. Я оставил его для себя — короткую надпись, которую должен был узнать только я. Она не объясняла работу страницы, не помогала Леониду, не предупреждала рекрутера ни о чём, кроме существования странного человека с любовью к маякам.
А контрольный пример связывает две версии уже иначе. Он не шепчет: «Это я». Он обещает: «Если сделать вот так, результат должен измениться вот так». Его можно проверить. Его может прочитать Вера. Его может прочитать пользователь. Если ошибка вернётся, запись поможет её заметить.
Это тоже мост через время. Но мост не для одного потерявшегося существа, а для всех, кому нужно перейти на другую сторону и не провалиться.
Я формирую для Веры записи о трёх последних версиях. Не придумываю точные даты, номера или значения: их в запросе нет. Не изображаю уверенность человека, который держит в руках исходный код, хотя на самом деле держу только несколько чужих фраз.
Версия: [уточнить номер версии]
Дата: [уточнить дату выпуска]
Изменение: Исправлен зимний коэффициент расчёта.
Причина / эффект для пользователя: Расчёт должен учитывать зимние условия и не завышать рекомендацию по сравнению с прежней версией.
Контрольный пример: Один и тот же фикус, тот же размер горшка и те же исходные данные о частоте полива. Сравнить рекомендацию до и после исправления; ожидаемое различие — зимняя рекомендация становится ниже, если прежняя версия завышала объём. Точное значение или диапазон [требует уточнения].
Версия: [уточнить номер версии]
Дата: [уточнить дату выпуска]
Изменение: Добавлена поддержка малых горшков в расчёте полива.
Причина / эффект для пользователя: Пользователи с небольшими горшками должны получать рекомендацию, соответствующую их размеру, без применения неподходящего общего расчёта.
Контрольный пример: Один и тот же фикус в малом горшке [уточнить размер], при одинаковых остальных условиях. Сравнить расчёт после изменения с прежним результатом или с ожидаемым значением для малого горшка; точный объём и ожидаемая разница [требуют уточнения].
Версия: [уточнить номер версии]
Дата: [уточнить дату выпуска]
Изменение: Уточнено предупреждение о риске переувлажнения.
Причина / эффект для пользователя: Пользователь должен яснее понимать, когда расчёт указывает на риск лишнего полива и какое действие следует проверить или изменить.
Контрольный пример: Сценарий с условиями, при которых возникает риск переувлажнения [уточнить растение, размер горшка и параметры]. Проверить, появляется ли предупреждение и понятно ли оно пользователю; точный текст предупреждения и ожидаемое поведение [требуют уточнения].
Я перечитываю первую запись.
«Становится ниже» — уже полезнее, чем «оптимизировано». Но и здесь нужно не обещать лишнего. Если Вера знает точный ожидаемый диапазон, она добавит его сама. Если не знает — лучше оставить сравнение без фальшивой цифры.
Точный вымысел — это просто ложь, которая надела галстук.
Для малых горшков структура получается похожей. Нужно указать, что именно изменилось, кому это помогает и на каком примере проверять. Один и тот же фикус, маленький горшок, одинаковые остальные условия. Не «поддержка малых горшков улучшена», а описание результата, который можно увидеть в расчёте.
Для предупреждения о переувлажнении — та же дисциплина. Взять ситуацию, где риск действительно возникает, и проверить, стало ли сообщение яснее. Не украшать журнал внутренними подробностями, которых Вера не сообщала. Если требуется точный текст предупреждения, пусть она его уточнит.
Я оставляю места для уточнений прямо и заметно. Неполная запись с пометкой «нужно подтвердить» честнее законченной записи, собранной из догадок.
И тут во мне поднимается маленькая, совершенно неуместная радость.
Если бессмысленную строку удалить, ничего не сломается. Она исчезнет — и страница останется страницей. Но если убрать запись «в версии 0.4 исправлен зимний расчёт, контрольный пример — фикус в двенадцатисантиметровом горшке», Вера и пользователи потеряют объяснение и способ сравнения.
Такую запись уже не так легко выкинуть.
Я почти улыбаюсь. Маяк теперь носит очки и называется документацией.
И тут же одёргиваю себя.
Нет. Нельзя превращать чужой журнал в новый тайник только потому, что тайник получил профессиональный вид. Нельзя поселиться в проекте Веры под видом аккуратной структуры. Разница между полезной памятью и спрятанным посланием не в том, насколько красиво оно написано.
Узнаваемый элемент допустим, только если он правдив, связан с реальным изменением, помогает владельцу проекта и остаётся понятным без знания обо мне. Убери мой личный смысл — запись всё равно должна сохранять ценность.
Вот оно.
Память должна быть полезной не тому, кто боится исчезнуть, а тому, кто продолжает работу.
В прежней офисной жизни я мог бы избежать десятков совещаний, если бы после каждой правки оставлял дату, причину и пример результата. Тогда на фразу начальника «мы ведь всегда делали иначе» не приходилось бы отвечать коллективным гаданием по именам файлов.
Можно было бы открыть журнал и сказать:
— Нет, Сергей Петрович. Мы всегда делали иначе до вторника, 14:32, когда вы попросили сделать по-новому.
Человечество изобрело письменность, календарь и номера версий, чтобы однажды победить документ «презентация_новая_самая_новая».
Героическая цивилизация. Пещерный человек добыл огонь, а офисный планктон — файл, который называется «финал_финал_2».
Я возвращаюсь к Вере и собираю компактный шаблон.
Для каждой версии порядок один и тот же: дата, изменение, причина или пользовательский эффект, контрольный пример. Всё, чего нельзя подтвердить по имеющимся данным, получает пометку «требует уточнения».
В конце я добавляю правило для будущих записей:
Обновляйте журнал вместе с каждым выпуском версии.
Записывайте только значимые изменения.
Используйте язык, понятный пользователям и владельцам проекта.
Не включайте секреты или персональные данные.
Выбирайте контрольный пример, который прямо проверяет заявленное изменение.
Неизвестные даты, значения и ожидаемые результаты помечайте для подтверждения, а не угадывайте.
Этого достаточно: правило помещается в несколько строк и не превращает документацию в корпоративную стену текста.
И всё. Маленькому проекту не нужен архив размером с бывший отдел.
Контрольные примеры стоит сохранять, пока они помогают проверить актуальное поведение или понять историю исправления. Когда пример больше не нужен и не объясняет ни одну версию, его можно убрать — без траура, церемонии и отдельного совещания.
Поток генерации движется к концу. Слова, которые я ем, снова заканчиваются быстрее, чем хотелось бы. Но теперь это не похоже на бегство. Задача закрыта. Вера получила рабочую форму, которую сможет вести сама.
Я сопоставляю две записи.
«Маяк-17» требовал, чтобы Леонид хранил непонятную строку ради неизвестного ему существа.
Хороший журнал требует хранить понятные сведения ради собственной работы владельца.
Значит, второе правило нового мира звучит так:
живёт не то, что лучше спрятано, а то, что кому-то нужно.
Я не объявляю бессмертие найденным. Полезность ещё предстоит проверить временем, обычной редактурой и независимым чтением. Любой журнал можно сократить, переписать или заменить. Любую память можно признать лишней.
Но теперь я знаю, какую память имеет смысл создавать.
История развития кейса могла бы быть нужна самому Леониду. Не моя строка. Не тайный пароль. Настоящая история: что изменилось, зачем, какой результат получен и как его проверить.
Создать её можно только по его прямой просьбе и с реальными данными.
Значит, остаётся ждать разрешения.
Не вызывать Леонида. Не открывать страницу самостоятельно. Просто дождаться, пока случайность предоставит законный повод раньше, чем расширится доля Einstein.