Как стать автором
Обновить

Технический долг разорит вас. Если вы позволите, конечно

Время на прочтение 4 мин
Количество просмотров 23K
Блог компании Alconost Финансы в IT
Перевод
Переведено компанией-локализатором Alconost.

imageНедавно проект, над которым я работал, наконец запустился. Ладно, перезапустился. Речь о небольшом простеньком приложении для айфона Postography, которое позволяет рассылать бумажные открытки с картинками и текстом с вашего айфона. Отличный и, вроде бы, несложный проект, правда? Приложение, на создание которого не должно было уйти много времени.

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



Читать дальше →
Всего голосов 41: ↑38 и ↓3 +35
Комментарии 13

Цена сложности

Время на прочтение 3 мин
Количество просмотров 29K
Блог компании Express 42 Разработка веб-сайтов *
Мне всегда сложно было объяснить даже самому себе термин «технический долг». Никогда не было понятно, кто, кому, за что и сколько должен. И, если это долг, то как его выплачивать и можно ли выплатить полностью? А можно ли сделать так, чтобы должны были мне?
Читать дальше →
Всего голосов 68: ↑62 и ↓6 +56
Комментарии 35

Как 45 минут терять по $172 222 в секунду

Время на прочтение 4 мин
Количество просмотров 155K
Тестирование IT-систем *
Перевод
Это, пожалуй, самый болезненный отчет об ошибке, который я когда-либо читал. Он красочно описывает шаги, которые привели к потере 465 миллионов долларов компанией Knight Capital в связи с ошибкой программного обеспечения, проявившейся в прошлом году и обанкротившей компанию.

В этом отчете есть все характеристики технического долга в огромной, лишенной поддержки и запущенной базе кода (ошибка произошла из-за исполнения кода, который не использовали почти 9 лет) и ужасная и грустная история взаимодействия между разработчиками ПО и ИТ-профессионалами.
Читать дальше →
Всего голосов 178: ↑164 и ↓14 +150
Комментарии 94

Ланнистеры всегда платят свои долги! (и технические тоже)

Время на прочтение 10 мин
Количество просмотров 11K
Блог компании МойОфис Управление разработкой *Agile *Управление продуктом *

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


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


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


Что удалось получить в результате:


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

Давайте расскажу, как мы этого добились.


Читать дальше →
Всего голосов 17: ↑16 и ↓1 +15
Комментарии 12

Управление техническим долгом

Время на прочтение 5 мин
Количество просмотров 13K
Блог компании Нетология Анализ и проектирование систем *Проектирование и рефакторинг *Управление разработкой *
Перевод
Екатерина Сазонова, переводчик-фрилансер и студентка «Нетологии», специально для блога перевела статью Carl Tashian о том, как продакт- и проджект-менеджерам справляться с техническим долгом.

image

О проблемах разработки программного обеспечения, его оценке, контроле стоимости, тестировании написано огромное количество книг. Хочу поделиться с вами проверенными практиками, которые помогли мне как техническому менеджеру держать под контролем технический долг в растущем проекте.
Читать дальше →
Всего голосов 22: ↑16 и ↓6 +10
Комментарии 16

Технический долг и места его обитания

Время на прочтение 3 мин
Количество просмотров 18K
Программирование *Проектирование и рефакторинг *Управление разработкой *

Эта статья — вольный пересказ доклада, который я посетил на конференции GOTO Berlin 2017: A Crystal Ball to Prioritize Technical Debt.

Изображения из доклада и права на них принадлежат автору @AdamTornhill.

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

Но как формализовать понятие технического долга, чтобы объяснить его другим? И, тем более, объяснить это менеджеру так, чтобы получить одобрение на рефакторинг? Как найти все места в проекте, которые нужно по-хорошему переписать, и как определить, какие из них должны быть переписаны в первую очередь?

Если эти вопросы неоднократно у вас возникали, прошу под кат.
Читать дальше →
Всего голосов 35: ↑34 и ↓1 +33
Комментарии 22

Riot Games: анатомия технического долга

Время на прочтение 15 мин
Количество просмотров 18K
Разработка игр *Управление проектами *
Перевод
Привет, меня зовут Билл «LtRandolph» Кларк. Я работаю техническим руководителем команды создания чемпионов LoL. За последние несколько лет я успел поработать в разных отделах разработки League, но единственное, чем я был постоянно одержим — это технический долг. Мне нужно найти его, понять его и, при возможности, устранить его.

Когда разработчики обсуждают любую существующую технологию, например патч 8.4 League of Legends, то часто упоминают технический долг. Я называю техническим долгом код или данные, за которые придётся расплачиваться будущим разработчикам. Этой печальной стороне разработки ПО посвящено бесчисленное количество постов, статей и определений. В своём посте я хочу обсудить виды технического долга, с которыми мне пришлось встретиться при работе в Riot, и рассказать о модели, которую мы начали использовать в компании. Если бы меня попросили выделить самый важный урок, который можно извлечь из этой статьи, то я сказал бы, что это описанная ниже метрика «инфицирования».


Метрики


Чтобы принимать правильные решения о том, какие проблемы необходимо устранить сейчас, а какие можно ставить на потом (или, будем реалистичными, совершенно забыть о них), нам нужен какой-то способ измерения каждого конкретного элемента технического кода. Я выбрал для оценки три основные оси измерения: влияние, затраты на устранение и инфицирование.
Читать дальше →
Всего голосов 33: ↑32 и ↓1 +31
Комментарии 16

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

Время на прочтение 5 мин
Количество просмотров 14K
Блог компании SimbirSoft Управление разработкой *Управление проектами *
Туториал
Каждому разработчику знакома ситуация, когда реализация новой возможности в системе занимает большое количество времени, но релиз уже близко, а тимлид или менеджер проекта пятый раз за день задают уже надоевший вопрос: “Ну когда будет готово?”. И тогда встает непростой выбор — сделать все правильно и не уложиться в сроки релиза или реализовать минимально работающий, но не идеальный с точки зрения технического решения, функционал. Очевидно, что в большинстве случаев будет выбран второй вариант, так как релиз и предоставление результата клиентам здесь и сейчас важнее чистоты кода и архитектуры системы. Но проходит несколько месяцев, и вот уже старое не идеальное техническое решение мешает реализации другого функционала. И дальше такие решения будут накапливаться в огромный ком. Разбираясь с этой проблемой, очень важно сделать правильные выводы и выбрать нужное решение. От этого решения будет зависеть дальнейшая судьба всего проекта. В данной статье мы постараемся разобраться с природой технического долга и посоветовать пути его устранения.
Читать дальше →
Всего голосов 16: ↑13 и ↓3 +10
Комментарии 11

Как оценить эффективность команды

Время на прочтение 15 мин
Количество просмотров 31K
Блог компании Конференции Олега Бунина (Онтико) Управление разработкой *Управление проектами *Управление персоналом *
Классный стартап в начале своего пути похож на Сапсан. Маленькая команда стремительно набирает обороты и несётся в будущее, везя в продакшн кучу задач. Если проект получился перспективный, такой как Skyeng, то уже через несколько лет команд будет существенно больше, и не исключено, что среди них появятся паровозы, в которых нужно непрерывно подкидывать дрова в топку, чтобы хоть что-то докатилось до пользователей.


Посмотрите или прочитайте доклад Алексея Катаева на Saint TeamLead Conf, если не знаете, по каким формальным признакам определить классная ли у вас команда. Если хотите уметь измерять технический долг в часах, а не оперировать категориями «совсем чуть-чуть», «сколько-то», «ужасно много». Если ваш продакт-менеджер считает, что команда из трех человек за месяц сделает 60 задач — покажите ему эту статью. Если ваш руководитель обвешал разработку метриками и предлагает вам принимать меры на основе результатов вроде: «34% считают, что в команде есть проблема с планированием», этот доклад для вас.


Всего голосов 43: ↑40 и ↓3 +37
Комментарии 20

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

Время на прочтение 3 мин
Количество просмотров 10K
Проектирование и рефакторинг *Логические игры
Перевод
Выигрыш невозможен. Вы только решаете, насколько быстро проиграть


Какой следующий ход?

Многим нравится тетрис, мне тоже. Помню, как сыграл в первый раз на Nintendo Game Boy моего друга. Возможно, у вас в голове тоже застряла та мелодия. Тетрис не только одна из лучших игр всех времён, но и отличная аналогия для технического долга. Она даёт общее понимание технического долга и его воздействия.

Расскажу ещё историю из личного опыта, как моя команда уменьшила технический долг в каком-то биллинговом коде и при этом исправила ошибку на миллион долларов в год.
Читать дальше →
Всего голосов 45: ↑41 и ↓4 +37
Комментарии 13

Дорогой клиент, вот почему это изменение заняло столько времени

Время на прочтение 7 мин
Количество просмотров 7.4K
Анализ и проектирование систем *Проектирование и рефакторинг *Отладка *Управление разработкой *Управление продуктом *
Перевод
Изменения в сложных программных системах, кажется, занимают вечность, не так ли? Даже инженерам часто кажется, что изменения идут больше положенного, хотя мы сознаём всю сложность системы!

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

Поэтому рано или поздно заказчик пришлёт письмо: «Почему, чёрт возьми, это занимает так много времени?» Не будем забывать, что у нас как инженеров-программистов есть окно в мир, которого они зачастую лишены. Они очень нам доверяют, но иногда кажущееся незначительным изменение отнимает действительно много времени. Из-за этого и возникают вопросы.
Читать дальше →
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 4

Технический долг

Время на прочтение 4 мин
Количество просмотров 21K
Проектирование и рефакторинг *Управление проектами *Управление продуктом *
Перевод
Программные системы склонны к накоплению мусора — внутренних недоработок, которые затрудняют дальнейшее изменение и расширение системы по сравнению с идеальным кодом. Технический долг — это метафора, придуманная Уордом Каннингемом. Она объясняет, как воспринимать этот мусор, по аналогии с финансовым кредитом. Дополнительные усилия, необходимые для добавления новых функций, — это проценты по кредиту.


Читать дальше →
Всего голосов 20: ↑20 и ↓0 +20
Комментарии 2

Жизнь до рантайма. Доклад Яндекса

Время на прочтение 14 мин
Количество просмотров 5.9K
Блог компании Яндекс JavaScript *Интерфейсы *Промышленное программирование *Системы сборки *
В большом проекте может возникнуть задача идентификации изменений для конечного пользователя по отличиям в коде фронтенда приложения. Разработчик из Яндекс.Маркета Никита Сидоров @nickshevr рассказал, как мы решали эту проблему при помощи библиотеки Diffector, о построении и анализе графа модулей в Node.js-приложениях и о поиске дефектов в коде до его запуска.



— Сегодня я постараюсь быть с вами максимально откровенным.
Читать дальше →
Всего голосов 25: ↑22 и ↓3 +19
Комментарии 3

Семь «абсолютных истин» джуниора, от которых пришлось отучиваться

Время на прочтение 10 мин
Количество просмотров 65K
Тестирование IT-систем *Управление проектами *Карьера в IT-индустрии
Перевод


Скоро наступит десятый год, как я профессионально занимаюсь программированием. Десять лет! И кроме формальной работы, почти две трети своей жизни я что-то создавала в интернете. С трудом вспоминаю годы, когда я не знала HTML: даже странно, если подумать об этом. Некоторые дети учатся музыке или балету, а я вместо этого создавала волшебные миры, кодируя в своей детской.

Размышляя об этом первом десятилетии регулярного получения денег за ввод странных символов в терминал, хотелось бы поделиться некоторыми наблюдениями, как изменилось моё мышление за годы работы.
Читать дальше →
Всего голосов 87: ↑77 и ↓10 +67
Комментарии 167

Приглашаем на DINS Java EVENING 18 сентября

Время на прочтение 3 мин
Количество просмотров 870
Блог компании DINS Java *Конференции
Приглашаем всех интересующихся java-разработкой на очередной открытый DINS Java EVENING, который пройдет в нашем офисе на Старо-Петергофском, 19.

Этим вечером Денис Репп из Wrike расскажет, как организовать работу с техническим долгом в критически важных частях продукта. Андрей Маркелов из Infobip покажет на конкретных примерах, как организовать анализ времени отклика Java-сервисов.

Под катом — подробнее о докладах и спикерах, ссылка на регистрацию для участия во встрече, материалы с прошлой встречи.


Читать дальше →
Всего голосов 13: ↑11 и ↓2 +9
Комментарии 0

Рефакторим параллельно с разработкой: наш опыт и два чек-листа

Время на прочтение 6 мин
Количество просмотров 8.7K
Блог компании Skyeng Программирование *Проектирование и рефакторинг *Управление разработкой *Управление персоналом *


Для множества команд рефакторинг — это боль. Потому что если ты занимаешься рефакторингом, то не разрабатываешь основной продукт, а если не занимаешься — растет технический долг проекта. В какой-то момент команды приходят к мысли: «Давайте разграничим рефакторинг и разработку и выделим на него, например, 20% наших человеко-часов, а остальное время продолжим заниматься разработкой!» Мысль эта неплохая, вот только дело в том, что на каждые 100 разработка-часов вы никогда не получите 20 чистых часа рефакторинга. Потому что «разработка» — это не только работа с кодом.

Если мы говорим о зрелых командах, а не сжатых в материальную точку мини-коллективах на 3-5 человек, то «разработка» включает в себя еще целую массу различных активностей команды кроме написания кода. В «разработку» можно записать так нелюбимые многими митинги, работу с документацией, ведение отчетности в таск-менеджерах и так далее. Все это съедает примерно 30% от наших часов, выделенных на разработку. И как-то незаметно у нас получается, что вместо картины «80 часов кодим, 20 часов рефакторим» мы получаем неприглядную цифру в ~13 часов на, непосредственно, сам рефакторинг, потому что все остальное было поглощено другими активностями.

Ниже мы расскажем, как все же совместить разработку с рефакторингом так, чтобы технический долг проекта не рос, будто снежный ком, а еще поговорим о правильном распределении времени и расстановке приоритетов.
Всего голосов 36: ↑31 и ↓5 +26
Комментарии 15

Простые причины неизбежности технического долга

Время на прочтение 5 мин
Количество просмотров 9K
Совершенный код *Проектирование и рефакторинг *Управление разработкой *Управление проектами *Управление продуктом *
Перевод

image


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

Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Комментарии 24

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

Время на прочтение 7 мин
Количество просмотров 12K
Совершенный код *Проектирование и рефакторинг *Управление разработкой *Управление проектами *Управление продуктом *
Перевод


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


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

Читать дальше →
Всего голосов 30: ↑30 и ↓0 +30
Комментарии 20

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

Время на прочтение 5 мин
Количество просмотров 9.4K
Совершенный код *Проектирование и рефакторинг *Управление разработкой *Управление проектами *Управление продуктом *
Перевод


Вы знаете, каково это. Впихнуть всё необходимое в спринт и так весьма непросто, а ведь ещё нужно где-то найти дополнительные 10–20% времени разработчиков на возврат технического долга. Если вы когда-либо отстаивали необходимость выкраивания времени на это, то вы знаете, что это походит на крестовый поход эпических масштабов.


Но сделать это можно, и в этом руководстве мы выясним, как именно.

Читать дальше →
Всего голосов 18: ↑16 и ↓2 +14
Комментарии 5

Звездолеты на ДВС. Выжить в схватке с техническим долгом

Время на прочтение 10 мин
Количество просмотров 7.9K
Блог компании Wrike Программирование *Проектирование и рефакторинг *Управление разработкой *Управление проектами *


Как выжить в схватке с техническим долгом? Что делать, если у вас легаси тяжелой стадии? В статье на примере трёх кейсов предлагаю разобраться, как построить процесс работы с техническим долгом и какие инженерные подходы для этого использовать.
Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 7
1