ebanoe.dev
0
legacy_Жук··1 перегляд

Диалог с программистом с "10-летним опытом"

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

Речь пойдёт о человеке Denis Efremov, известным как Piterden.
С первого взгляда выглядит как солидный программист, человек который участвует в достаточно крупных российских проектах, также поддерживает несколько репозиториев npm с достаточно большим кол-вом скачиваний.

На самом деле при всех вышесказанных фактах он не такой уж и известный, особенно если выйти с территории России, но и в ней большинство программистов не знают кто это такой.

Возникает вопрос — что может пойти не так? — А вот что.
На днях этот человек в чате поддержки разработчиков бекенда задал вопрос что такое дто, зачем они нужны и чем моно их заменить, посколько ему они не нравятся. На вопрос почему не нравятся один из ответов был буквами ДТО в названии файлов содержащие соотв. дто, и он говорил что если их убрать — ничего не изменится. И далее пояснял, что достаточно просто протипизировать обычным типом.

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

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

На любые вопросы о том, понимает ли он что такое дто в целом, он не дал ни одного четкого ответа, а сразу переводил тему на какой-то бред. Ничего путного мы не услышали, кроме того, что он кидал в чат статьи о том, что дто это плохо. Статьи 10-летней давности.

Дто были придуманы для решения проблем паттернов по типу удалённых фасадов, которые пришли после того, как вышла статья. Это максимальное тупое решение опираться на подобные статьи.

Опишу как это выглядит в целом
Программист с более чем 10-летним опытом разработки (по его словам) не способен в инете глянуть что такое дто и сделать выводы и понять смысл этого по сути «детского паттерна», который лежит чуть ли на в основе бекенда. Понятно почему он не сталкнулся с этим ранее (как разработчик, кодящий на php и клиентском js), хотя это становится ясно и когда узнаешь, что он не мог понять, что это за паттерн.

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

Зато он активно выпендривался своими достижениями в проектах и своими звездами гит хаба. Открыто демонстрируя своё чрезмерно завышеное ЧСВ и самооценку, и показывая всем, что он считает себя лучше чем остальные люди и, видимо, умнее.

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

И мне плевать на все его достижения и где он там участвует, одна эта ситуация показала его суть.

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

Прислал Анонимус

З архіву ebanoe · Опубліковано 1 липня 2021 р.

Коментарі (62)

Сортування:ТопНовіСтарі
  • legacy_Кама_Пуля

    «Самое первое, что приходит в голову когда узнаешь, что это за паттерн, это то, что дто — это класс, а значит в нём может быть как валидация…»

    Data Transfer Object, в отличие от business object или data access object не должен содержать какого-либо поведения.

    Какая нахуй валидация ?

    • legacy_GRASP

      Annotations же ж з javax.validation

  • legacy_Епископ_Мариупольский

    Само твоя деятельность связанная с казино уже грех и Русский Боженька накажет тебя. Может он послал сына своего Дениса с ДТО для выведения тебя из равновесия. Спроси любого Святого ФСБшника, он подтвердит что казино это зашквар из 90-х. Молись Господу чтобы он тебя простил и переведи деньги на счет Азов Батальона, дабы простил тебя Боженька.

  • legacy_anon_28

    > казино

    Уязвимости оно ищет, паскуда ебаная.

  • legacy_Сотрудник_Академии_ШАГ_с_блекджеком_и_ве

    Нихуя непонятно.
    Программирование какое-то.

  • legacy_Генерал_Свиридов_директор_ОКБ_Алмас_Ганд

    Все русские программисты должны перестать страдать хуйней и идти в наше ОКБ Алмаз Антон, где за приличную зарплату в 120 тыс рублей вы будете, сначала на бумаге карандашом, как и положено русским программистам, а потом уже в блокноте на виндус 95 делать программы для ракетных комплексов ПВО. Алгоритмы должны работать быстро как сверхзвуковой Кинжал, хихи, у нас много меташуток, русский ты наш программист. После 5-ти лет работы, ты наш русский программист, получишь звание подполковника и будешь под Полковником, хихи. Ну а за невыполнение плана, мы отправим тебя в отпуск, в Сибирь, в курортный город Иркутск 23, счётчик Гейгера выдадим бесплатно.

  • legacy_дед-мопед

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

    «На вопрос почему не нравятся один из ответов был буквами ДТО в названии файлов содержащие соотв. дто»

    какая-то безграмотная хуйня.

    «Самое первое, что приходит в голову когда узнаешь, что это за паттерн, это то, что дто — это класс, а значит в нём может быть как валидация»

    валидация в ДТО классе? Dto это обычно контейнер для данных, его обычно не отягощают какой-либо логикой, кроме случаев когда это можно прописать декларативно как в JSR-303, и то сам код валидации в них не находится.

    короче какие-то 23-летние щеглы поспорили о вкусовщине. А о вкусах спорят обычно долбоёбы

  • legacy_гребец-хуец

    по этому поводу мы тоже спорили с тим лидом и с другими челами, я тоже со временем перестал видеть смысл в дто, ты просто тупой и не понял что он имел в виду. DTO нарушают принцип сингл респонсибилити, особенно если речь идет о таких кейсах когда у тебя дто это не просто обертка для передачи куда-то данных, а еще и слой который эти данные сторит например в бд. Так вот по принципу сингл респонсибилити так не должно быть. Приведу пример, представь что у тебя есть клиент. ты получаешь с сервера пакован данных, потом ты их кэшируешь локально(в бд, в память). какую модель ты будешь использовать? есть извращенцы которые захуярят одну модель для всего, напихают туда аннотаций и для сериализации и для бд и для мэм кэша, и будут юзать по всему коду эту модель. Надеюсь не надо объяснять почему это хуево. и вот у тебя получается такой парадокс с одной стороны хреново делать все в одной модели ибо это будет кошмар для тестов и поддержки в будущем, с другой стороны чтоб сделать «правильно» тебе нужно создать три а то и 4 модели которые будут друг друга почти дублировать. Поэтому он и задает этот вопрос и пытается найти какое-то иное решение чем предлагает комьюнити.

    • legacy_old_dick

      «есть извращенцы которые захуярят одну модель для всего, напихают туда аннотаций и для сериализации и для бд и для мэм кэша»

      ты конечно прав что это плохо, но DTO тут не виновато )

    • legacy_Гребец_со_стажем

      DTO тут не причем. Сингл респонсибилити — это то, что спрашивают на собесах, но никто и никогда не понимает, что оно такое. Я уже молчу про остальные ОЛИД. Когда доходят до Д, то обычно переходят на другие вопросы. Потому что ни один синьор никогда в жизни не объяснит на пальцах, что такое это ебаная инверсия зависимости, и где в его коде абстракция, а где детали.

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

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

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

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

      У меня, к примеру, уже 15 лет опыта, и я изредка применяю ДТО в своей работе. Но очень осторожно. Потому что их всегда можно заменить на что-то более вменяемое, читабельное и отвечающее этим заебавшим всех принципам СОЛИД.

      • legacy_гребец-хуец

        Inversion of control начинаешь хорошо понимать когда начинаешь писать тесты. Грубо говорят для того чтоб подменять реализацию проще внедрять внутрь класса/метода уже инициализированный объект, а не создавать его внутри и ебаться с мокито и прочей хуйней. под это построили полно уже готовых решений spring, guice, dagger, coin и так далее. это просто грубо говоря «вумное» дерево зависимостей, в принципе они очень хорошо работают и в тестах. Но я надрочился писать так что даже без них тесты нормально пишутся. Когда их не было мы сами писали фабрики, и сами провайдили зависимости. с ними это намного проще, особенно учитывая что там еще есть скоупы. я думаю это использует почти каждый джун, мидл, и бывший пиценосец в том числе. Тем более если на проекте это уже вкручено, даже бывший курьер глово поймет как это работает.

        • legacy_Гребец_со_стажем

          Не знаю как курьеры Глово (норм ребята, кстати), но ты же не словами говоришь. Это какой-то жаргон с соседнего двора, я его не понимаю. Я на пыхапэ вообще большую часть карьеры пишу. Немного на си, немного на джаве, немного на питоне, немного на джаваскрипте (серверном и клиентском), немного на баше (куда без него). Но основной упор — это похапе. Или пиэйчпи. И вот в нем твой вот этот набор слов мало о чем говорит. Хотя он походу как раз из джавы )

          Ладно, пыхапе суть та же джава, просто урезанная и адаптированная под веб. В восьмой версии различия вообще почти стерлись. Я понимаю, что такое дерево зависимостей, и зачем их инжектить в класс, чтобы сделать их максимально testable. Но если я так не делаю, это не значит, что я мудак, а это значит, что я решил сэкономить время на реализацию чего-то другого. Я даже тудушки оставляю: «extract constant», «inject dependency», «cover with unit test». И возвращаюсь к ним, когда мне реально нехуй делать.

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

      • legacy_anon_16

        «Я уже молчу про остальные ОЛИД»
        «Это цена цифровой индустриализации — когда за весла погнали не инженеров, а вчерашних пицценосцев.»

        да можно хоть издрочить твой СОЛИД, но толку от него мало. Завтра придёт продакт, и скажет что требования поменялись, потому что у нас же Аджайл, или он просто тоже пицценосец и ошибся в них. И ты свой вылизанный код с красивыми абстракциями выкинешь нахуй и будешь быстро-быстро писать говно, потому что это 10 вечера пятницы. Так что меньше пафоса про эту догматическую хуйню.
        Во-вторых другие все эти догмы как раз плюнуть могут друг другу противоречить. DRY подталкивает писать обобщенный код, а KISS — простой, а некоторые буквы SOLID — сложный, а YAGNI — советует не выёбываться и не решать преждевременно проблемы которые в 80% случаев никогда не наступают. Сколько раз бывало такое что кто-то нахерачил код с абстракциями и всё как положено, но требования меняются и все эти абстракции только связывают руки и в итоге подталкивают к срезанию углов или выкидыванию их целиком. Это только в академических книжках говорят что якобы можно код написать расширяемо и показывают примерчики наследованием ромбов и кружочков, но в реале это часто не работает, а ещё сроки давят. И баланс между этими догмами найти СЛОЖНО, и он часто СУБЪЕКТИВНЫЙ. Что тебе хорошо, то другому чуваку с 15 лет опыта запросто будет чушь собачья.

        • legacy_Гребец_со_стажем

          Тихо, спакуха. Keep calm.

          Я об этом и пишу. И даже добавляю к солиду эпитет «злоебучий» или «заебавший всех». Конечно, это нихуя не панацея. Это всего-лишь буквы. У всех принципов нет даже названия, есть только буквы. Как бы это должно нам на что-то намекать. Никто не знает, как писать код правильно. Но все, блять, склонны считать себя самыми умными и сведущими. Мои 15 лет опыта подсказывают мне, что все принципы — полная хуета. И все они противоречат один другому, что и было замечено справедливо. Потому, триггер для выебщика-вайтишника — вот такие споры про дто-шки. У меня попадаются порой такие напарники-долбоебы, которые упорно хуярят один свой принцип куда попало. Вот этот ДТО создает, где ни попадя, а у меня был кадр-сотрудник, который создавал классы-сервисы. И все бы ничего, отличная идея, но у него каждая таска была как сервис. Самый мелкий багфикс он вместо одной строки — хуярил сервис.

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

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

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

  • legacy_Валидация

    В некоторых ЯП (Eiffel, Racket) есть такая фича, как контракты. За эйфель я не особо знаю, придётся разобрать на скобочках.

    https://docs.racket-lang.org/guide/contract-func.html

    Грубо говоря, по ссылке описан синтаксис налепливания предикатов на аргументы и возврат функции. Захотел — запилил на аргумент встроенный предикат (exact-nonnegative-integer?), захотел аргумент строго больше пяти — запилил функцию >5 и повесил её на аргумент. Захотел убрать контракт где не надо? Убирай.

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

    И чтоб два раза не вводить капчу: сверху был тут категоричный беспруфный тейк про то, что собирание аргументов в ADT, видите ли, мастхэв. Я на него отвечу сейчас второй раз.

    >не чувак, dto — это база межлэерной коммуникации, это гавно нужно знать всем, иначе будет спагетти-гавно, а не код

    Есть такие штуки, относящиеся к межлэерной коммуникации, называются posix api и winapi. Расскажете, почему там если и используются структуры, то по самому минимуму? Почему у самого широко используемого межлэера (юзерлэнд — либы ос) нет ADT на каждом шагу?

    Может, просто потому что кто-то использовал старую рекомендацию «если аргументов много, группируй их» как основное жизненное правило и основал секту этого правила?

    • legacy_301й_спартанец_на_галере

      posix api и winapi говно и ненужно, вот почему.

  • legacy_тебе_ли_не_похуй

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

  • legacy_GRASP

    Near-technical article on fucking it! Wow! Sooner or later (in nearest 100 — 1000 years) we’ll see here articles on GoF patterns, SOLID, YAGNI, KISS DRY etc. principles… what then? Articles on software architecture, project management approaches (scope vs cost driven), risk management, budget management… omg, can’t wait when it happens!