Технический долг / Долг кодинга - Что это?

Поділитися
Вставка
  • Опубліковано 3 лип 2024
  • В далеком, далеком 1992 году Уорд Каннингем (Ward Cunningham) дал определение одной проблеме - Технический долг (он же Долг кодинга).
    В этом видео Дмитрий Афанасьев расскажет что такое тех долг, причины возникновения, типы тех долгов, признаки проекта приближающегося к краху. А главное - узнаешь как избежать технического долга. Приятного просмотра!
    .
    00:00 Определение тех долга
    04:10 Метафорическоре пояснение
    13:36 Причины появление ТД
    19:16 Типы долгов
    21:55 Признаки приближения к краху
    25:35 Подходы к разработке
    35:39 Уровни оптимизации кода
    44:20 Список литературы
    .
    ★ Список литературы:
    ► ru.wikipedia.org/wiki/Техниче...
    ► blog.byndyu.ru/2008/12/blog-p...
    ► • Debt Metaphor
    ► habr.com/ru/post/453280/
    ► habr.com/ru/company/qiwi/blog...
    ► ru.wikipedia.org/wiki/Спагетт...
    .
    #laravel #refactoring #php #laracasts
    *
    ★ Автор: Дмитрий Афанасьев.
    ★ Канал: clck.ru/JVYct
    *
    ► Выразить благодарность, поддержать донатом развитие канала.
    ★ www.tinkoff.ru/rm/afanasev.dm...
    ★ www.donationalerts.ru/r/dmitr...
    *
    ► Еще интересные курсы:
    ★ Proto - архитектурный шаблон. Видеокурс: clck.ru/SGecU
    ★ Видеокурс по Laravel: clck.ru/JVYa2
    ★ Видеокурс по Git: clck.ru/JVYYm
    ★ Объяснение SOLID: clck.ru/JVYXq
    ★ Шаблоны проектирования: clck.ru/JVYX7
    ★ Структурные шаблоны проектирования: clck.ru/TVB9Y
    ★★★ Все курсы → clck.ru/JVYVd

КОМЕНТАРІ • 62

  • @misha-pitegorsk
    @misha-pitegorsk 3 роки тому +16

    Спасибо. Бывает такое накапливается. Хорошо, что ещё не придумали технических коллекторов.

    • @privet_baget
      @privet_baget 3 роки тому +1

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

    • @DmitryAfanasyev
      @DmitryAfanasyev  3 роки тому +2

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

  • @STATI0N
    @STATI0N 3 роки тому +8

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

  • @aldwynconjurer9449
    @aldwynconjurer9449 3 роки тому +1

    Спасибо за видео. Все детально и по полочкам. Такое ощущение, что теоретическая часть для видео формировалась на базе той фирмы, на которой я сейчас работаю. Передам это видео высше стоящим, как шанс на просветление.

  • @lokidismas7442
    @lokidismas7442 2 роки тому

    Автор молодец. Буду давать ссылку на это видео молодым подаванам. Пускай обучаются и помнят что серебряной пули не бывает.
    Спасибо.

  • @user-gs3gf8nb4v
    @user-gs3gf8nb4v 3 роки тому

    Как всегда все разжевал и объяснил) оч. круто! спасибо за труды.

  • @modestusmunh93
    @modestusmunh93 3 роки тому

    Отличное видео! Полезно посмотреть на стадии обучения!

  • @StivBike
    @StivBike 3 роки тому

    Спасибо, как всегда круто.

  • @Fenrir-Wolf
    @Fenrir-Wolf 3 роки тому

    Блогодарю, доступно объяснил. Осталось за малым, всего лишь применять знания на практике

  • @alexalex6643
    @alexalex6643 2 роки тому

    спасибо огромное за видео. Ещё более огромное спасибо за то, что добавили литературу

  • @dzhukokernri5228
    @dzhukokernri5228 3 роки тому +3

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

  • @nikitakarpenko1861
    @nikitakarpenko1861 3 роки тому

    Вообще видео огонь. Спс.

  • @user-us5uf9tt8i
    @user-us5uf9tt8i 3 роки тому

    Спасибо! Я только начинаю кодить, но долг уже копиться)))

  • @user-yl2xg5pd9o
    @user-yl2xg5pd9o 3 роки тому +7

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

  • @YmNIKYm
    @YmNIKYm 3 роки тому

    Слушаю и понимаю что у меня флеш-рояль :)
    Спасибо за видос

  • @deazlylol
    @deazlylol 3 роки тому

    Шайтанама вапще класни видео :D Я все ещё в процессе изучение большинства ваших видео. Автор вапше красавамана!)

  • @user-mt9bq2xe1z
    @user-mt9bq2xe1z 3 роки тому +1

    Похоже намечаются видео по тестам

  • @sergeypanchenko5218
    @sergeypanchenko5218 3 роки тому

    У меня сейчас на проэкте такая же ситуация, куча хардкода из за вечной спешки клиента и его грандиозных планов, всегда надо здесь и сейчас, еще очень класно что он не зная кода умеет делать эстимейты, эстимейт 2 часа в итоге 4 дня, нервам уже конец - хочется застрелится, я уже ненавижу кодинг реально хочется заниматся чем то другим...
    Протсо жизненно мужик говорит !

  • @asxenonify
    @asxenonify 2 роки тому

    Дмитрий расскажите пожалуйста используете ли Вы в своих проектах DDD (domain driven design), может есть уже материал на канале (пойду посмотрю про пицца код). Какую структур разработки используете Вы. Есть пакеты для организации структуры в виде модулей (к примеру: nWidart/laravel-modules). Что посоветуете?

    • @DmitryAfanasyev
      @DmitryAfanasyev  2 роки тому

      У нас в наличии базовая архитектура laravel котрая частично мутировала сначала в сервисы, затем в модульность. Сейчас модульность обретает черты porto. Рекомендовать могу "чистая архитектура" Мартина (при условии что Чистый код изучен) и porto

  • @eaglesm1993
    @eaglesm1993 3 роки тому +1

    Отличное вступление, 92-й год, тебя может еще на этом свете не было... А ты 93-го года

  • @Black1991Star
    @Black1991Star 3 роки тому

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

  • @bogdanchirukin1050
    @bogdanchirukin1050 3 роки тому

    спасибо, так а как таки почувствовать золотую середину между лапшой и чрезмерно?

    • @DmitryAfanasyev
      @DmitryAfanasyev  3 роки тому +2

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

  • @nickfist9187
    @nickfist9187 3 роки тому +1

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

    • @DmitryAfanasyev
      @DmitryAfanasyev  3 роки тому +2

      Спасибо за комментарий. 🙏 По вопросу - это больше похоже на вредительство человека с низкой самооценкой. Опасаясь что не сможет найти работу в другой компании умышленно нанося вред создает свою незаменимость. Походу тут надо к психологу сходить на пару консультаций - разобраться в причинах низкой самооценки. К счастью такого не встречал. По полагаю таким говном занимаются наши чиновники - "троечники" дорвавшиеся до власти. Надеюсь среди программистов таких нет.

    • @nickfist9187
      @nickfist9187 3 роки тому

      @@DmitryAfanasyev Спасибо за ответ. Только подтвердили мои догадки - беда в голове. К своему сожалению, встречался с такими людьми, работая в саппорте на "первой линии обороны". Данные товарищи очень резко реагировали на критику своих творений(был доступ к небольшой части скриптов). И еще один вопрос: опираясь на Ваш опыт, кто больше влияет на "долги": заказчик или разработчик(включая начальство)?

    • @DmitryAfanasyev
      @DmitryAfanasyev  3 роки тому +2

      Чаще всего виноват разработчик. Заказчику не надо знать процесс решения задачи - эскиз, рефакторинг, тест. Чаще всего разработчики сами выбрасывают шаг "рефакторинг" даже когда нет команды ASAP. Заказчик об этом шаге чаще всего узнает когда долг накопился и надо выделять ресурсы на оплату долгов. Вот именно тогда надо объяснять, уговаривать, убеждать и тп.

  • @user-lh9wz4hi5z
    @user-lh9wz4hi5z 3 роки тому

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

  • @fovsl7222
    @fovsl7222 3 роки тому +1

    Оказывается, у меня много долгов... 🙄

  • @AsRammstein
    @AsRammstein 2 роки тому

    11:04 Найдут новичка и скажут, хоч работу - сделай, иначе двери там )

  • @user-ck9qy6tf3c
    @user-ck9qy6tf3c 3 роки тому

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

    • @DmitryAfanasyev
      @DmitryAfanasyev  3 роки тому

      Устранить не выйдет, увы, но стремиться к этому надо.

  • @viktorizotov5716
    @viktorizotov5716 3 роки тому

    У меня Карбонара код, вкусный с бекончиком

  • @sifecs8475
    @sifecs8475 3 роки тому

    Присти за такой глупый вопрос но примерно с 20 минуты ты говоришь что делать толстые контроллеры и модели это плохо. Я посмотрел твой курс по laravel и дальше репозиториев не нашёл как сократить код в контроллерав и моделей может ты будешь дальше пилить курс по laravel и там будешь уже учить как правильно писать у меня почти каждый контроллер от 100 до 200 строк кода это без репозиториев а если я добавляю репозитории то весь код будет в них хранится и в чём это лучше? перекидывать код с одного места в другое?

    • @DmitryAfanasyev
      @DmitryAfanasyev  3 роки тому +2

      Читаем "чистый код", смотрим курс по solid, смотрим курс по porto. После этого должно придти понимание.

    • @sifecs8475
      @sifecs8475 3 роки тому +4

      @@DmitryAfanasyev Два года уже учусь программированию и понимаю благодаря тебя что я нифига не чего не понимаю((( если у вас будет свободное время то можете продолжать развивать курс по laravel? Вы единственный кого я смог найти кто говорит что толстые контроллеры это плохо а все остальные учат что это норм

    • @DmitryAfanasyev
      @DmitryAfanasyev  3 роки тому +3

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

    • @sifecs8475
      @sifecs8475 3 роки тому +2

      @@DmitryAfanasyev Понял спасибо за ваши труды в образования нас при том что-это бесплатно остальные бы потребовали бы не хилую сумму для изучения. И ещё если вам не сложно знаете ли вы какой нибудь репозиторий на git с хорошим кодом для примера хочу посмотреть как должен выглядеть хороший код что-б к ниму стремится

    • @sifecs8475
      @sifecs8475 3 роки тому +2

      @@DmitryAfanasyev Ещё есть идея для ваших будующих уроках как на счёт того что-б брать готовые проекты с хорошим кодом и обозревать их что-б было наглядно что такое хороший код

  • @user-nu8hi3xr7p
    @user-nu8hi3xr7p 3 роки тому

    Никогда не знаешь пригодится ли этот проект кому то еще, поэтому в мелких проектах много технических долгов)) А самое интересное что за это никто не хочет платить поэтому от этого не куда не денешься, заказчик не понимает что ты тратишь на рефакторинг дополнительное время

  • @user-mt9bq2xe1z
    @user-mt9bq2xe1z 3 роки тому +1

    Принцип бойскаута: Уходя с полянки, оставляйте ее чище, чем была до вас

    • @TheHistoryOfUkraine
      @TheHistoryOfUkraine 2 роки тому

      Роберт Мартин… я когда своим говорил - начали возбухать, типа я на их код наговаривал

    • @DmitryAfanasyev
      @DmitryAfanasyev  2 роки тому

      Критика дело тонкое. Подобное надо аккуратно доносить без перехода на личности.

    • @TheHistoryOfUkraine
      @TheHistoryOfUkraine 2 роки тому

      @@DmitryAfanasyev Да я просто новичкам говорил - "Хорошая книга, почитайте", а там уже каждый накручивал себе что и как хотел.

  • @VladimirKrygin-j4d
    @VladimirKrygin-j4d 3 роки тому +2

    В 90% случаев это не твой долг, а предыдущего разработчика(ов) ))

    • @DmitryAfanasyev
      @DmitryAfanasyev  3 роки тому +1

      Хорошо если так. Но свои собственные долги нахожу в коде постоянно...

    • @VladimirKrygin-j4d
      @VladimirKrygin-j4d 3 роки тому +3

      )) А как уговорить клиента на закрытие техдолга (не своего) когда клиент требует новых фич, а всё уже погрязло в долгах (или такая перспектива погрязания маячит уже близко)?

    • @daanl88l
      @daanl88l 3 роки тому

      @@VladimirKrygin-j4d Так и сказать - "от этой фичи и дальше будет увеличиваться время добавление этих самых фич".
      Тут другая проблема - клиенту на все эти премудрости пофигу. И технический долг становится лишь удобством разработки. В маленьких фирмах не хватает людей и чтобы не упустить клиентов, рефакторинг задвигается очень глубоко. В крупных рефакторят параллельно.
      В общем, проблема технического долга эта по большей степени внутренняя проблема компании/команды разработчиков и клиенту про эту проблему рассказывать... ну такое себе.

    • @DmitryAfanasyev
      @DmitryAfanasyev  3 роки тому +5

      Качаешь красноречие до 100 и рассказываешь клиенту о рисках. Если клиенту пофиг - работаешь пока комфортно и уходишь.

  • @eaglesm1993
    @eaglesm1993 3 роки тому

    Я часто пишу не очень хороший код (по крайней мере я так думаю), но зато я не буду спорить что мой код г*вно))

  • @vitall789
    @vitall789 2 роки тому +1

    Шо занадто то не здраво!

  • @TsA1ex
    @TsA1ex 3 роки тому +1

    Хватит философии. Давайте уже писать код )

  • @user-ul6yv9pr8e
    @user-ul6yv9pr8e 3 роки тому

    Спасибо Дмитрий за видео. Однозначно лайк.
    Скажите, у вас есть возможность записать видео - как сделать поддомены для городов. Весь инет перерыл, путного ответа нет.
    для москвы - > сайт.ру (без поддомена)
    для питера - > спб.сайт.ру
    для новосибирска - > нск.сайт.ру
    решается путем в роутах:
    'domain' => '{domain}.' . env('SITE_URL'),
    контроллер
    public function index($domain)
    но вот только не задача, когда в роут приходит null по москве выдает 404 ошибку. и как и где ее ловить))