Одной из проблем, которая может быстро возникнуть при выращивании продукта, является явление, называемое техническим долгом. Это одна из самых неправильно понимаемых фраз в ИТ-индустрии. Некоторые люди считают его воплощением самого темного зла и пытаются избежать его любой ценой. И часто где-то рядом можно услышать самое страшное для любого продуктового директора заявление: «Нам нужно это переписать!». У вас, наверное, мурашки по коже, даже читая это.

Так что же такое технический долг?

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

Марио Андретти, пилот Формулы-1, однажды сказал:

Если кажется, что все под контролем, вы просто недостаточно быстро двигаетесь.

И в этой цитате что-то есть. На первом этапе жизненного цикла продукта сознательно созданный технический долг служит топливом для приведения в движение этого незрелого транспортного средства. Было бы неразумно инвестировать в удобные автокресла, когда мы не знаем, куда едем и когда заправимся. Хотя технически возможен успешный выход из фазы MVP без технического долга, в реальности это вряд ли произошло. Обычно это признак того, что вы ехали слишком медленно.

Все дело в контексте

Стоит отметить, что технический долг в его первоначальном определении требует от должника сознания. Таким образом, в момент принятия решения, несмотря на осведомленность о лучших решениях, мы выбираем несовершенные из-за некоторых ограничений (например, бюджета), которые в данный момент мы ценим больше. И все эти мелкие несовершенства складываются в идеальное решение для данного контекста. Но иметь в руках только молоток и повсюду видеть гвозди — это не влезать в долги. Это просто некомпетентность.

Источник: monkeyuser.com

Однако давайте предположим, что раньше у вас были здоровые отношения с совершенством. Ваш продукт получил признание, у вас есть несколько довольных клиентов и инвесторов, которые поверили в ваше видение. Какое-то финансирование было налажено, так что с деньгами проблем больше не было. Значит ли это, что мы должны погасить весь долг с предыдущего этапа? Хорошо. Это один из вариантов. Позвольте мне ответить на это вопросом. Должны ли вы погасить ипотеку, если вы только что получили солидный бонус или унаследовали немного денег? Это зависит. Насколько велики сейчас процентные ставки? Как выглядит ваша ликвидность? Есть ли у вас альтернативные способы вложения наличных с процентной ставкой выше, чем по ипотеке?

Как управлять техническим долгом?

Когда мы относимся к долгу как к инструменту, мы можем подходить к нему прагматично и разумно. Таким образом, речь должна идти не о погашении долга, а об управлении техническим долгом. Это означает корректировку кредитного плеча компании. Если интересы съедают все наши усилия, нам следует подумать о снижении доли заемных средств. Если команда разработчиков постоянно борется с добавлением новых функций, то хирургический рефакторинг в спорной точке, вероятно, позволит им вздохнуть. Как решить, куда мы должны положить кирку? В начале хорошо бы определить, где мы не должны. Как правило, запахи кода не являются серьезной проблемой, если они относительно разделены по пути, они не мешают основному потоку разработки. Если что-то работает и почти не меняется (или даже не меняется), следует сосредоточиться на других наиболее важных местах. С другой стороны, если мы видим или ожидаем большой поток будущих улучшений в некоторых секторах продуктов, это идеальное место для того, чтобы провести там время и снизить потери. Такая сортировка называется оптимизацией векторов изменений. Рефакторинг только ради рефакторинга обычно сжигает деньги.

Баланс совершенства

Звучит просто, но на самом деле дело обстоит сложнее. В логическом плане это вполне оправданный подход. Но программное обеспечение создается людьми, а не роботами. Таким образом, в игру вступают индивидуальные перспективы, эмоции и цели. Разработчики обычно имеют естественную склонность к тому, чтобы их воспринимали как компетентных специалистов в своей области. Это то, что почитается в сообществе программистов. Если ты так поступаешь, ты можешь собой гордиться и чувствовать себя частью племени. Поэтому часто кажется неправильным писать что-то несовершенное, это похоже на нарушение веры. Этот синдром особенно проявляется у молодых амбициозных людей. И я считаю, что природный энтузиазм нужно использовать во благо. Вот почему нам нужно больше опытных лидеров, которые могут помочь направить эти устремления и создать беспроигрышные ситуации для продукта и команды. В конце концов, ни одна компания не может существовать без замечательных людей.

Источник: dilbert.com

Подводя итог. Работа с техническим долгом — это не простое занятие. Это скорее постоянное поддержание баланса и поиск потных мест. Управление техническим долгом требует отличной эмпатии, прагматизма и общения. Помимо этой проблемы, на этапе post MVP вы можете столкнуться с другими проблемами, которые я описал в этой статье.

Первоначально опубликовано наhttps://appunite.com/blog/what-is-technical-debt-and-how-to-manage-it