В 2017 году я впервые почувствовал себя в роли CTO (Chief Technical Officer, технический директор). Я присоединился к маленькому стартапу в роли разработчика‑сеньора, и не успел опомниться, как оказалось, что я держу в руках бразды правления технической командой. Если сказать кому о том, что я занимаю пост технического директора, прозвучало бы это впечатляюще, но на самом деле моя должность больше соответствовала роли технического руководителя проекта. Я трудился в маленькой компании, в состав которой входило человек десять сотрудников, и плотно занимался разработкой продукта этой компании. Мои дни были наполнены программированием, отладкой и постоянной борьбой с новыми багами и проблемами клиентов. Я, кроме того, был ответственным за то, чтобы наша команда выполняла бы обязательства перед инвесторами и клиентами. Это было не только время непростых задач, но и время мощного обучения, и время профессионального роста.
И ещё — то было время постоянного стресса. Но это — уже совсем другая история.
Перенесёмся в наши дни. Сегодня я — сооснователь цифрового агентства, которое находится в Швейцарии. В нём я занимаю должность CTO. Мы одновременно работаем над несколькими проектами, задействуя в каждом из них универсальные команды. Наше агентство, со времён его создания, немного подросло. Теперь в нём работает почти 50 человек. Эволюционировала и та роль, которую я в нём играю. Я больше не занимаюсь только программированием и отладкой. Теперь я управляю ресурсами, занимаюсь планированием, принимаю стратегические решения. Сейчас передо мной стоят другие непростые задачи. Но я, как и раньше, прямо‑таки наслаждаюсь, решая разного рода проблемы, и понимая, что я — тот, кто формирует техническое видение компании.
Цель этой статьи — развенчать мифы, сложившиеся в среде инженеров‑программистов вокруг должности CTO. Здесь я собираюсь представить план действий для тех, кто стремится занять эту должность. Когда я писал этот материал, я учитывал такие вещи, которые мне самому хотелось бы прочитать семь лет назад, до того, как я стал CTO.
Особенности деятельности CTO часто понимают неправильно. Такой человек иногда является техлидом, а иногда — стратегом, который находит баланс технологий и бизнес‑целей компании. А иногда он — и то, и другое.
CTO играют роль связующих звеньев между техническими командами и остальными частями компании, обеспечивая наличие в компании такой атмосферы, в которой технологии поддерживают бизнес и обеспечивают его развитие.
Давайте разберёмся с тем — что это за должность, «CTO», и чем эти «CTO», на самом деле, занимаются. Что это вообще означает — «CTO»?
Примечание: я использую тут местоимения «он/его», но то же самое можно написать и используя «она/её». То, о чём я пишу, в равной степени относится и к мужчинам, и к женщинам.
Кто такой CTO?
CTO (Chief Technical Officer, технический директор) — это лидер, стратег, менеджер, визионер, кофеман и человек, который решает проблемы. Технические директора разбираются в технологиях, но их роль выходит за пределы обычного понимания кода или архитектуры приложений. Им нужно основательно знать о том, что такое бизнес, рынок, клиенты, команды. Им надо принимать решения, основываясь не только на том, что технически выполнимо, но и на том, что, в стратегическом смысле, выгодно компании.
В средствах массовой информации CTO часто изображают техническими гениями, волшебниками, которые в одиночку создают сложные алгоритмы или изобретают революционные технологии. Но в реальности, правда, всё часто далеко не так возвышенно. Несмотря даже на то, что CTO может быть человеком, символизирующим в глазах общественности технические успехи некоей компании, за ним всегда стоит команда, благодаря которой и достигаются эти успехи. CTO, в основном, тратят время на совещания, на принятие решений, на управление людьми, на решение бесчисленного множества задач, связанных с поддержкой работы технических команд.
У меня есть правило, подсказанное опытом: чем меньше компания — тем меньше CTO приходится работать с людьми, а чем она больше — тем меньше ему приходится работать с технологиями. Среди целого спектра компаний разных размеров обязательно найдутся такие, где CTO занимается исключительно программированием, и такие, где он занимается исключительно стратегическими задачами.
В стартапе CTO может быть ближе к конечному продукту, принимая ключевые технические решения и даже программируя. По мере роста компании фокус внимания CTO всё сильнее смещается на работу с людьми. Речь идёт о согласовании разработки ПО с бизнес‑целями, об управлении большими командами, об общении с инвесторами и клиентами для принятия решений высокого уровня о направлении движения всей компании. Подобная эволюция требует от технического директора постоянного обучения и приспособления к ситуации.
Поэтому тот, кто хочет быть CTO, должен самосовершенствоваться и адаптироваться к изменяющимся обстоятельствам. Иначе, к сожалению, он не сможет справиться с задачей по обеспечению выхода компании на новые горизонты. Поговорим о том, чего можно ожидать CTO, работающим в компаниях разных масштабов и находящихся на разных стадиях развития.
CTO на разных стадиях развития компании
На предпосевной, или на ранней стадии развития стартапа CTO — это часто лицо, которое выполняет большую часть технической работы в компании. Такие люди глубоко вовлечены в решение технических задач, занимаясь всем — от написания кода и проведения код‑ревью, до принятия ключевых архитектурных решений. Они ответственны за создание MVP (Minimum Viable Product, продукт с минимальной необходимой функциональностью) и за налаживание изначальной технической инфраструктуры. Именно на этой стадии развития компании исключительную важность имеют навыки CTO в области программирования. Технические директора, кроме того, нанимают первых сотрудников и приступают к формированию технической культуры компании. В число их повседневных задач входит написание и отладка кода, выполнение код‑ревью, принятие архитектурных решений, первоначальная настройка серверов и баз данных, поддержка обработки обращений пользователей.
По мере того, как компания переходит на стадию роста, роль CTO меняется, перемещаясь из области, где человек активно участвует в работе над продуктом, в область, где он решает больше управленческих задач. CTO теперь занимается управлением более крупными техническими командами, что может включать в себя наладку рабочих процессов, создание инструментов, наём менеджеров, которые помогают ему в решении его обычных задач. На этой стадии он обычно занимается планированием спринтов, координацией деятельности технического отдела компании с другими её отделами, управлением динамикой изменений в командах, контролем за реализацией проектов, обеспечением качества продуктов.
В зрелой компании, или в компании, находящейся на стадии расширения, CTO, преимущественно, занимаются вопросами стратегического планирования. Они ответственны за формирование технического видения компании и обеспечение того, чтобы оно согласовывалось бы с её бизнес‑стратегией. Технические директора в таких компаниях никем напрямую не управляют, их участие в управлении кем‑либо ограничивается разговорами с коллегами. В круг их обязанностей входит создание инфраструктуры и процессов, обеспечивающих эффективные средства коммуникации, коллаборации и принятия решений. На данном этапе развития компании в число повседневных задач CTO входит стратегическое планирование, управление бюджетами, контроль безопасности продукта и его соответствия стандартам, поддержка взаимоотношений с ключевыми поставщиками продуктов и услуг. CTO, кроме того — это человек, олицетворяющий технические достижения (или провалы) компании.
Я собираюсь более глубоко разобраться в особенностях работы CTO на разных стадиях развития компаний. Мы обсудим обязанности CTO, сложности, которые перед ними встают, важнейшие навыки, которые им нужны в компаниях, масштаб которых измеряется 10, 100 и 1000 сотрудников.
CTO в компании из 10 человек
Как уже было сказано, на начальном этапе развития компании CTO часто бывают вовлечены в техническую деятельность. Они могут заниматься написанием кода и код‑ревью, могут принимать важные архитектурные решения, налаживать инфраструктуру, заниматься развёртыванием проектов, настраивать SaaS‑системы сообразно потребностям роста компании. Но это ещё не всё: они принимают решения относительно того, надо ли что‑то создать самостоятельно или купить, того — какой выбрать технологический стек. Они занимаются техподдержкой крупных клиентов, отвечают за продажи ещё более крупным клиентам, которые желают общаться с человеком, который принимал участие в создании продукта. Они занимаются привлечением ресурсов, взаимодействуя с инвесторами, которые хотят, принимая решения, видеть всю команду.
В этот момент CTO, кроме прочего, отвечает за наём первых инженеров. А этот процесс часто включает в себя много дел, связанных с наставничеством и коучингом, которые позволяют CTO добиться того, чтобы новые сотрудники правильно воспринимали бы техническую культуру компании.
Типичные задачи
Задача
Работа в условиях ограниченных ресурсов. В маленьком стартапе CTO часто приходится работать в условиях весьма ограниченного бюджета, имея в подчинении всего 1–2 дополнительных инженера. А контролем качества продукта в такой организации, возможно, будет заниматься CEO (Chief Executive Officer, главный исполнительный директор). Это может привести к тому, что быстро выпустить высококачественный продукт будет очень непросто.
Решение
CTO должен отдать приоритет эффективности, ему нужно сосредоточиться на самых важных возможностях продукта, нужно принимать разумные решения относительно используемых в разработке стека технологий и архитектуры. Когда мало времени и ресурсов, нужно тщательно выбирать то, чему отдать приоритет. Всё, на что направляются усилия, должно оказывать большое воздействие на компанию. Только так она сможет выжить.
Задача
Наём талантливых сотрудников. На техническом рынке труда, который отличается высоким уровнем конкуренции, поиск самых талантливых специалистов может оказаться непростой задачей. Особенно — если речь идёт об их привлечении в маленький стартап.
Решение
CTO нужно продемонстрировать потенциальным сотрудникам компании наличие в ней мощной технической культуры, ему нужно предложить им возможности для обучения и роста. Их необходимо, кроме того, увлечь самой идеей, ради которой существует компания. Ведь маленький стартап не способен конкурировать с крупными компаниями в плане зарплат и дополнительных преимуществ.
Ключевой навык
Если бы я мог порекомендовать только один навык, который CTO необходимо иметь на этой стадии развития компании, то я выбрал бы технические знания и опыт (Technical Expertise). Техническому директору нужно очень хорошо разбираться в используемых компанией технологиях. Это — главный козырь, который он может выложить на стол. Основатели компании будут ориентироваться на мнение CTO, принимая важнейшие архитектурные решения, отлаживая код в расчёте на больших клиентов и создавая MVP.
Советы о профессиональном росте CTO
СTO нужно быть в курсе последних трендов избранного им стека технологий. Рекомендуется создавать сторонние проекты, смотреть курсы на YouTube, посещать занятия по программированию. Можно, если это нормально для конкретного человека, участвовать в соревнованиях по программированию, или вносить вклад в опенсорсные проекты. В целом — всё сводится к тому, что на данном этапе CTO нужно повышать уровень технических знаний и навыков.
CTO в компании из 100 человек
По мере роста компании задачи, решаемые CTO, смещаются в управленческую сторону. Теперь технический директор отвечает за создание команды и за управление ей, а не за непосредственное создание продукта. А это значит, что в круг его обязанностей может войти организация хорошо продуманных рабочих процессов, создание инструментов для улучшения информационных потоков в компании, наём менеджеров, которые будут заниматься решением повседневных задач.
На этой стадии развития компании CTO должен обеспечить соответствие технической стратегии нуждам компании. Сюда может входить принятие решений об инвестициях в собственную инфраструктуру, на которой, в долгосрочной перспективе, будут работать проекты компании. Это могут быть решения относительно рефакторинга некоторых частей приложения ради уменьшения технического долга. Кроме того, теперь на первый план выходит обеспечение соответствия продукта всяческим стандартам. Ведь теперь речь идёт не о забавах с прототипами проекта, а об обслуживании нужд всё более и более серьёзных клиентов.
Надеюсь, что к этому моменту, успешно решив множество задач по поиску правильных сотрудников, CTO уже смог сформировать мощную техническую культуру компании, а так же — смог обеспечить высокий уровень мотивации технической команды и то, что её ценности согласуются с ценностями компании.
Типичные задачи
Задача
Обеспечение эффективной работы команды разработчиков в условиях роста компании и борьба с техническим долгом.
Решение
Настало время реализации чётко прописанных процессов для самых разных дел — для развёртывания проектов, для код‑ревью, для форматирования кода, для встреч в формате один на один, для локальной разработки и для всего, что можно себе представить. Это, кроме того, идеальное время для того, чтобы начать относиться к своей инфраструктуре как к одной из важнейших частей компании. Это значит — создавать адекватные конвейеры инструментов и CI/CD для обеспечения такой же быстрой, как и прежде, реализации новых возможностей проекта с учётом соображений защиты информации.
Задача
Нахождение баланса между задачами менеджмента и техническими задачами. В этот момент на CTO может свалиться очень много дел, внимания будут требовать и управленческие, и технические задачи. Это — хорошее время для того, чтобы приступить к делегированию каких‑то обязанностей другим людям. В противном случае технический директор может оказаться в ситуации, когда ему сложно будет находить баланс между обязанностями CTO, оказывающими большое влияние на компанию, и задачами, которые ему приятно решать самому, большого влияния на компанию не оказывающими, вроде возни с Kubernetes.
Решение
CTO нужно уметь эффективно делегировать обязанности другим людям. Возможно — нанимая людей для решения задач, которые отнимают у него много времени, но не оказывают большого влияния на компанию.
Ключевой навык
Тут мне хотелось бы выделить навык, отличающийся крайней степенью важности на данном этапе развития компании. Это — управление персоналом (People Management). Фактически, речь идёт о том, что CTO в этот период создаёт вокруг компании систему из людей, которые смогут решать те задачи, которые он раньше решал в одиночку, делая это лучше, чем он.
Советы о профессиональном росте CTO
CTO в этой ситуации стоит пойти на курсы по лидерству, менеджменту, коммуникации. Не помешает поинтересоваться мнением команды о себе, быть открытым для учёбы и самосовершенствования. Надо практиковать активное слушание и эмпатию в общении.
CTO в компании из 1000 человек
Теперь компания входит в число крупных игроков ИТ‑рынка. Я не был CTO компании с 1000 сотрудников, поэтому то, о чём я расскажу, будет основано на том, что я узнал, общаясь с разными людьми, читая книги и экстраполируя свой опыт в тех направлениях, в которых, как мне кажется, развивается ситуация в ходе сильного роста компании. CTO в большой компании, в основном, играет роль стратега. Он отвечает за формирование технического видения компании и обеспечивает его соответствие бизнес‑стратегии.
Теперь CTO — это человек, который думает исключительно на перспективу: «Как компании преуспеть в ближайшие десять лет?». Его не занимают вопросы оперативного планирования, вроде «Как нам улучшить продукт?». К этому времени у CTO должны быть сотрудники, гораздо более компетентные, чем он сам, задача которых — решать рабочие вопросы.
В этот момент главная задача CTO сводится к потреблению информации, поступающей со всех концов компании. Он дополняет эту информацию сведениями о технологических новшествах, получаемыми извне, и вместе с другими руководителями высшего звена задаёт направление, в котором двигается компания.
CTO крупной компании, кроме того, поддерживает взаимоотношения с ключевыми лицами, так или иначе заинтересованными в работе компании: с советом директоров, с инвесторами, с основными клиентами, с партнёрами. Ему не следует пренебрегать посещением больших мероприятий, на которых он может встретить других CTO. Общение с ними позволит ему разглядеть возможности для совместных проектов, способствующих росту компании, и обсудить вопросы купли‑продажи компаний.
Типичные задачи
Задача
Управление большой, географически рассредоточенной командой. В большой компании CTO нужно обеспечивать эффективную коммуникацию и коллаборацию членов технической команды.
Решение
CTO нужно обеспечить существование адекватных структур и процессов для эффективной коммуникации (не говоря уже о том, что сам должен ими пользоваться). Например, это — чёткий порядок подчинённости сотрудников компании, понятные внутрикомандные системы взаимозависимости и коммуникации сотрудников. Возможно, ему можно даже внедрить в компанию нечто вроде холакратии или самоорганизующихся команд.
Задача
Поддержка конкурентоспособности компании в быстро развивающейся технической среде. В большой компании CTO должен обеспечить конкурентоспособность компании за счёт эффективного использования технологий.
Решение
CTO нужно взрастить в команде культуру инноваций. Ему, кроме того, нужно принимать разумные решения относительно инвестиций в технологии и о партнёрстве с другими компаниями (как, например, в случае партнёрства Microsoft и OpenAI).
Ключевой навык
Главным навыком CTO большой компании я считаю стратегическое мышление (Strategic Thinking) или перспективное мышление (Long‑Term Thinking). CTO должен уметь формировать чёткое техническое видение компании и её стратегию на следующие пять лет. Он должен уметь принимать высокоуровневые решения относительно инвестиций в технологии и обеспечивать поддержку целей бизнеса технической стратегией.
Советы о профессиональном росте CTO
Тут я не могу рассказать чего‑то из собственного опыта, так как я пока не добрался до уровня CTO большой компании. Могу лишь сказать, что существует множество книг, из которых можно узнать о стратегии ведения бизнеса. Существуют CEO‑коучи, которые могут помочь CTO развить в нужном направлении его мышление. В итоге могу сказать, что CTO большой компании стоит практиковать стратегическое мышление, работая над сложными, долговременными проектами. Ему можно найти наставника среди опытных специалистов уровня руководителя компании. Тем, кто решит последовать моим советам, предлагаю относиться к ним с долей скептицизма: я и сам ещё только учусь.
Как организован мой день?
Мне хотелось бы привести конкретный пример того, как может выглядеть жизнь человека, который стремится стать CTO. Сразу скажу, что у меня не бывает двух одинаковых дней. Сейчас моя роль в компании представляет собой смесь из технических, управленческих и стратегических сфер ответственности. То, чем наполнен мой день, может сильно варьироваться в зависимости от нужд проекта. Надеюсь, возможность взглянуть на мой рабочий день внесёт некоторую ясность в понимание того, как может выглядеть жизнь CTO.
Утро
Я просыпаюсь в 7:30 утра. На утреннюю пробежку я не хочу, и меня не наполняет мотивация, так как я уже проверил телефон и увидел в нём десятки уведомлений. Чудесно. Я просто принимаю душ и отправляюсь в офис.
Можно подумать, что как только я попадаю в офис, я устраиваюсь где‑нибудь с чашкой кофе и наслаждаюсь рассветом, размышляя о том, какой я обалденный. Не‑а. Мои утренние часы суматошны. Я всегда начинаю день с просмотра электронных писем и Slack‑сообщений, проверяя, нет ли среди них чего‑нибудь архиважного. Каждое утро меня обычно ожидает что‑то около 15 сообщений. Среди них — сообщения от команды, документы по работе с персоналом, сведения о проблемах в коде, письма от клиентов.
После того, как я выпью свой кофе, я иногда посещаю регулярные короткие встречи по некоторым из наших самых важных проектов для того чтобы проверить, всё ли там так, как надо. Мы обсуждаем то, что уже сделано, разбираемся с проблемами или с тем, что тормозит работу, выясняем, могу ли я чем‑то помочь со всем этим справиться. Обычно моя помощь сводится к написанию нескольких электронных писем и к планированию нескольких встреч, позволяющих ускорить работу.
Самые важные задачи я ставлю на первую часть дня. Среди них — участие в код‑ревью PR (мне всё ещё это нравится), принятие решений об архитектуре проектов вместе с представителями команд, проверка DevOps или подготовка предложений для новых клиентов. Я, как CTO, который всё ещё принимает непосредственное участие в работе над продуктами компании, могу потратить значительную часть утра, решая технические задачи.
День
После обеда я посещаю какие‑то встречи. Это могут быть презентации для клиентов, встречи с поставщиками, внутренние совещания относительно стратегии развития компании, выделения бюджетов или планирования ресурсов. Несмотря на то, что я занимаюсь практическими задачами, я вовлечён и в принятие больших решений, касающихся направления движения компании. Поэтому такие встречи занимают серьёзную часть моего рабочего дня.
После этого я могу поработать над оценками проектов. Мы оцениваем масштабы и стоимость новых программных проектов с разработчиками‑сеньорами. Сюда входит разбор нужд клиентов, анализ технических требований и оценка времени и ресурсов, необходимых на реализацию проекта (и оценка того, есть ли у нас ресурсы, необходимые для проекта).
Как я уже говорил, мы одновременно работаем над несколькими продуктами, и я обычно весьма активно пользуюсь Slack. Поэтому я туда заглядываю в течение дня для того чтобы все, кому что‑то от меня нужно, это получили, и чтобы никто не оказался забытым.
Вечер, домашние дела
Рабочий день я завершаю дома: заглядываю в список дел, чтобы понять — что я сделал, отправляю электронные письма, чтобы запланировать встречи на следующие дни или недели. Я отвечаю на столько сообщений, на сколько смогу. Я стараюсь завершить день, не оставив ни одно письмо неотвеченным, но опыт показывает, что у меня всегда больше работы, чем я способен сделать за день.
После завершения своих основных дел я читаю что‑нибудь на Hacker News, слушаю несколько профильных подкастов, придумываю тему для моей следующей статьи и пишу несколько её абзацев.
Вот как‑то так и выглядит мой рабочий день. То, как именно он сложится, сильно зависит от конкретных проектов, дедлайнов, разных проблем, которые могут возникнуть в ходе работы. Я стремлюсь к гибкости и всё ещё играю разные роли в ходе повседневной работы. Мне хочется сделать так, чтобы техническая часть нашей работы двигалась бы путём прогресса, чтобы наша компания становилась бы всё эффективнее в плане организации процессов, использования ресурсов и реализации проектов.
После того, как с работой покончено, я читаю фентези, выхожу на прогулку, провожу время с друзьями. В итоге я оказываюсь в кровати чтобы как следует выспаться и повторить на следующий день ту же схему действий, которая будет наполнена новыми задачами. Очень увлекательно!
Стоит ли оно того, или лучше оставаться программистом?
В заголовок этого раздела вынесен серьёзный вопрос, на который нет простого ответа. Решение о переходе с должности инженера‑программиста на должность CTO зависит, в основном, от карьерных целей конкретного человека, от его интересов, от его знаний и навыков. А все люди разные.
Программист глубоко погружён в технические детали работы над проектами. Он пишет, отлаживает и развёртывает код. Он решает сложные задачи, видит непосредственный результат своего труда, воплощённый в создаваемом им продукте. Если программисту нравится практическое использование технологий, если его тянет к написанию кода и к решению технических задач, то ему, возможно, стоит оставаться программистом. Это, кроме того, означает, что ему придётся гораздо меньше взаимодействовать с людьми.
Должность CTO — это, в основном, решение управленческих и стратегических задач. Управление — это управление всем чем угодно — ресурсами, людьми, планами, поставщиками, партнёрами, клиентами. CTO — это часть той движущей силы, которая заставляет «крутиться колёса компании» в масштабах, превышающих масштабы одного или нескольких проектов. Эти люди гораздо меньше программируют и гораздо больше занимаются управлением программистами, которые пишут код. Если человеку нравится быть лидером, примером для подражания, быть тем, кто решает проблемы на уровне всей компании, то переход на должность CTO может оказаться именно тем, что ему нужно.
Человек, занимающий высокую должность, способен оказать просто огромное влияние на компанию. Силу этого влияния нельзя даже сравнить с силой влияния на компанию инженера‑программиста. CTO воздействует не только на отдельный проект или продукт, но на само техническое направление движения компании. Он может сформировать техническую культуру компании, стать проводником инноваций и сильно повлиять на успех компании на рынке. Должность CTO, кроме того, может быть лишь ступенью для тех, кого интересуют другие руководящие роли, в частности — роль CEO. Это особенно подходит тем, кого привлекает идея стать руководителем некоей компании.
Однако переход от программиста к CTO означает развитие новых навыков (навыков работы с людьми) и появление новых обязанностей (множества обязанностей!). Это может быть непросто, может выдернуть программиста из его зоны комфорта. Но это может и принести ему много хорошего, дать новые возможности для роста и развития.
Выбор за вами.
О, а приходите к нам работать? ???? ????
Мы в wunderfund.io занимаемся высокочастотной алготорговлей с 2014 года. Высокочастотная торговля — это непрерывное соревнование лучших программистов и математиков всего мира. Присоединившись к нам, вы станете частью этой увлекательной схватки.
Мы предлагаем интересные и сложные задачи по анализу данных и low latency разработке для увлеченных исследователей и программистов. Гибкий график и никакой бюрократии, решения быстро принимаются и воплощаются в жизнь.
Сейчас мы ищем плюсовиков, питонистов, дата-инженеров и мл-рисерчеров.
Androido
Спасибо, хорошее описание в разрезе зрелости компании. Был в такой же роли в департаменте небольшом по числу сотрудников. Обязанности были схожие, «винегретные» - Тим, тех, лидерство, встречи с заказчиками, продвижение продукта, оптимизации кода/команд и т.п.