Заметки о совмещении ролей в командах разработки

6d632618e14c5be46de17aaacdf5af22.png

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

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

Сейчас будет немного оффтопа. Я активно занимаюсь спортивным туризмом. При наборе группы в поход нередко возникает следующая ситуация: приходит участник-новичок, у которого личное снаряжение весит 20+ килограммов. Также ему нужно нести 10–12 килограммов общественного снаряжения и еды. Итого выходит уже более 30 кг.
Ещё приходит опытный участник, который потратил много времени, сил и денег на то, чтобы его набор личного снаряжения весил 10–11 килограммов. Физическая и техническая подготовка у него также гораздо лучше, чем у нашего новичка.

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

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

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

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

Хороший синьор бэкенд разработчик получает 300–400 т.р. в месяц. Для того чтобы этого добиться, он потратил кучу времени на образование, разбирается в тонкостях работы хранилищ данных, сетей, брокеров сообщений, алгоритмах, фундаментальных принципах работы своего языка программирования и других инструментов, которые он применяет, системном дизайне, аналитике, тестировании и нередко в продуктовых вопросах. Он принимает решения, которые влияют на исполнение десятков тысяч запросов в секунду, несёт ответственность за продукт и вообще за всё что с ним происходит. Я не веду речи о синьор ангулар или реакт разработчиках и прочих формошлёпах (уж при всём уважении), а говорю об инженерах-программистах, решающих сколько-нибудь крупные технические задачи.

Миддл тестировщик получает ~100 т.р. в месяц, при этом он знает как отправить запрос постманом (иногда курлом, но это уже 150 т.р.), как написать sql типа select *, и что бывают GET и POST запросы. Ещё есть некая «теория тестирования», которая изучается за месяц. А для всего остального есть разработчики, на которых переложат то, что выходит за рамки.

Как-то так получается, что стоимость айтишника в зависимости от его навыков — это логарифм, и с некоторого момента развиваться в инженерном направлении становится просто невыгодно.

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

© Habrahabr.ru