О точности технического долга — O’Reilly

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

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

Учись быстрее. Копай глубже. См. ниже.

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

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

Иногда мы говорим об этом распад кода а также программная гниль. Эти термины дают представление о деградации с течением времени. Это кажется точным и достоверным. Они также предлагают ответ: чистка (мы чистим зубы, чтобы снизить риск кариеса) или лечение (мы обрабатываем дерево, чтобы оно не гнило). Пока что это нормально … но проблема с этими метафорами в том, что они относятся к естественным процессам, которые происходят независимо от того, что мы делаем. Если не чистить зубы, они испортятся. Если вы не коснетесь кода, он не будет внутренне ухудшен.

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

Пожалуй, самая популярная метафора основана на финансовом долге, которую исходит от Уорда Каннингема. 1992 г.. Как описано Мартином Фаулером v 2003 г.:

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

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

Хотя мы знаем, что по определению ни одна метафора не идеальна, есть два распространенных способа неправильного использования метафоры: предположение, что технический долг обязательно является чем-то неправильным; отождествление технического долга со стоимостью финансового долга. Акцент первого смещен, а второй является ошибкой категории.

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

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

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

Это имеет явное возражение и подразумевает: долг — это ссуда. Долг подлежит погашению, а не погашению:

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

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

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

Если мы определим это количественно, что мы будем определять количественно? Знаем ли мы запах кода? Какое значение имеет код запаха долга? Постоянно ли оно в зависимости от типа ароматического кода? Например, для повторяющегося кода характерна единая цена? И независимы ли запахи кода друг от друга? Имейте в виду, что, например, дублирование иногда используется для уменьшения залога, поэтому в этом контексте дебет становится кредитом. Мы можем сделать вывод, что запах кода — это не изолированное явление, требующее поиска единственной стоимости долга, поэтому очевидно, что это более сложная проблема, зависящая от многих факторов. Что важно как многомерная задача? И как? А как мы узнаем? А что отразит распределение ценностей или, вернее, распределение ценностей? Затраты на ремонт? Или, если честно, смета стоимости ремонта?

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

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

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


[

watch online
watch online
watch online
watch online
watch online
free fortnite skins generator
among us hack
among us mod menu
among us hack
among us mod menu
among us hack
among us mod menu
among us hack
among us mod menu
watch online
watch online
watch online
brawl stars gems generator
cash app free money generator
clash of clans hack
clash royale hack
free coin master SPINS
free coin master SPINS
watch online
watch online
watch online
dragon city generator
watch online
watch online
watch online
watch online
watch online
xbox gift card generator
free fortnite skins generator
free fortnite skins generator
free v bucks
free coin master SPINS
free fortnite skins generator
free fortnite skins generator
free fortnite skins generator
free fortnite skins generator
free fortnite skins generator
google play gift card generator
homesacpes hack generator
paypal free money
paypal free money
psn free gift card generator
psn free gift card generator
free robux
robux free generator
robux free generator
free robux
robux free generator
robux free generator
free robux
robux free generator
robux free generator
free robux
robux free generator
robux free generator
free robux
robux free generator
robux free generator
free robux
robux free generator
robux free generator
free robux
robux free generator
robux free generator
free robux
robux free generator
robux free generator
free robux
robux free generator
robux free generator
free robux
robux free generator
robux free generator
free roblox gift cards generator working
free roblox gift cards generator working
free roblox gift cards generator working
free roblox gift cards generator working
free v bucks
clash royale hack
free v bucks
free v bucks
free v bucks
xbox gift card generator
free v bucks
free v bucks
xbox gift card generator
watch online
watch online
gardenscapes generator
free fire hack
watch online
watch online
gta 5 free money
gta 5 free money
gta 5 free money
watch online
watch online
watch online
itune free gift card generator
instagram free followers
watch online
watch online
free netflix account generator
psn free gift card generator
free roblox gift cards generator working
onlyfans premium account
onlyfans premium account
pixel gun 3d hack
pubg free uc generator
free robux
robux free generator
robux free generator
free roblox gift cards generator working
free roblox gift cards generator working
watch online
watch online
watch online
watch online
watch online
watch online
free v bucks
watch online
watch online
watch online
watch online
watch online
watch online
watch online
watch online
watch online
watch online
watch online
watch online
watch online

]

Add a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *