В своей прошлой статье я рассмотрел, что такое легаси и почему оно не является техническим долгом и вот пришло время поговорить про технический долг и как с ним бороться.
Давайте определимся с тем, что такое технический долг. Я для себя определяю технический долг как компромисс между качеством и скоростью разработки. Что это значит? Все просто, при разработке новой фичи мы добились приемлемой производительности и выпустили ее в прод, при этом мы прекрасно понимаем, что код там не оптимален. Почему так делается? Все просто, при разработке нового функционала вам, во-первых, нужно проверить гипотезу, что ваши пользователи будут им пользоваться, и, во-вторых, число пользователей вначале всегда мало. Из этого следует, что вначале с оптимизациями заморачиваться не совсем рентабельно, и только увидев, что новый функционал начинает набирать популярность, можно запускать вторую итерацию по оптимизации. Так поступают в стартапах здорового человека, а в стартапах курильщика забывают (или просто забивают) о том, что первый вариант нового функционала написан не оптимально и возвращаются к нему тогда, когда возникнут проблемы. Вот и получается, технический долг - это работы, которые вы отложили на будущее. Как и все долги, технический долг нужно выплачивать, иначе, как и долги в реальной жизни, он приведет к невозможности дальнейшей разработки нового функционала. Основные причины, которые приводят у увеличению технического долга:
-
Низкая квалификация менеджмента, когда на выплату технического долга не выделяется время сотрудников. Это, пожалуй, самая частая причина, по которой накапливается технический долг.
-
Несоответствие штатной численности количеству выполняемых задач. Эта причина идет рука об руку с п. 1, т.к. менеджмент выставляет приоритет задач и если не хватает рук, то более высокий приоритет получают продуктовые, а не технические задачи.
-
Низкая квалификация и отсутствие мотивации ее повышать у сотрудников. Если в вашей команде девиз "И так сойдет", то у меня для вас плохие новости, вы постоянно будете выплачивать технический долг. Если ваши разработчики не поднимают вопросов выплаты технического долга, то это тоже плохой сигнал.
Если у вас выстроена работа с техническим долгом, то он для вас не будет проблемой. Рассмотрим несколько вариантов работы техническим долгом:
-
Соблюдайте баланс между продуктовыми и техническими задачами в спринте. Выделите процент технических задач которые вы будете решать в каждом спринте.
-
Заведите не функциональный бэклог владельцем которого является технический топ менеджер (например CTO). В купе с п. 1 это позволит вам сократить бесконтрольный рост технического долга.
-
Устраивайте техдолговые дни, недели, месяцы когда все занимаются только задачами по устранению технического долга.
Как я уже сказал, технический долг, как и любые другие долги требует выплаты. Баланс между бизнес и техническими задачами позволит вам контролировать объем технического долга.