Devs in da House: плюсы и минусы работы разработчиком в диджитал-агентстве
У нас («Рейтинга Рунета») нет цели продвигать HR-бренд какого-либо агентства. Нам стало интересно докопаться до этого вопроса с точки зрения объективной журналистики. Для этого мы побеседовали с разработчиками из агентств и подытожили то, что узнали.
Агентский диджитал-рынок переживает постоянную ротацию кадров и вынужден к ней адаптироваться (иначе — ☠). Потому что у него есть свой «круговорот воды в природе»:
подрядчик нанимает джуна за относительно небольшие деньги;
обучает его;
через пару-тройку лет джун становится адекватным специалистом и нередко уходит на другую позицию в другую компанию, где зарплата побольше.
Таким образом агентства выступают «кузницей кадров» для клиентов. Агентство не может заплатить хорошему программисту столько, сколько заплатит банк. Весь агентский бизнес работает на грамотной перепродаже времени сотрудников, поэтому зарплаты не могут быть такими же, как в корпорациях, иначе не сойдётся экономика.
Поэтому агентства развивают свои HR-бренды и стараются убедить соискателей, что работать у них интересно. Но насколько это так на самом деле?
Возможно, разработчику стоит устраиваться не в агентство, а напрямую в компанию, являющуюся непосредственным производителем чего-либо (банк, ритейлер и т.д.), чтобы там работать над продуктом в штате?
Давайте посмотрим.
Статья основана на беседах с разработчиками из Пиробайт, IT-Agency, Verno.digital и нескольких других компаний, за что им большое спасибо. Мы не стеснялись задавать им сложные и неудобные вопросы, а они не стеснялись на них отвечать. Повторимся, редакция РР ни к кому не ангажирована и мы любим докапываться до фактов.
И, конечно, мы будем рады, если вы тоже выскажетесь в комментариях. Особенно если ваш опыт чем-то отличается от тезисов материала.
Особенность работы в диджитал-агентствах
Здесь имеется своя специфика и атмосфера, которые одним людям подходят, а другим — не очень. Примерно так же, как не всем нравятся дискотеки. Чем характерна эта специфика именно для разработчиков?
Высокая динамика
Агентские проекты постоянно меняются. Сегодня разработчик занят небольшим и несложным проектом, а завтра агентству может прилететь такая задача, как у «Фонда Вера», где нужно было создать корпоративный портал на Битриксе при наличии накопившегося объёмного и плохо контролируемого «наследства». И такое перебрасывание происходит регулярно.
При этом у разработчика больше свободы в экспериментах — в рамках разумного и оговоренного с клиентом, конечно. Но в агентства часто приходят как раз с непростыми (запущенными) случаями или за специфической экспертизой, которой не нашлось в штате.
Агентским разработчикам регулярно приходится придумывать интересные костыли на проектах. Если это укладывается в рамки готовой реализации и в тайминг, то идёт в продакшен.
Бизнес — конечных заказчиков — не особо интересует «теоретически правильная» реализация чего-либо. Для них важнее time-to-market: как можно быстрее запустить минимально жизнеспособный вариант продукта и заработать на нём.
Для сравнения, в больших компаниях разработка часто подчинена жёстким регламентам. Вопрос ставится «делаем только так и не иначе»: например, работаем в рамках устоявшегося стэка и ничего в нём не модифицируем. Потому что даже если технологии устаревшие, данное ПО уже присутствует в десятках филиалов, а пока оно худо-бедно работает, лучше его не трогать.
Также в крупных компаниях многие процессы движутся неспешно: например, доступы к админке сайта можно получать 2–3 недели. Этому есть определённое объяснение: множество проверок и перепроверок в крупной структуре позволяют уменьшить риски, но такая бюрократия огорчает энергичных и любознательных людей.
В учебнике для журналистов Леонида Бершидского «Ремесло» есть подходящая аналогия: автор объясняет новичкам в профессии, что они должны чётко понимать: если хочется приключений на свою жопу, то это — в журналистику. Если хочется стабильности и денег — не в журналистику.
В определённом смысле это описание похоже на деятельность агентского разработчика. Если вам интересны новые технологии и быстрое развитие, пускай не без стрессовых условий — вы с бОльшей вероятностью найдёте себя в агентствах.
Не получится отсидеться в уголке
В силу того, что агентства в большей степени направлены на решение сиюминутных проблем бизнеса, крайне низка вероятность того, что поступающие задачи будут из области R&D (Research&Development).
Это надо осознавать на старте, чтобы ожидания не были обманутыми: не получится оградиться от мира и молчаливо заниматься изобретательством. На этом пути постоянно будут стоять непонимание коллег и несоответствие целям компании. Поэтому если есть желание именно «не контактировать с человеками», то не всякое агентство может предоставить такую возможность.
В агентстве почти не бывает ситуаций, когда разработчик просто сидит несколько дней и пишет код. Ему всегда нужно консультироваться с другими отделами — например, с дизайнерами — и участвовать в созвонах, на которых люди показывают и рассказывают друг-другу, что было сделано по проекту.
Многие айтишники являются интровертами и как раз и любят свою работу за то, что здесь больше общения с алгоритмами и кодом, чем с людьми. В исследовании Московского психолого-социального университета это подытожили следующим образом:
Согласно исследованию МСПУ, IT-специалисты со временем теряют способность к эмпатии и становятся безэмоциональными. Учёные выяснили, что чем дольше сотрудник занимается разработкой, тем сильнее у него идёт перекос в сторону одиночной работы и своего рода профессиональной деформации, так как отсутствие эмоций у машинных алгоритмов «притупляет» эмоциональный интеллект программистов (например, как пояснили Хабру профильные эксперты, у IDE нет комментариев как у людей, там нет ругани в ответ на ошибки в компиляции или радостного одобрения, когда всё запускается и работает штатно). Именно поэтому разработчикам трудно понимать других людей, сопереживать и распознавать чужие чувства, выяснили психологи.
Работу в агентстве можно рассматривать как своеобразную прокачку софт-скиллов, если вы идёте на это осознанно, либо рост через боль: не хочу, но всё равно придётся. По-другому в этой среде прижиться будет сложно.
Понимание смежных отраслей
Это опять же происходит за счёт взаимодействия с коллегами из других отделов. Например, разработчик из агентства, как правило, значительно лучше понимает маркетинг, дизайн или SEO.
Как это происходит: выполняя задачи — например, делая микроразметку для SEO — человек всё равно читает документацию; начинает узнавать, зачем нужна та или иная механика, и на что она влияет.
То есть, он в любом случае с этим взаимодействует и расширяет свои знания, причём, возможно, даже не осознавая этого в полной степени.
В дальнейшем такой разработчик может больше привнести в работу над продуктами, потому что он не просто реализовывает какую-то кнопочку по ТЗ, а понимает, почему она здесь нужна, и как она должна правильно работать. Или может предложить альтернативные гипотезы, исходя из своей насмотренности.
Работа над бизнес-задачами в агентстве может привести к отсутствию действительно фундаментальной подготовки (но не обязательно)
Поскольку, как было сказано выше, заказчикам из бизнеса важен показатель time-to-market, скорость реализации чего-либо для скорейшей окупаемости. Это, с одной стороны, ведёт к поиску интересных решений, а с другой — к упрощению.
У агентского разработчика действительно есть периодическая возможность взять какие-то готовые библиотеки, не особо в них вчитываясь, и получить результат, не задавая себе вопрос, насколько этот код оптимизирован.
Тем не менее, здесь есть долгосрочное влияние: если разработчик поверхностно знаком с фреймворком и может с ним работать только с помощью Chat GPT, либо каких-то кусочков — он соберет некий код, но этот код будет «хрупким», если нет фундаментального понимания, как работает фреймворк в целом.
Именно алгоритмической составляющей, построению качественных систем на текущем рынке уделяется не очень много внимания.
Отсюда потом и возникают ситуации, когда заказчик приходит с проектом и просит «разобраться, что там наворотили», и агентскому разработчику приходится лезть в дебри чужого кода и искать варианты оптимизации. В каком-то смысле это самоподдерживающаяся экосистема:
бизнес требует скорость реализации;
подрядчики сооружают костыли;
костыли не оптимизированы до конца;
потом другим подрядчикам приходится лепить на эти костыли новые заплатки.
При работе в агентстве программист приобретает навык «мастера на все руки», но зачастую по верхам. Если же он будет собеседоваться на позицию в финтехе либо с аналитикой данных — там нужны более глубокие знания построения алгоритмов и паттернов.
В итоге человек, имеющий в агентстве уровень сеньора, с точки зрения этой позиции может оцениваться еле-еле как миддл.
Но, конечно, это сильно зависит от конкретного агентства, принципов его работы и развития своего штата, критериев оценки в разных компаниях, а также от самого человека и его желания развиваться.
Плюсы работы в агентстве для начинающих разработчиков
Быстрый рост
Агентства их достаточно хорошо прокачивают: за ~3 года можно выйти на серьёзный уровень.
Типичные агентские задачи не настолько сложные, чтобы требовать высокие знания в какой-то области. Это позволяет джуниорам учиться: многократно повторяя простые задачи, они расширяют свои знания (повторение — мать учения, и многократно повторив что-либо, можно постепенно искать способы сделать что-нибудь по-другому, слегка отходя с проторенной дорожки).
В агентстве новички попадают в условия многозадачности, множества переключений, взаимодействия со смежными зонами, и такое многообразие помогает быстро вырасти до миддл-уровня.
В целом работа в агентстве для новичка более приоритетна, чем сразу в какой-то крупной компании
1. В агентство легче попасть. В крупную компанию с хорошим IT-отделом, где соискатель — далеко не единственный программист, устроиться на порядок сложнее. Особенно новичку.
2. Широкий опыт. В крупной компании задачи часто имеют заданное направление. Например, компания занимается одеждой: тогда у программиста особо нет выбора, у него есть условно одна конфигурация и определенный пул задач, который никогда особо не изменится. Возможно, иногда будут какие-то интересные интеграции, но в большинстве своём — монотонная работа.
У агентств при этом разные заказчики и пул разных задач: здесь разработчик может покопать одну технологию, там — залезть в базы данных или настраивать сервер. В этом плюс для новичка.
Поэтому из агентств уходят, когда «устали от жизни». Если человек устал от переключений и своеобразного авантюризма, ему хочется «спокойной семейной жизни» — тогда, скорее всего, он идёт в крупную компанию и начинает работать в более спокойном темпе.
Здесь напрашивается логичный вопрос:, а какие есть аргументы в силу того, чтобы опытный разработчик оставался работать в агентстве, связал с ним свою жизнь?
Плюсы работы в агентстве для сеньоров и тимлидов
Эта деятельность для тех, кто хочет оставаться «живым» и иметь причастность к определённой движухе, энергетике. При желании, опытный разработчик может рассматривать агентство как заслуженную полупенсию — уже не пытаться достигнуть чего-то необыкновенного, но продолжить присматривать за процессами в «живом организме».
Во многих других компаниях — не агентствах разработки — есть большие вопросы к IT-отделу. Там команды обычно либо вообще нет, либо люди там сидят по 10 лет и не особо развиваются.
Компаний, в которых есть постоянный IT-драйв (тут наши собеседники называли в качестве примера Т-Банк), немного. В большинстве случаев там довольно застоявшаяся среда, в которой персонал делает что-то для вида, но развития нет — им всё давно осточертело.
Минусы работы в диджитал-агентстве для разработчиков
Деньги
В продуктовой разработке улучшение продукта приносит дополнительную прибыль. Соответственно, эта прибыль может быть распределена, в том числе, в качестве зарплаты. У агентства же есть определенная ставка, выше которой разработчик прыгнуть не сможет, просто исходя из условий рынка.
Агентства должны компенсировать какие-то риски от проектов: что-то выполнили по плану, что-то нет; или отдел продаж не обеспечил желательный объём на текущий месяц.
При этом устоявшиеся компании на рынке (не агентства) зарабатывают с помощью более востребованных услуг — например, те же торговые сети, банки или клиники. Разработка сайта или приложения может быть нужна, а может быть по каким-то причина не нужна;, но кушать, лечиться и пользоваться банковскими карточками люди будут постоянно.
В определенный момент агентский разработчик достигает потолка по зарплате и дальше у него два пути:
идти искать новое место, где могут предложить больше;
пойти в управление: ты менеджер, у тебя есть сотрудники, и чем больше денег они приносят, тем более приятный процент ты получаешь.
Но менеджмент в большинстве случаев разработчиков на самом деле не прельщает, и поэтому многие выбирают первый путь.
Спокойной жизни не будет
Постоянная смена контекста на проектах не может не вызывать дискомфорт.
Чтобы зайти в новый проект, нужно разобраться на предметном и техническом уровне, что там происходит. Это не всем даётся легко. С опытом люди уже знают, на что смотреть, и могут обнаружить главные проблемы за несколько часов, но если говорить о разработчиках с небольшим стажем, у них такой насмотренности пока нет.
Также переключение на проекты бывает в экстренном режиме: например, объявился заказчик, с которым не работали полгода, и тут внезапно у него вылез баг, который нужно починить буквально за день.
Это стрессовые условия, и если человек не готов к интенсивному росту и прокачке, будет тяжело.
Попадание на галеру
Некоторые агентства не заинтересованы в качественном росте (как бизнеса, так и сотрудников) и оптимизации процессов. Деньги капают — и хорошо, мы возьмём просто объёмом.
Рутина
Многим разработчикам хочется интересных задач и сложных проектов. Вышла новая технология? Хочется сразу попробовать её везде внедрить!
Тем не менее, в агентстве это достаточно сложно сделать, несмотря на то, что на проектах есть определённое поле для экспериментов и сооружения интересных костылей.
Агентство чаще поддерживает существующее, чем создает что-то полностью новое. То есть, разработчик нужен для реализации идей и задач от других направлений и отделов. Поэтому однообразия больше, чем сложных и интересных вызовов. К этому надо быть готовым.
Тревожность
Одна из самых больших проблем у агентств — это правильная оценка времени и ресурсов. При этом в процесс добавляется куча звеньев, на которые сам разработчик не может влиять.
Например, агентству могут дать заказ через два субподряда от конечного клиента. И то, что ты оценил проект в 20 часов, на деле может затянуться на 100, включая все согласования, затягивания и недопонимания. Таким образом у разработчика теряется чувство контроля над процессом и своей жизнью.
Недопонимание с менеджерами
Многие разработчики видят красоту в своём коде, для них это творчество.
При этом менеджеры агентств мыслят табличками, цифрами, решением бизнес задач и реализацией того самого time-to-market. Это справедливо для менеджеров во всех компаниях, но в агентстве эта деформация проявляется ещё сильнее, потому что агентству надо выживать и постоянно бежать, как хомяк в колесе.
На каком-то проекте может копиться технический долг, но менеджер может не понимать, в чём здесь опасность и не транслировать это клиенту: менеджеру кажется, что не стоит на это отвлекаться, а вместо этого можно в течение нового спринта выкатить новую фичу, это поднимет конверсию, и заказчик будет доволен.
Происходит столкновение двух разных миров, поэтому нужны хорошие управленцы, которые, с одной стороны, хорошо понимают задачи бизнеса, а с другой — хорошо «переводят» их разработчикам и придумывают интересные задачи внутри этой задачи. А также посылают правильные сигналы бизнесу, объясняя с помощью цифр, почему всё-таки важно потратить ещё один спринт на выполнение техдолга.
Но хорошие менеджеры, как и всё хорошее, встречаются не так часто.
В итоге: стоит ли рассматривать агентство как один из путей развития для разработчика?
Можно сказать, что агентство — достаточно здоровый путь начинающего специалиста. Там можно насмотреться и напробоваться всякого, чтобы понять — куда человека вообще тянет.
Например, он поработает на проекте с медучреждениями и поймёт, что ему нравится такой профиль.
Агентство отвечает запросу, имеющемуся у любознательных людей: вчитываться в код, скроллить Хабр, Reddit, сидеть по ночам и по выходным, чтобы делать какие-то интересные штуки для роста. Пока у программиста хватает энергичности, от адекватного агентства он получит достаточно много.
Как выбрать агентство разработки для трудоустройства?
Разговаривать и задавать вопросы, даже если они неудобные. Спрашивать про:
процесс онбординга (обучения и сопровождения), чтобы понимать, как вас заведут в команду;
процессы аттестации, как можно расти внутри, какие пути есть;
с какими проектами работает агентство и почему;
кто есть в команде, какова её структура, кто тимлид;
желательно поговорить с тимлидом до трудоустройства, чтобы понять, подходите ли вы друг-другу. То, что кажется в работе и коде важным для вас, для него может не представлять ценности;
с какими инструментами придётся работать — даже банально, используется ли Git и Docker.
Можно посмотреть рейтинги разработчиков в «Рейтинге Рунета» на предмет «какие компании есть на рынке» и изучить их сайты, портфолио и кейсы.
Если у агентства есть свои собственные разработки — это плюс. Это значит, что руководители и компания стараются делать собственные продукты, а не только занимаются перепродажей времени, выступая таким образом не в роли технического партнёра с собственной экспертизой, а в роли рекрутингового агентства.
Будем рады вашему опыту в комментариях.