И как очиститься

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

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

Рассмотрите эту практику в долгосрочной перспективе, и вы поймете, почему это называется долгом, хотя валюта, которую вы ссужаете, не видна.

Я предлагаю несколько советов из лучших побуждений от Роба Зубера (технический директор Circle CI), Андреа Гуле (генеральный директор Corgibytes) и Иветт Паскуа (технический директор Meetup), чтобы помочь сдержать горящая земля.

Как возникает технический долг

Технический долг не возникает случайно; на самом деле, это происходит постоянно.

Строго говоря, он создается и сознательно принимается.

Распространено мнение, что это связано с небрежностью, поспешностью или даже небрежностью со стороны разработчиков.

Хотя долг может возникнуть в результате халатности, он может быть получен умышленно. Результат - попытка получить результаты быстрее. Трудно всегда быть на 100% сфокусированным, точным и смотреть на все с высоты птичьего полета.

В конце концов, мы с тобой всего лишь люди.

Бывают сроки, и в большинстве случаев вы уже опаздываете в разработке и хотите закончить следующую функцию или что-то еще, что вас интересует. Функция, которую вы в настоящее время реализуете, не обязательно должна содержать передовые методы. Это просто должно сработать.

Другой аналог - кредитная карта или ипотека - эффективность заимствования сейчас в обмен на дополнительную работу по исправлению кода позже.

Точно так же, как вы можете занимать деньги ответственно или небрежно, вы также можете стратегически или безрассудно наращивать технический долг.

Истинное лицо технического долга

Технический долг мне напомнил фильм «Пила», где парня приковали наручниками к батарее отопления. Ситуация была для него настолько безвыходной, что он отрезал большой палец руки в наручниках, чтобы сразу же получить выгоду. Но расписка приходит позже.

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

Правильность, тестируемость, чистота приносятся в жертву, потому что цель должна быть срочно достигнута в срок. Крайний срок проведения выставки особенно популярен в качестве аргумента в этом контексте.

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

  • В прошлом вы пошли на компромисс, чтобы получить немедленную выгоду (например, выпустить функцию)
  • Решения, которые имели смысл в то время и теперь нуждаются в обновлении
  • Области кода, зависимости и удобство использования, которые сопротивляются изменениям
  • Регулярное плановое обслуживание

Почему стоит заботиться о техническом долге

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

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

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

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

1. Влияние на разработчиков

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

2. Влияние на команды

  • Скорость разработки варьируется и, в некоторых случаях, ниже, чем раньше.
  • Задачи жестко распределены.
  • Рабочий процесс команды затруднен.
  • Планирование уже не так надежно, как раньше.
  • Мораль команды будет медленно, но неуклонно снижаться.

3. Воздействие на организации

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

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

Итак, как вы расставляете приоритеты в техническом долге, который необходимо устранить, постоянно принося новые интересные выгоды своим клиентам?

Возврат долга возможен

Вы можете исправить нарушения профессиональных стандартов в своем коде, но вы должны понимать, что это делается не сразу.

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

Легкие не заживают сразу после того, как вы бросили курить. Исцеление - это непрерывный и длительный процесс.

Если необходимо исправить технические долги или другие примеси, это сначала происходит под поверхностью. Внешне программное обеспечение вроде в порядке; то, что приманки под капотом, намного хуже.

Чтобы исцеление произошло, производительность разработчика должна снизиться. А признаки недостатка или исправления могут проявиться позже, намного позже. Ущерб должен расти медленно.

Удержание крайнего срока снаружи не дается бесплатно. Это цена нанесенного ущерба.

Как предотвратить задолженность

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

1. Прекратите постоянно причинять вред

Во-первых, мы с тобой должны перестать постоянно причинять себе вред. Даже если раны заживают, наносить себе шрамы - не добродетель.

Биться головой о стену, порезаться, принимать наркотики ... вы можете пережить это, но за это приходится платить. Здоровье выглядит иначе.

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

В противном случае это может повлиять на вас дольше, чем ожидалось.

2. Используйте показатели для количественной оценки воздействия

Иветт Паскуа (технический директор Meetup) советует использовать показатели, которые указывают, когда и где ваша команда замедляется из-за технического долга.

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

Во многом это связано с определением того, какой технический долг сейчас наиболее полезен для нас », - говорит Паскуа. «Если мы хотим продолжить работу в определенной области, которая, по нашему мнению, принесет бизнесу действительно высокую ценность и поможет нам добиться успеха в нашей компании, для нас, вероятно, будет наиболее эффективным сначала выплатить большую часть технического долга в этой области [… ] У вас никогда не бывает времени делать все, что вы хотите, поэтому расставьте приоритеты. Речь идет не о самом худшем долге, а о том, какой долг лучше всего решить в первую очередь, учитывая план и стратегию вашей компании. - Иветт Паскуа

3. Ежедневно устраняйте технический долг

Роб Зубер (технический директор Circle CI) рассматривает подход команды к тому, что он называет работой по статус-кво. Культура команды вокруг повседневных и регулярных задач может существенно повлиять на технический долг.

Мы много думаем о планировании распределения наших усилий […] Идея о том, что сто процентов времени моей инженерной группы или каждого времени каждого инженера будет уходить на разработку функций, - вот где начинаются ваши проблемы. Никто из нас не совершенен в первый раз, когда мы что-то пишем. Мы все знаем, что как только мы что-то выложим, возникнет проблема, и нам придется ее исправить. Распределение бюджета таким образом, что определенная часть его всегда выделяется на обслуживание и исправление ошибок. Некоторый процент будет посвящен техническому долгу и очистке или инвестициям в технологии. - Роб Зубер

Совместная проверка кода - идеальный ритуал в процессе разработки.

Перестаньте думать о своем программном обеспечении как о проекте. Думайте об этом как о доме, в котором вы собираетесь жить надолго […] - Иветт Гуле.

4. Необходимы систематические меры

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

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

Более того, технический долг не уменьшается автоматически; Вы должны действовать. В противном случае он накапливается, потому что часто не уменьшается сразу.

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

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

5. Оцените жизненные циклы продукта.

Для Андреа Гуле (генеральный директор Corgibytes) соображения по устранению технической задолженности вытекают из самого жизненного цикла продукта. По сути, она проводит анализ рисков как для создания технического долга, так и для управления им.

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

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

Решение проблемы технического долга не означает также снижения вашего прогресса.

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

Включите эту процедуру в обычные рабочие процессы своей команды.

Выводы

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

  1. Прекратите постоянно вредить своей кодовой базе
  2. Используйте показатели для количественной оценки воздействия
  3. Ежедневно устраняйте технический долг
  4. Применяйте систематические меры
  5. Оцените жизненные циклы продукта

Вывод

В статье не перечислены все методы профилактики, которые вы могли бы применить. Это просто убило бы длину этой статьи.

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

Чтобы действительно попасть в пещеру скрытней; вот несколько ссылок, чтобы стать мастером в этой теме:

Уроки и примеры из вашего последнего курса были уоооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооо Разве вы не помните, что вы узнали и что уже кодировали?

Давно пора открыть для себя преподавательскую академию Arnold Code. Воспользуйтесь этим бесплатным видеокурсом« Превью пиратского приключения , чтобы открыть для себя 7 таблиц SQL и баз данных». Я преподаю JavaScript, HTML и CSS и C #.

использованная литература