31 июл. 2024 г.·8 мин чтения

Помощь CTO для стартапа, когда сильных разработчиков недостаточно

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

Помощь CTO для стартапа, когда сильных разработчиков недостаточно

Почему хорошие команды всё равно упираются в стену

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

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

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

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

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

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

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

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

Что на самом деле входит в помощь CTO

Сильные разработчики умеют выпускать код. Руководство на уровне CTO занимается решениями, которые никто другой полностью не берёт на себя. Оно задаёт единое техническое направление, чтобы продукт, инженерия, найм и бюджет двигались к одной цели, а не расползались в разные стороны.

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

Это также означает решать, что строить сейчас, а что отложить. У основателя обычно идей больше, чем времени или денежного запаса. CTO превращает этот список в порядок: выпустить фичу, которая поможет продажам закрыть сделку, отложить переписывание, не делать лишний сервис и убрать побочный проект, который съедает два спринта ради почти нулевой отдачи.

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

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

Основатели редко говорят языком инженерии. Они говорят: «Нам нужны enterprise-клиенты в этом квартале» или «у нас слишком высокий темп расхода денег». Кто-то должен перевести это в конкретные решения: добавить SSO до редизайна дашборда, улучшить стабильность до новых интеграций или отказаться от трёх платных сервисов перед запуском нового плана найма. Такая переводческая работа — большая часть помощи CTO для стартапа.

Именно поэтому частичный CTO для стартапов может быть важен даже тогда, когда команда сильная. Разработчики по-прежнему строят продукт. CTO решает, куда стоит вкладывать силы, какой риск допустим и как технический план вписывается в бизнес, который основатель пытается удержать на плаву.

Что обычно не берут на себя сильные разработчики

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

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

Этот разрыв быстро проявляется на уровне дорожной карты. Разработчик может понимать, что фича A чище и безопаснее. Основателю же может быть нужна фича B, потому что два платящих клиента попросили её на этой неделе. Кто-то должен одновременно учитывать продуктовый риск, давление продаж, нагрузку на поддержку и стоимость разработки. Опытные разработчики часто видят только одну сторону этого решения, а у многих к тому же нет полномочий принимать окончательное решение.

Та же проблема возникает и за пределами кодовой базы. Кто-то должен решить, сколько инженеров нанимать, куда пойдёт бюджет в этом квартале, какие поставщики оправдывают жёсткую привязку и когда стоит сказать нет кастомной доработке. Эти решения формируют команду сильнее, чем любой pull request. Они влияют на расход денег, скорость найма, сроки поставки и на то, сколько хаоса команда будет разгребать позже.

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

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

Как давление на основателя меняет план

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

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

Крупные потенциальные клиенты создают другой вид давления. Один большой заказчик просит SSO, особые отчёты, специальный workflow или проверку безопасности. Сделка кажется близкой, и основателю хочется сказать да. В итоге дорожная карта смещается в сторону одного покупателя, а остальной продукт замедляется. Опытный инженер может объяснить компромисс. Человек на уровне CTO решает, выгоден ли такой обмен для бизнеса.

Пробелы в найме всё усложняют. Если уходит lead backend-направления или в команде всё ещё нет engineering manager с продуктовым мышлением, основатели часто затыкают дыру временными решениями. Они распыляют ответственность неудобным образом, в спешке пускают подрядчика в чувствительную систему или продолжают поддерживать старый код, потому что у никого нет времени его заменить. Эти решения могут на месяц удержать движение, а потом создать шесть месяцев лишней нагрузки.

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

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

Вот здесь помощь CTO для стартапа особенно важна. CTO защищает дорожную карту, отталкивает плохие обещания и решает, какие проблемы действительно нужно исправить прямо сейчас. Хорошие разработчики строят продукт. Но кто-то всё равно должен удерживать линию, когда давление пытается переписать план каждую пятницу.

Простой пример из стартапа

Перейдите от советов к ответственности
Назначьте одного человека ответственным за компромиссы между продуктом, инженерией, затратами и сроками.

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

Какое-то время это работает. Потом всё падает в один и тот же месяц.

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

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

Команда может это сделать. В этом нет проблемы. Проблема в том, что остановится, пока они будут это делать.

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

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

Не менее важно и то, что этот человек объясняет план простым языком. Клиент понимает, что входит в объём работ. Основатель понимает, какую выручку это защищает. Инженеры понимают, что им нужно перестать делать.

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

Как увидеть этот пробел в своей компании

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

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

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

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

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

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

Как подключить помощь CTO по шагам

Получите внешнюю техническую оценку
Опирайтесь на опыт CTO, когда давление основателя начинает переписывать дорожную карту.

Начните с малого. Вам не нужен большой реорганизационный проект, длинная стратегия или полный-time руководитель с первого дня. Хорошая помощь CTO для стартапа часто начинается с нескольких решений, которые перестают метаться между основателем и командой.

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

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

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

Назначьте еженедельный обзор с фиксированной повесткой. Держите его коротким и практичным. Обсуждайте дорожную карту, потребности в найме, риски поставки и любое решение, которое может замедлить ближайшие две недели работы. Если вы используете частичного CTO для стартапов, именно здесь его роль часто начинает приносить пользу.

Затем сознательно сузьте квартал. Запишите, чего команда делать не будет. Это касается и фич, которые вам нравятся, и рефакторинга, который может подождать, и экспериментов без ясной причины. Одна такая привычка экономит очень много лишних движений.

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

Через четыре недели посмотрите на результат. Стала ли поставка более предсказуемой? Стало ли у основателя меньше неожиданных эскалаций? Перестала ли команда снова открывать одни и те же споры?

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

Какие ошибки совершают основатели, когда пропускают это

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

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

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

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

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

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

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

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

Если полномочия размыты, пробел заполняет давление. Кто-то всё равно принимает решение, но делает это поздно, под стрессом и видя только половину картины. Обычно именно тогда и проявляется настоящая стоимость.

Что делать дальше

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

Хороший первый шаг — выписать повторяющиеся решения, за которые никто по-настоящему не отвечает. Без сложностей. Какие технические решения тормозят работу над продуктом? Какие компромиссы каждый спринт вызывают один и тот же спор? Какие пробелы в найме не закрываются, потому что никто не может чётко сформулировать роль? Обычно этот список быстро показывает, нужна ли вам помощь CTO для стартапа уже сейчас или можно подождать.

Используйте этот список, чтобы решить, какой должна быть роль. Если компании нужно ежедневное техническое руководство, частый найм и постоянные компромиссы вокруг продукта, может подойти полный CTO. Если команда сильная, но направление размыто, чаще лучше подходит частичный CTO для стартапов. Так вы получаете опытное мнение там, где оно важнее всего, и не нанимаете руководителя на полный день слишком рано.

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

Это также помогает сильным разработчикам. Опытным individual contributor обычно легче, когда они могут сосредоточиться на создании продукта, ревью и сложных задачах, а не тащить на себе давление уровня основателя без полномочий что-то менять.

Если вам нужна внешняя поддержка, Олег Сотников на oleg.is работает как частичный CTO и советник для стартапов и небольших компаний, которым нужна помощь с архитектурой продукта, инфраструктурой и практичным внедрением ИИ. Его опыт охватывает разработку, роли CTO и основателя, а также большие production-системы, поэтому разговор обычно остаётся предметным.

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