Пишу о производстве сложных проектов, управлении продуктами, профессиональном росте программистов. borshev.com / patreon.com/f213 Связаться со мной — fedor@borshev.com Реклама не продаётся.
23 800подписчиков сейчас
55.0%ERR
48.0цитируемость
5постов/день
Русскийязык
Россиягео
Подписаться в Telegram
Данные обновлены 22.07.2020
Публикации всего: 51
Не бегать от того, что не умеешь
Мне всегда было легко программировать и сложно заниматься продуктовой работой. Чуть устал — и начинаешь все проблемы решать бекендом, а не головой.
Когда программируешь — всё бинарно: CI проходит — значит ты молодец, не проходит — иди разбирайся. В продуктовой работе всё непонятно: вот сделал ты фичу, а как понять, пользуются ли ей вообще? А ту ли ты фичу вообще сделал? Надо говорить с пользователями, проверять гипотезы — сложно, в общем, особенно для программиста.
Сейчас я почти перестал программировать (ai же), а к продуктовой работе добавил маркетинг. Теперь продуктовая работа кажется понятной. Делов-то — придумал гипотезу, поставил тестировать, через неделю проверил. Выстрелила — молодец, не выстрелила — тоже молодец: всё равно завтра следующую гипотезу запускать.
А вот маркетинг — тёмный лес. Как понять, почему с нового канала приходит мусорный трафик — это я таргетинг плохо настроил, офер кривой или канал мёртвый? Почему органика выстреливает в одном сторе и не выстреливает в другом, и по каким запросам люди нас вообще ищут? Как распределить деньги между работающими каналами и экспериментами? Чуть устал — и идёшь заниматься микроулучшениями в продукте вместо дистрибуции.
Кажется так устроен любой человек: хочет делать то, что умеет, и не хочет делать то, что не умеет. И работа стартапного CEO как раз и состоит в том, чтобы делать то, что не умеешь. А что умеешь — делегировать, чтобы освобождать место в голове.
Системная память в AI-харнессе — это плохо
Мне кажется, что память в клоде — это зло. Конечно большой кайф в том, что агент под тебя подстраивается — запоминает привычные имена переменных, просьбы писать меньше буллшита в комментах и способы называть миграции.
Но проблема в том, что все эти инструкции остаются внутри ~/.claude. То есть у другого программиста в том же репозитории и переменные будут названы по-другому, и буллшит будет другой формы. Со временем твой агент посмотрит на чужие примеры, и начнёт писать так же. Потом, наверное, и память незаметно подменит, если долго его не ругать.
Кароч, считаю что любые инструкции для агента должны быть воспроизводимыми — лежать прямо в репозитории, для которого они предназначены. А глобальный CLAUDE.md должен быть вообще пустым.
Я спросил у опуса
Верный признак плохого менеджера — пересылать в команду письма от клиента без каких-либо приписок, ну разве что иногда добавляя что-нибудь вроде JFYI. С 25 года появился новый жанр — «я спросил у опуса и <тонна копипасты>». Напишу тем, кто так делает — вдруг у вас ещё не всё потеряно.
Друзья, у опуса я могу и сам спросить. Кожаный мешок существует не для того, чтобы перекладывать текст из одного места в другое — он нужен, чтобы приносить ценность и принимать ответственность. К копипасте из LLM можно приложить много ценности: начиная от фактчекинга и заканчивая тем, что вообще убрать копипасту и написать мне в один абзац, что в предлагаете сделать.
Префикс «я спросил у LLM» не спасает от ответственности: вас уволят, а опус останется. Всё, что делает этот префикс — говорит команде, что вы не уважаете их настолько, что не готовы потратить даже 5 минут на банальную проверку источников.
День рождения школы
Мы с Марьяной впервые встретились в перерыве между карантинами — в августе 2020 года. Почти сразу начали делать первую версию «Стать Тимлидом» — он родился из накопленного у обоих опыта, которым хотелось делиться.
Прошло уже целых 6 лет, офигеть. Школа пережила ковид, пережила сломанные платежи и потерянные данные. Надеюсь, переживёт и текущий кризис.
День рождения получается не очень весёлый, но всё таки это повод — так что вот вам скидка 25% на все самостоятельные курсы. Действует до вечера среды — приходите знакомиться, если давно присматриваетесь к «Анализу Систем» или лидерским курсам. Забирайте «Самому не проще» или «Есть минутку» если хотите прокачаться в делегировании или управляемой коммуникации. Промокод
SIX.
Что там у них →
С днём рождения нас!Как дела у Зои
TLDR — прорывов нет, работаем.
Реклама продолжает болтаться вокруг прибыльности — чтобы нормально достроить финмодель, надо подождать ещё 2 месяца, чтобы когорты, пришедшие на текущую версию продукта, стали хоть чуть-чуть зврослее.
По фичам — запустили медицинские карты: теперь модель знает, какие лекарства и диагнозы есть у пользователя. Доработали память — теперь контекст старых бесед не теряется: это важно, т.к. количество сообщений у активного юзера измеряется сотнями. Научили модель просматривать историю анализов и искать врачей, добавили голосовухи (на удивление не так уж и востребованные, подозреваю технические проблемы). Скоро запустим мобильное приложение и тудушки — чтобы пользователь вместе с моделью планировал свои медицинские дела.
Очень необычно себя чувствовать одновременно CEO, который берётся за всё непонятное и думает про стратегию, и разработчиком, который просто пилит фичи. Во всех прошлых продуктовых забегах я ограничивался ролью CTO, изолировал себя от маркетинга. А сейчас осознал, что кроме меня это никто не сделает — и поменял букву T на E.
Жутко интересно и страшно — только живых денег потратили уже 1.3 млн, и дальше эту сумму надо только увеличивать.
Вернулся на Claude code
Вот уже больше месяца прошло, как я отказался от OpenCode и pi в пользу Claude code. Попробовал просто в надежде сэкономить токенов после того, как Copilot перестал выдавать свои первые бесплатные дозы, да так и остался.
Да, Claude code намного медленнее свободных альтернатив, но планы, которые он приносит — гораздо полнее и продуманнее. Оказалось, что мне гораздо ценнее получать ответы через 5 минут, чем через 2 — потому что через 5 минут мне достаточно будет написать «ok», а сколько ещё итераций понадобится после двухминутного ответа — заранее неизвестно.
Клёво, что теперь не надо думать о выборе модели и о том, насколько заполнено контекстное окно — всё это происходит где-то в недрах харнеса.
Немного бесит кривая система настроек и театр безопасности (а вы точно доверяете этому фолдеру? А можно я запущу find? Ой, а find -exec?). Но со всем этим можно мириться ради большей автономности агента и проработанных планов.
Opencode остался только в местах, где нужно совсем тонкое взаимодействие с моделью — к примеру для системы перевода материалов школы на английский, или в экспериментах с локальными моделями.
Вспоминаю ощущения от перехода с линукса на мак — контроля стало меньше, а результата больше.
А вы заметили как обесценилась в последнее время команда ping? 10 лет назад, чтобы проверить интернет в сомнительных условиях, я делал
ping google.com, 1.1.1.1 или yandex.ru, и смотрел результат.
Сейчас такой пинг ничего не значит — ответ может прилететь от ВПН-клиента или вообще от ТСПУ. Даже если ответ прилетит от оригинального хоста — далеко не факт что я до него достучусь с реальным запросом — пинг может проходить, а коннект на 443 порту рваться посередине хендшейка.
Теперь, чтобы проверить интернет, хожу на 443 порт — пишу curl ifconfig.co: сразу проверяет и доступность интернета, и маршрутизацию. А вы как?DevEx → VibeEx
Кажется, я насмотрелся на достаточное количество новых проектов, чтобы утверждать, что AI-тулинга повылезали ровно те же проблемы, что и любых других программистских инструментов. И самая главная из них — воспроизводимость.
Какие-то проекты хранят все llm-наработки в курсоре одного из разработчиков. Кто-то жёстко рассчитывает на внешние скиллы, которые неизвестно где взять. Где-то каждую новую юзер-сторю реализуют с новым паттерном, потому что никто не озаботился выкинуть неактуальный код, и llm считает его живыми примерами.
Принцип «поработал — убери» стал ещё более актуальным. Раньше можно было расчитывать, что бардак выбесит кого-нибудь настолько, что тот потратит пару дней и выкинет мусор. Сейчас бардак бесит только агентов — а они ребята терпеливые.
Сделать проект удобным одновременно и для агентов, и для кожаных мешков — это всё ещё работа кожаных мешков. И это такой же техдлолг, как и любой другой.
Уйти на второй круг в бизнесе
Мне очень нравится приём, который используют в авиации, чтобы пилотам было легче уходить на второй круг при посадке.
Подсознательно пилот всегда будет воспринимать уход на второй круг как поражение — типа с первого раза не смог попасть в полосу. Но если это подсознание выпустить наружу — будут проблемы: огромное количество авиакатастроф связаны с тем, что пилоты садились во что бы это ни стало, когда надо было прервать заход и уйти на второй круг.
Чтобы такого не было, молодых пилотов учат думать инвертировано. Не «мы садимся, а если что-то пойдет не так, то уйдём на второй круг», а ровно наоборот — «мы уходим на второй круг, но если вдруг мы поймём, что самолёт стабилизирован, и мы своими глазами видим полосу — тогда сядем» (знатоки авиации наверное меня поправят).
Теперь посмотрим на предпринимателей. Закрыть бизнес — это же поражение: не смог придумать продукт, который интересен пользователям. И от нежелания признавать это поражение появляются потерянные годы и кредиты под залог недвижимости. А вообще-то закрыть бизнес — такой же профессиональный поступок для предпринимателя, как уйти на второй круг для пилота.
Пытаюсь вместить этот майндсет в свою голову с Зоей — не ждать, что мы сделаем гениальный продукт нужный рынку, а понимать, что мы проект идёт к закрытию, но если вдруг где-нибудь увидим железный Product-Market fit, то тогда остановим его закрытие.
Назови свою цену
Ненавижу, когда люди не могут назвать цену за свои услуги. Вот нанимаю я исполнителя на разовую работу, к примеру написать пачку кода. Разговор подходит к деньгам, я спрашиваю сколько эта работа стоит, а в ответ получаю странное «сколько заплатишь, столько и ок».
Вроде бы человек пытается уйти от денежных отношений — типа я ему настолько дорог, что он готов и бесплатно поработать. Или задача для него новая, и он не знает сколько такие вещи стоят в принципе. Или ещё какая-нибудь внутренняя причина, которую я даже придумать не могу.
Единственное, что при этом вижу я — что почему-то исполнитель не хочет принимать ответственность за то, чтобы назвать свою цену. И пытается переложить эту ответственность на меня.
Я от своей части не отказываюсь, но интересно, а когда мы всё-таки договоримся про деньги и начнём делать работу — ответственность за её результат исполнитель тоже мне вернёт? А когда в процессе вылезут проблемы, исполнитель так же постесняется мне о них сказать?
Удивительным образом, ненависть появляется именно при найме самостоятельных людей на конкретные услуги. При трудоустройстве всё совсем по-другому.
---
20 мая стартует 6 поток «Анализа Систем». Обсуждаем, как строить большие системы для бизнеса, а не на основе докладов с конференций.
Rozetked
ВИЛСАКОМ РЕД / WYLSACOM RED
Библиотека программиста
[netstalkers]
Типичный программист
СТАС БОМБИТ