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

Упрощенная реальность


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

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

Вы выбираете между Duke Energy (крупная коммунальная компания) и Thoughtworks (компания, которая занимается консалтингом). Но, по надуманному стечению обстоятельств, там и там вам предстоит работать над биллинговой системой, рассчитанной на нужды коммунальной компании.
Может показаться, что эти варианты очень похожи. Кто-то даже скажет, что между работой в технической команде внутри компании и работой в технической команде на стороннего заказчика нет никакой разницы:

Если вы принадлежите к команде разработчиков в составе крупной компании не IT профиля, вы фактически работаете в штатном агентстве с единственным клиентом. – The Coding Career Handbook

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

Линейные и аппаратные разработчики


Разделение рабочих должностей на линейные и аппаратные (или штабные) пришло к нам из военного дела. Офицер, которому поручено сражаться на линии фронта, напрямую делает вклад в основную миссию. С другой стороны, штабный офицер только обеспечивает поддержку – выполняет обязанности врача, техническую или управленческую работу.
Из военного дела эта терминология перетекла в менеджмент, где породила удобный принцип классификации сотрудников:

Терминами «штабный / аппартаный» и «линейный» обозначают разные виды полномочий в организациях. «Линейные полномочия» напрямую способствуют выполнению организацией ее базовых функций. К ним всегда относятся производство продукции и продажи. «Аппаратные полномочия» поддерживают работу организации за счет специализированных консультаций и вспомогательных функций. Управление кадрами, бухгалтерию, пиар, юриспруденцию, как правило, относят к аппаратным полномочиям.– Wikipedia

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

У линейных ставки выше


Вернемся к нашему примеру. В компании Duke Electric разработчики – аппаратные сотрудники. Биллинговая система – вспомогательный компонент в работе Duke Electric. Продуктом деятельности компании является электричество, а не ПО для выставления счетов. А вот у команды из Thoughtworks на кону стоит значительно больше, пусть даже они работают над схожей биллинговой системой для региональной коммунальной компании примерно такого же калибра (Dominion Energy, допустим).

Кто-то из Thoughtworks сумел убедить представителей Dominion Energy, что компания сделает для них превосходную биллинговую систему и выставил им за это счет на круглую сумму. Если всё пойдет хорошо, то сотрудничество будет продолжаться, возможно, и до этапа создания whitepaper дойдет. После этого Thoughtworks будет пытаться наладить связи с другими региональными коммунальными службами (Florida Power & Light, мы идем к вам!). Иными словами, если вы работаете в команде, которую отрядили на заказ Duke Electric, и поставите что-то в проекте под угрозу, вас могут пересадить на скамейку запасных, а оттуда уже и до увольнения недалеко.

С другой стороны, если кто-то из лиц, задействованных в обслуживании биллинговой системы, пожалуется на вашу работу во внутренней команде разработчиков Duke Electric, начальство только рукой махнет и жизнь пойдет своим чередом. Внутренние команды никак не ощущают на себе давления рынка, и в этом есть как плюсы, так и минусы. У внутреннего заказчика есть только один поставщик (то есть вы), а вы, в свою очередь, работаете с единственным заказчиком. Эта схема не лучше, чем схема консалтинговой компании, она просто другая – в чем-то удачнее с точки зрения карьеры, в чем-то неудачнее. О достоинствах и недостатках я подробнее расскажу чуть позже, но сначала заезжу тему с классификацией до полусмерти.

Центр доходов и центр расходов

Другая концепция на слуху – противопоставленные друг другу центр доходов и центр расходов. Мне кажется, эта терминология дает меньше ясности, потому что точно не понятно, кто входит в центр доходов, а кто – в центр расходов. Все хотят причислить себя к центру доходов. Но сама концепция похожа на нашу.

Мне нравится, что в модели с линейными и аппаратными должностями противопоставление строится на ролях, а не на бизнес-единицах. То есть, например, консультант по Agile, который работает в составе команды разработчиков продукта, приносящего большой доход, всё равно остается на вспомогательной роли (разве что компания торгует табличками и общими местами), а значит, должность у него аппаратная.

Примеры линейных и аппаратных должностей


Вот несколько примеров по конкретным должностям:

  • Вы занимаетесь поддержкой ПО для логистики в составе внутренней технической команды Walmart – аппаратная должность.
  • Вы работаете над логистическим решением, которое ваше компания продает в Walmart, Target и прочие корпорации – линейная должность.
  • Вы специалист по кастомизации ERP-программ от SAP в крупной аудиторской фирме – аппаратная должность.
  • Вы добавляете новую функциональность в ERP-программы, которыми торгует SAP – линейная должность.
  • Вы занимаетесь набором персонала в IT-компании – аппаратная должность.
  • Вы занимаетесь набором персонала в рекрутинговой компании – линейная должность.
  • Вы работаете в пиар-отделе Google – аппаратная должность.
  • Вы занимаетесь пиаром в пиар-агентстве – линейная должность.
  • Вы доктор военной части – аппаратная должность.
  • Вы доктор в медицинском учреждении – линейная должность.

Смешанные должности

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

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

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

Иногда проще всего разобраться исходя из структуры компании.

Структура компании


В большинстве случаев самый простой способ понять, аппаратный вы сотрудник или линейный – посмотреть, из кого состоит штат вашей компании. Если вы относитесь к самой крупной категории, то вы линейный сотрудник. В армии докторов всегда меньше, чем солдатов, а в аудиторской фирме программистов меньше, чем бухгалтеров.



Если вы линейный разработчик


Тема линейных разработчиков в IT-компаниях раскрыта уже вдоль и поперек. Рассказ Майкла Линча о плюсах и минусах работы в Google – отличный материал. «Я был окружен самыми талантливыми разработчиками в мире, пользовался самыми совершенными инструментами для разработки и ел самую бесплатную еду». Стоит прочесть и статью Зака Ллойда о культурах, ориентированных на повышение.

Но если вкратце выделить основное:

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

Если вы – аппаратный разработчик


Карьерные преимущества


Преимущества работы в компании не из IT-сферы (то есть на должности аппаратного разработчика) описаны гораздо более скупо. Но они существуют.

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

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

Именно через это различие в крутизне карьерных лестниц я и постиг разницу между линейными и аппаратными должностями. Преподаватель одного из управленческих курсов, которые я слушал в университете, как-то заметил, что пытаться стать партнером в Goldman Sachs – пустая затея, а вот дойти до должности финансового директора в одной из тысяч компаний открытого типа вполне реально. Так что для тех, кто метит в верхушку, аппаратная должность выгоднее линейной. В самом деле, финансовые директора становятся исполнительными, когда компания сталкивается с серьезными финансовыми сложностями, которые заслоняют все остальное. В том же ключе, в свете того, что в Starbucks объявили, что делают основной упор на технические аспекты, и назначили исполнительным директором Кевина Джонсона, программиста, аппаратные разработчики компании оказались сейчас в отличном положении.

Преимущества в характере работы


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

Если вам нравится широкий охват и интересно разбираться в том, как функционирует бизнес, такая модель работы вам хорошо подойдет.

Уход на аппаратный покой

Мне часто приходилось видеть, как люди уходят на аппаратные должности на закате карьеры. Раньше вы работали в Thoughtworks над созданием биллинговых систем, а теперь переводитесь в Duke Energy, где будете заниматься поддержкой существующих биллниговых систем. Вы оказываетесь в роли эксперта, который может использовать накопленные знания для решения реальных бизнес-проблем, и при этом работаете на компанию, в которой стаж исчисляется десятилетиями и планы строятся на сопоставимые периоды. И наконец, вы можете завязать с вечной гонкой и получаете массу возможностей начинать свои высказывания словами: «А вот когда я работал в Thoughtworks…»

Преимущества в темпе и ценностях


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

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

Имейте в виду: бывают паршивые индустрии

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

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

Так что, раздумывая над будущим местом работы или над тем, как хотите провести десятилетия, из которых сложится ваша карьера, спросите себя, какая должность вам подойдет больше – линейная или аппаратная. Они сильно отличаются, и, если мясорубка продуктовой компании вас выжала досуха, возможно, вам понравится работать в небольшой команде разработчиков в компании, не относящийся к IT-сфере.

А если вы пробовали работать там и там, расскажите о своем опыте. Какие преимущества и недостатки вы отметили для себя?

Комментарии (1)


  1. amarao
    13.05.2022 15:31
    +1

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

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

    Воспринимать in-house разработку как средство оптимизации процессов (читай - снижения цены) - это отказываться от её второй составлюящей: в какой-то момент скорость и стабильность процесса открывает для компании возможность предлагать новые услуги. То есть in-house разработка не только снижает расходы, но и создаёт инструментарий компании (можем мы такое или нет?).

    И мне кажется, что это третий вектор (первые два - линейность и аппаратность). Как его правильно назвать я не знаю, но, если мы посмотрим на коммунальную компанию, то это сотрудник отдела R&D, который, например, исследует применение предиктивных моделей для предсказания перегрузик и аварий. Возможность предотвратить аварию до её наступления - это уже не "аппаратная" задача. Она может кардинально изменить положение компании на рынке (меньше аварий - выше надёжность).