Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Разработка в долг

364 views

Published on

Презентация подготовлена по материалам выступления Александра Радкевича на витебском Весеннем MiniQ (https://vk.com/spring_miniq), который был проведен 23 марта 2017.

— Александр, почему ты решил рассказать именно о техническом долге? Неужели так накипело?
— Я мог бы поговорить и на более "хардкорную" тему, но выбрал технический долг. Уверен, что эта тема в той или иной степени касается каждого проекта. Мне кажется, будет честно, если каждый участник проекта будет иметь четкое представление о том, что такое технический долг и как с ним работать. Тем более я не припомню, чтобы витебские программисты уже говорили об этом, поэтому тем интереснее будет услышать их мнение и вопросы.

Published in: Software
  • Be the first to comment

Разработка в долг

  1. 1. Разработка в долг 23 марта, 2017
  2. 2. 2 Александр Радкевич Инженер-программист, EPAM Systems Обо мне
  3. 3. 3 1. влияет на время, стоимость и качество проекта 2. практически неизбежен для любого проекта 3. каждый участник проекта должен знать, что это такое Почему именно технический долг?
  4. 4. 4 Впервые использовал метафору «технический долг» в 1992 году, чтобы объяснить финансистам, почему нужно внести изменения в архитектуру приложения. Уорд Каннингем By Carrigg Photography for the Wikimedia Foundation – Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=17697618
  5. 5. 5 Источники технического долга Код, над которым вы работаете, должен отображать ваше текущее понимание того, как должна работать ваша программа. Главная идея метафоры
  6. 6. 6 это ресурсы, которые вам необходимы для того, чтобы привести код в состояние, соответствующее вашему текущему пониманию. Технический долг –
  7. 7. 7 • необходимость подстраивать архитектуру приложения под текущее понимание Источники технического долга
  8. 8. 8 • более детальное изучайте предметную область • содержите код в чистоте • пишите техническую документация • просматривайте чужой код • практикуйте техники, позволяющие как можно скорее выявить проблемы и повысить качество кода (парное программирование) Как минимизировать такой долг?
  9. 9. 9 Иногда вам может понадобиться такое решение, которое не является устойчивым в долгосрочной перспективе, но приносит краткосрочную выгоду. Дядя Боб (Роберт Мартин) By Tim-bezhashvyly - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=38703621
  10. 10. 10 Может быть стоит взять кредит?
  11. 11. 11 • необходимость подстраивать архитектуру приложения под текущее понимание • временные решения, приносящие краткосрочные выгоды Источники технического долга
  12. 12. 12 • не берите долг, если это возможно • полученная выгода должна превышать расходы на устранение долга • возвращайте долги как можно скорее • не устраивайте в коде беспорядок Как решать такие проблемы?
  13. 13. 13 Беспорядок – не технический долг, это просто беспорядок
  14. 14. 14 Временно – не значит спустя рукава
  15. 15. 15 Технический долг – это метафора, поэтому реальный вопрос заключается в том, полезна ли метафора долга для размышления о том, как решать проблемы с дизайном кода, и как донести эти размышления до других. Мартин Фаулер By Webysther Nunes - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=39594469
  16. 16. 16 Квадрант технического долга Необдуманный (reckless) Обдуманный (prudent) У нас нет времени на дизайн Умышленный (deliberate) Неумышленный (inadvertent) Нам нужно срочно выпустить релиз, затраты на исправление долга окупятся с лихвой Многоуровневая архитектура? Не, не слышали Теперь мы знаем, как мы это должны были делать
  17. 17. 17 • дублирование кода • низкое покрытие тестами • отсутствие или низкое качество комментариев и документации к коду • чрезмерная сложность кода • нарушение стандартов, несоблюдение стиля кода • код с запашком • код с долгом достался вам по наследству Другие источники технического долга
  18. 18. 18 • необходимость подстраивать архитектуру приложения под текущее понимание • временные решения, приносящие краткосрочные выгоды • проблемы с качеством кода Источники технического долга
  19. 19. 19 Работа с техническим долгом • закладывайте время на работу с техническим долгом • анализируйте ваш технический долг • устанавливайте рабочие соглашения в команде • выделяйте время на образование На уровне релиза (долгосрочная перспектива)
  20. 20. 20 Работа с техническим долгом • поддерживайте высокий уровень покрытия тестами • контролируйте накладные расходы, вызванные техническим долгом • насколько вы удовлетворены от работы с вашим кодом? • учитывайте зависимости между разными составляющими технического долга • проводите ретроспективы • создавайте истории по работе с техническим долгом • используйте непрерывную интеграцию На уровне итерации (среднесрочная перспектива)
  21. 21. 21 Работа с техническим долгом • просматривайте чужой код • практикуйте парное программирование • придерживайтесь стандартов кода • сделайте технический долг видимым На уровне истории пользователя (короткосрочная перспектива)
  22. 22. 22 Какие еще могут быть долги? • по качеству (quality debt) • по функциональности (feature debt) • пользовательского взаимодействия (user experience debt) • навыков(skills debt) Помимо технического долга выделяют также долги:
  23. 23. 23 • технический долг может быть нашим союзником, если нам нужно выиграть время • лучший вариант - избегать долгов, однако вам это вряд ли удастся • технический долг снижает продуктивность, поэтому старайтесь избавиться от него как можно быстрее • анализируйте технический долг и выстраивайте работу с ним на разных уровнях • объясните клиенту, почему важно выделять время на работу с техническим долгом • не путайте технический долг с другими видами долгов Подведем итоги
  24. 24. 24 Информация по теме • http://wiki.c2.com/?WardExplainsDebtMetaphor • https://martinfowler.com/bliki/TechnicalDebt.html • https://martinfowler.com/bliki/TechnicalDebtQuadrant.html • https://sites.google.com/site/unclebobconsultingllc/a-mess-is-not-a-technical-debt • https://www.agilealliance.org/introduction-to-the-technical-debt-concept/ • https://www.agilealliance.org/project-management-and-technical-debt/

×