бесплатно без регистрации урок 1 из 16

Помощник и продукт: что меняется, когда код уходит к людям

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

18 мин чтения · 4 главы ·4 задания ·домашняя работа

Две работы, похожие снаружи

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

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

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

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

Агент ускоряет набор текста одинаково в обоих случаях. Это и есть причина, по которой первая работа с ним преображается, а вторая — не очень. В первой набор текста и был главным делом. Во второй он никогда им не был.

Курс — про вторую работу. Не потому, что первая неважна, а потому, что с ней всё и так неплохо: поручили, посмотрели, запустили, готово. Вторая требует ремесла, и ремесло это не про инструмент, а про то, что вокруг написанного кода.

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

Когда правка писалась полдня, у вас было полдня, чтобы подумать о её последствиях: что она сломает, как её откатывать, кого она затронет. Теперь она пишется за десять минут, и этих полдня нет. Думать приходится намеренно и отдельно — то, что раньше происходило само, по ходу набора текста.

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

Есть и третья причина, по которой курс нужен именно сейчас. Порог входа упал: код теперь пишут люди, которые раньше его не писали — аналитики, инженеры-технологи, маркетологи, бухгалтеры. Скрипт, который раньше заказывали разработчику и ждали неделю, сегодня собирается за вечер, и это хорошо. Но вместе с кодом к человеку приходит всё остальное: данные, которые можно испортить, пользователи, которые на него рассчитывают, и правки, которые придётся вносить через полгода.

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

Что добавляется, когда код уходит к людям

Разберём подробнее, что именно добавляется, когда код уходит к людям. Четыре вещи, и ни одна не про написание кода.

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

Чужие данные. В базе лежат записи людей, которые доверили их вам. Ошибка в расчёте — это не «неверное число на экране», а неверная запись, по которой кто-то примет решение. И исправить её задним числом часто нельзя: неверный документ уже ушёл.

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

Срок жизни. Код, который живёт год, читают чаще, чем пишут. Его правят люди, которые не помнят, почему он такой. Поэтому понятность из вкусовщины превращается в свойство, у которого есть цена.

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

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

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

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

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

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

Что агент не ускоряет

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

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

Возьмём обычную задачу: добавить в отчёт колонку с процентом выполнения плана. Раскладка примерно такая.

Часть работыБылоСтало с агентом
понять, что нужно20 мин20 мин
разобраться, где править20 мин5 мин
написать код40 мин5 мин
проверить результат20 мин20 мин
принять и выложить10 мин10 мин

Было два часа, стало час. Это отличный результат — и он вдвое, а не в десять раз, хотя написание кода ускорилось в восемь. Причина в первой и четвёртой строке: они не ускоряются почти никак.

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

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

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

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

Есть и третья часть, которой нет в таблице, потому что она не измеряется минутами: ответственность за то, что ушло к людям. Она не делится ни с кем. Правка, сделанная агентом и принятая вами, — ваша, ровно как если бы вы набрали её сами. Это не морализаторство, а практическое обстоятельство: из него следует, что принимать непонятое нельзя, и об этом будет отдельный разговор в уроке про ревью.

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

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

Шестнадцать видов работы

Осталось разложить курс. Шестнадцать уроков — это шестнадцать видов работы, и порядок у них тот же, что в жизни проекта.

1. Понять работу2. Войти в проект3. Сделать новое4. Починить5. Покрыть тестами6. Переделать7. Чужой код8. Ревью9. Автоматика10. Данные11. Совместимость12. Доступы13. Выкладка14. После неё15. Командашестнадцатый собирает всё это в один сквозной путь
Каждый урок — отдельная работа и то, что в ней меняется, когда рядом агент. Порядок такой же, как в жизни проекта.
УрокВид работыЧто в нём тяжелее всего
2войти в незнакомый проектпонять устройство, а не прочитать файлы
3сделать новую возможностьпризнак готовности и края
4починить поломкувоспроизвести и найти причину
5покрыть тестамирешить, что проверять
6переделать, не меняя поведениядоказать, что не изменилось
7править чужой кодсоблюдать чужие решения
8пройти ревью и делать егочитать правку, которую написал не человек
9автоматизировать рутинувыбрать, что вообще стоит
УрокВид работыЧто в нём тяжелее всего
10изменить данные и схемунеобратимость
11не сломать тех, кто уже пользуетсяузнать, кто это
12работать с доступами и секретамичего не давать вовсе
13выложитьпорядок, а не смелость
14жить после выкладкизаметить, что сломалось
15работать в командедоговорённости, которых нет в коде
16провести маленький продукт целикомне потерять ничего из пятнадцати

Что не входит в курс, стоит сказать прямо, чтобы не искать.

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

Построение своей обвязки. Слои, потолки, наблюдаемость, оценка — это «ИИ-Инжиниринг». Там про систему вокруг агента, здесь про работу руками.

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

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

Задания урока

Каждое проверяется сразу: ответ сверяется с эталоном, и на неверный вариант приходит разбор.

  1. Агент ускоряет работу «для себя» и работу «для людей» примерно одинаково.средне
  2. Что добавляется, когда код уходит к людям?средне
  3. Разложите части работы по тому, ускоряет ли их агент.средне
  4. Ответственность за правку делится с тем, кто её написал.сложно
Пройти урок с проверкой заданий Курс «Codex: продукты и практика» открыт и бесплатен, прогресс сохраняется.
Открыть курс