Size: a a a

Обсуждения техдирские

2021 September 06

NK

ID:0 in Обсуждения техдирские
​​Как рождается техдолг

Бизнес приходит с какой-либо идеей — и он пробует ее сделать сразу и быстро. То есть с помощью ..., пустых банок из-под колы и палок. Бизнес-управленцы пробуют каким-то образом решить эту проблему в минимальные сроки.

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

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

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

И погнали. «Оно» работает с помощью каких-то негров с опахалами, шамана, бивня мамонта, летающей китайской крысы и панголина.

Продукт обрастает вот такими культурными наслоениями, костылями и чем-то еще. Проблема еще заключается в том, что, так как гипотезы проверяются часто из «la merde» и палок, этим занимаются либо разные программисты, либо программисты работают по остаточному принципу. И они к этому относятся «а давайте-ка я тут попробую один метод программирования, а сейчас попробую другую концепцию». И в результате получается месиво подходов.

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

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

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

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

Готово!
источник

AV

Andrey Vishnitsky in Обсуждения техдирские
Всем привет!
Хочется добавить, что тех долг по похожей схеме возникает и в свежих проектах.
Например, сейчас портируем проект с одной технологии на другую и делаем это по факту методом полного переписывания. То есть легаси, остаточного от прототипирования и мвп, нет совсем.
Зато появляется техдолг от использования разных подходов, или даже от пересоздания одинаковых коммон компонент(кода).
Например такой типичный кейс:
В проекте используется подход А уже Н времени и кодовая база на нем уже внушительная. После во время разработки новой фичи, понимаем что этого подхода нам не хватает и вводим улучшенный подход Б. В итоге весь новый код использует подход Б, а на рефакторинг имеющейся кодовой базы на новый подход Б время не выделяется и так образуется техдолг даже в новом проекте
источник

DS

Dmitry Simonov in Обсуждения техдирские
Да, есть такая тема. А вы перед портированием MVP какой-то на новом языке выстроили, чтобы проверить сразу подход А?
источник

ВВ

Виталий Вайти... in Обсуждения техдирские
признавайтесь. у кого тут нет техдолга и легаси на проектах?
источник

AV

Andrey Vishnitsky in Обсуждения техдирские
Нет, бизнес пришел с решением - переходим на новую технологию, через год хотим видеть уже на ней наш проект. Тут надо обговориться, что технология новая для проекта, для компании это уже 6 проект на ней.
Если чуть более конкретики, то это портирования игры с проприетарного движка на Unity

А пример про подход, тут имелось ввиду именно подход в коде. Например раньше мы инжектили интерфейсы, а сейчас фабрики интерфейсов
источник

ИП

Иван Повстен... in Обсуждения техдирские
Техдолга не существует
источник

AP

Andrey P in Обсуждения техдирские
Как говорили в комании Ulter Systems: мы не портируем код, мы его portим.
источник

DS

Dmitry Simonov in Обсуждения техдирские
Ух Ты! А расскажи про фабрики интерфейсов, plz
источник

AV

Andrey Vishnitsky in Обсуждения техдирские
Например раньше был IAnalytics, а стал IFactory<AnalyticsKey, IAnalytics>
Который в зависимости от ключа возвращает нужный инстанс аналитики

Или другой пример, когда тебе нужно создать Transient объект не во время вызова конструктора (при инжекте), а позже, в другом методе. Для этого резолвится IFactory<IFoo> и вызывается .Create() только там где это необходимо
источник

VS

Vany Serezhkin in Обсуждения техдирские
Черт, ты так рассуждаешь, как будто к тебе очередь. Колись, как ты этого добился?
источник

VS

Vany Serezhkin in Обсуждения техдирские
Там конструктор гений, арабы собирают их в подвалах и у них получается.
источник

A

Andreλ in Обсуждения техдирские
Какая-то прямо идеальная картинка расписана)
Гипотезы бизнес проверяет, что-то планирует, делает...

Какие нафиг гипотезы в реальном-то мире? )))
Обычно техдолг появляется из-за полного раздолбайства и пофигизма руководителей. Этих руководителей хорошо если несколько, а то ведь и десятки бывают. Каждый тянет одеяло на себя, никто не хочет согласовывать свои работы с другими руководителями. А чаще всего просто не умеет этого делать.
В результате, в типичной системе, ни о каком единообразии подходов и переиспользовании не идёт. Все дублируют логику разными подходами и разными реализациями. А микросервисы еще умножают это на 10.
Как итог, небольшая правка превращается в задачу "пропиши это в 100500 мест немного по разному"... и так по кругу.
источник

OD

Obernikhin Dmitriy in Обсуждения техдирские
Чуваки. Вы так описываете техдолг, что там мол есть планирование итд итп.
А когда все спланировано, просто API поменялись у сервисов или срочно надо "интегрировать" Партнера у которого самое свежее - ActiveX через "виртуальные сетевые протоколы.".
Те планы посрать были. И продуманы. Но вот впереди лет на 5ть пустыня с кактусами и камнями. Выкручивайся....
источник

VS

Vany Serezhkin in Обсуждения техдирские
В жс можно транслировать чё нить типизированное. Есть wasm. Нода хороша для фронта, который сам тянет свой проект. У таких ребят проблем нет обычно.
источник

VS

Vany Serezhkin in Обсуждения техдирские
Как разработчик со стажем, скажу, нет, техдолг делают мидлы, заметая косяки под ковер. Руководство об этом узнает постфактум, когда все уже не хотят лезть в "этот модуль", потому что там нагажено.
источник

VS

Vany Serezhkin in Обсуждения техдирские
Fixed point. Int с указанной десятичной экспонентой. В микроплатежах встречал децыкопейки.
источник

K

Kir in Обсуждения техдирские
обычно техдолг - это делаем вот так, из-за того, что "так исторически сложилось"
источник

A

Andreλ in Обсуждения техдирские
Техдолг внутри модуля, это и не техдолг вовсе)

Хороший код должен выглядеть как кучка пакетов с мусором. Так чтобы ты в любой момент мог любой пакет выбросить и на его место положить другой))))
Так что какой-то несовершенный код внутри модуля ни на что кроме эстетики особо не влияет.
Техдолг это когда у тебя пилят систему не глядя во круг. Когда у тебя один и тот же функционал сделан по разному в разных местах системы.
Да, его физически могут делать мидлы, но только потому, что руководство положило болт на управление процессами. При нормальном лиде и РП таки мидлы быстро получают по рукам и приучаются делать нормально. А вот если лодка плывёт "без руля и ветрил", то да. Мидлы наворотят конечно)
источник

VS

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

VS

Vany Serezhkin in Обсуждения техдирские
Считаешь от "в школе делал ndd соседям за деньги" 😁 тогда у меня тоже 25😄
источник