LINUX.ORG.RU
ФорумTalks

Самый вредный и опасный подход в программировании

 ,


0

4

По мотивам: Поделитесь мнением про оптимизации и подходы, которые вам никогда не пригодились или оказались ложными/вредными

Отказ от ORM приводит к двум возможным сценариям:

  1. Написанию своего ORM. Только он будет кривой, косой, глючный и не безопасный.
  2. Написанию лапши, как в 99.9% PHP бэка времён нулевых (хотя и сейчас ситуация не сильно изменилась).

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

Есть 1% случаев, когда отказ от ORM оправдан, а обвязку пишет гуру. По ссылке как раз такое исключение (имеется в виду ссылка на холивар из оригинальной темы). В таком случае возникает ещё один сценарий:

  1. Бизнес-логика переезжает из кода проекта в код на SQL. Без скиллового гуру такой код быстро становится кривым, косым и не безопасным говнокодом.

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

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

Крупные проекты содержат говнокод. ORM, фреймворки, библиотеки — они им напичканы. Профаны, видя такое, кидаются писать своё решение. Но они не знают, что за каждым хаком стоит необходимость, продиктованная особенностями и ограничениями, выясняющимися лишь в процессе разработки. В итоге своё «правильное» решение превращается в ещё более худший говнокод. Только вот за инструментами стоит команда, тестировщики, сообщество — которое пишет баг-репорты, кидает PR. А за своим решением стоит 1 разработчик. Поэтому своё решение всегда оказывается хуже готового.

А теперь самый сок:

  • Своё решение приводит к выгоранию. Такие проекты всегда доставались мне с формулировкой: «предыдущий разработчик ушёл в депрессию». Потому что вместо работы над проектом появляется ещё работа над своими «правильными» фреймворками и библиотеками, никому больше не нужными.
  • Это «правильное» решение, занявшее месяцы страданий и бессонных ночей, а на деле приносящие одни лишь проблемы проекту, сносится и переписывается на готовые за 1 вечер. Проект одним махом вылезает из всех багов, лагов и ограничений.

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

P.S. Помнится, на ЛОРе был некто с псевдонимом царь. Был против всех CMS, скриптовых языков, фрейморков и ORM-ов. Несколько лет писал свой движок на сях, а за неимением хоть чего-то рабочего, вёл блог в blogspot. У меня не осталось ссылки. Кто в курсе — написал ли он своё поделие, или же «разработчик ушёл в депрессию»?

P.P.S. Другой, более известный велосипедист, допускает примитивный XSS в самописной CMS. Лучше читать оригинальную новость, она более содержательна. И всё это во имя отказа от СУБД, ведь когда на сервере заканчивается дисковое пространство, файлы могут повредиться (такой аргумент звучал в интервью Бороде)!

P.P.P.S. Меня тоже не обошло стороной, ведь я свои парсеры и прочую херомуть писал. Хорошо, что вовремя остановился.

★★★★★

Знать бы ещё что скрывается за этими буквами.

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

За хаками может и стоит необходимость, а вот за так называемым «говнокодом» - стоит только слабоумие его авторов.

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

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

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

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

Если бы программисты были бы бизнесменами, они не были бы программистами. Но иногда стоит побыть нанимателем, когда на кону свои кровные — никто почему-то не хочет инвестировать их в новый, «правильный» фреймворк, когда задача — запилить темку для бложика.

InterVi ★★★★★
() автор топика
Ответ на: комментарий от InterVi

А из недостатка ресурсов уже вытекает низкое качество реализованного функционала

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

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

Да, качественный продукт требует долгой работы над ним, иначе никак. А ещё он требует компетентных разработчиков. Если хотя бы одно из условий нарушено, качественного продукта не выйдет. Компетентные разработчики в отсутствие достаточного времени либо недоделают продукт, либо начнут сувать в него чей-то готовый низкокачественный код, и то и то приведёт к провалу. Ну а нубы, хоть даже и с наличием временеми, сразу начнут лепить туда фреймворк на фреймворке и ничего хорошего не сделают.

Но иногда стоит побыть нанимателем, когда на кону свои кровные — никто почему-то не хочет инвестировать их в новый, «правильный» фреймворк

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

firkax ★★★★★
()

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

Пример. Драл я вороным конем любые селениумные обертки и жабоскриптовые фреймворки, т.к. они пишутся через жопу под задачи, с которыми сейчас и ИИ справляется без всяких приседаний. А для сложных и нестандартных задач у них лапки. Лично год следил за срачем авторов Cypress и разных помидоров из-за какой-то багофичи ангуляра, ломающей синхронную логику тестов.

Читал по диагонали, ибо:

Своё решение приводит к выгоранию

Вранье

сносится и переписывается на готовые за 1 вечер

Вранье

Проект одним махом вылезает из всех багов, лагов и ограничений

Вранье

Lordwind ★★★★★
()
Последнее исправление: Lordwind (всего исправлений: 1)
Ответ на: комментарий от Lordwind

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

InterVi ★★★★★
() автор топика
Ответ на: комментарий от firkax

для решения моих личных нужд

Что сразу о многом говорит, потому что тема вообще не про личные нужды. Возражения по сути ожидаемо отсутствуют.

InterVi ★★★★★
() автор топика
Последнее исправление: InterVi (всего исправлений: 1)

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

это вроде рустовики по ночам стучатся в избушку сишников - «пустите переночевать и весь вам код переделать!».

а сишники крестятся и покрепче запираются на засов. «изыди сотона» - кричат они сквозь дверь, - «счас позовем Николу архангела!» , и вилами машут.

alysnix ★★★
()

По мотивам:

А что в той теме не написал?
Хотел снова прорекламировать свой блог более эффективно?

imul ★★★★★
()

Существуют два принципиально разных подхода к деланию чего-либо:

  1. Процесс ради процесса
  2. Процесс ради достижения результата

Изобретение своих решений в большинстве случаев относится к первому.

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

  • Правильно ли писать своё решение, чтобы освоить теорию (баз данных, например)? Да, правильно.
  • Правильно ли использовать фреймворк в коммерческой разработке, чтобы быстро писать легко поддерживаемый код? Да, правильно.

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

InterVi ★★★★★
() автор топика
Ответ на: комментарий от imul

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

InterVi ★★★★★
() автор топика
Ответ на: комментарий от alysnix

сишкостан будет разрушен, победа будет за нами!

InterVi ★★★★★
() автор топика

Отказ от ORM приводит к двум возможным сценариям:

  1. Написанию своего ORM

Отказ от барного пьянства приводит к двум возможным сценариям:

  1. Начинаешь гнать самогон.
Nervous ★★★★★
()
Ответ на: комментарий от InterVi

Да, тема вообще не про нужды, так что твоё возражение тут не в тему.

firkax ★★★★★
()
Ответ на: комментарий от Nervous

Отказ от барного пьянства приводит к двум возможным сценариям:

а где второй-то? опять нам недоговаривают!

alysnix ★★★
()

P.S. Помнится, на ЛОРе был некто с псевдонимом царь

это же @alysnix, просто он повзрослел и теперь не такой токсичный.
дата регистрации как раз совпадает с последним исходом Царя

ann_eesti
()
Ответ на: комментарий от ann_eesti

сами царя прогнали, демократия у вас не получается, а я еще и виноват.

и не просите, царем вашим не буду.

alysnix ★★★
()

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

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

Сидел Линус Торвальдс и пользовался себе программой управления исходными текстами «CVS» (Concurrent Versions System). Зачем он написал «Гит»? - Чтобы сделать лучше, чем всё то, чем пользовался ранее.

В эпоху искусственного разума писать средненько будет кодогенератор. Инженер будет нужен лишь для создания новшеств.

Enthusiast ★★★
()
Ответ на: комментарий от Enthusiast

Ты не учитываешь рыночную необходимость создания собственных технических решений

читать надо внимательней, а не по диагонали

InterVi ★★★★★
() автор топика
Ответ на: комментарий от InterVi

То есть аргументов не будет?

Выгорают обычно перфекционисты и снежинки с завышенными ожиданиями. Как это связано с NIH ты не пояснил. Если ты пилил велосипед несколько лет, а переписал его за 1 вечер, то цена твой работы и есть этот самый вечер. Не забудь взять печеньки в офисе. Про чудесное спасение от лагов/багов за этот же вечер это пожалуйста к врачу.

Lordwind ★★★★★
()
Ответ на: комментарий от ann_eesti

где пруфы, что ты не царь?

даю честное царское слово, что не царь.

alysnix ★★★
()
Ответ на: комментарий от InterVi

Существуют два принципиально разных подхода

А чо сразу 2, давай сразу 1, ведь ты его и написал, а второй будет неправильным.

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

Неверно ограничивать 1, 2, 3, ... N конечными решениями что-либо в принципе. В системном дизайне есть такое правило - если выбор состоит из одного решения, то это всегда хреновое решение. И приравнивая «Процесс ради достижения результата» к «использовать фреймворк в коммерческой разработке» ты проигрываешь еще на старте.

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

Lordwind ★★★★★
()

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

Несколько проектов, типа Doctrine для Mysql и Doctine for Postgree было бы лучше. Меняешь базу - меняешь пакет, и твой редактор сразу показывает несуществующие методы. Удобно ж было бы.

alexmaru
()

Если у вас есть RDB и модели, я не вижу смысла не использовать ORM.

В питоне я очень люблю лаконичную peewee, но в ней легко захардкодить свой запрос (если надо) - и замапить на модель, там есть такой функционал, чтобы не ломать модели.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)

Заведите уже себе тэг Rust Evangelism Task Force, чтобы нормальные люди на вашу блевотину время не тратили.

Stanson ★★★★★
()

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

DumLemming ★★★
()

Господа, так не честно! Я даже не успел ему PHP-шные ORM по лицу размазать!

Эх, столько еды нажористой было и все без меня съели, не успел. А от Столярова уже изжога - сами доедайте.

Obezyan
()
Ответ на: комментарий от X512

Чуть переделав нетленку:

Штирлиц отбивался, как мог. А Мог был не крутой мужик, ведь Крутая слабаков не держала.

dataman ★★★★★
()
Ответ на: комментарий от X512

Что случилось? Вроде сравнительно нормально общались.

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

praseodim ★★★★★
()
Ответ на: комментарий от praseodim

хочется получить исключительно положительное подкрепление

Это он не в тот раён зашёл, однозначно.

Nervous ★★★★★
()
Ответ на: комментарий от irton

В реальный мир ушёл. У него там

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

piyavking ★★★★★
()

Писать своё решение вместо использования готового, когда это не оправдано технической необходимостью

Так оно практически всегда оправдано в итоге. Любой готовый инструмент рано или поздно перестает попадать под решение именно твоих задач.

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

Набрать в ведёрко побольше разных чужих велосипедов, хорошенько потрясти и надеяться, что оно само там как-то уляжется как надо - вот что сейчас происходит кругом и рядом. На мой взгляд. Это ж тупо сложнее - заставить работать вместе все запчасти от разных производителей (пусть даже и на заслуженном хайпе каждый в отдельности).

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

Toxo2 ★★★★
()
Ответ на: комментарий от praseodim

На самом деле не смешно, не первый подобный случай на ЛОР.

Снежинке показали, что она снежинка?

skiminok1986 ★★★★★
()
  1. Но они не знают, что за каждым хаком стоит криворукий архитектор, которому надо было за вечер сделать фигнюшку, потому что заказчик ждём.

  2. Проект одним махом вылезает из всех багов, лагов и ограничений при отвалившемся 80% функционала.

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

vtVitus ★★★★★
()

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

Готовое решение тоже кто-то должен написать. А «техническая необходимость» – понятие весьма растяжимое без принятия во внимания «экономической целесообразности».

Pwner
()

Написанию своего ORM. Только он будет кривой, косой, глючный и не безопасный.

Твоя ОRМ будет минималистичной, заточенной под твою задачу, работающая так, как тебе надо. Чужая-будешь хавать что с лопаты подадут, ожидая правки багов (а они там кучами будут обязательно) годами, и рассказывая заказчику, что это вон те виноваты. И всегда сторонняя ORM будет неоптимальна конкрентно под твою задачу, ибо обобщенное решение.

slew
()
Ответ на: комментарий от ann_eesti

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

Своё решение приводит к выгоранию

Lordwind ★★★★★
()
Последнее исправление: Lordwind (всего исправлений: 1)
Ответ на: комментарий от alysnix

злые вы, доброго царя на вас нет.

«Мы головотяпы! нет нас народа мудрее и храбрее! Мы гущеедов — и тех победили!» © М.Е. Салтыков-Щедрин

Mischutka ★★★★★
()

Отказ от ORM приводит к двум возможным сценариям:

<...>

2. Написанию лапши <...>

У меня был проект, который был приделан сбоку к другому проекту, точнее к его БД. Мне дали десяток sql-запросов, каждый из которых был на несколько экранов, надо было результаты примитивно распарсить и показать. Возьмись я там за ORM - я бы до сих пор сидел это описывал. А так - запросы «как есть» полетели в БД, задача была успешно выполнена, тот проект уже давно стух потому что просто перестал быть нужен и никто никогда в эти запросы не лез.

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

Тут соглы. Но иногда это также означает что и ORM использовать не нужно.

micronekodesu ★★★
()

А что случилось? Кто Алексея обидел?

imul ★★★★★
()
Ответ на: комментарий от micronekodesu

Не все йогурты одинаково полезны. Говнище типа ORM Джанги ни на что кроме тупеньких CRUD не способно. С другой стороны есть монстры типа JPA и Hibernates, которые позволяют абстрагироваться от конкретных СУБД вводя собственный диалект SQL. Конечно, всегда можно найти уникальную функцию конкретной СУБД, которую не получится столь же эффективно заменить неуникальными функциями. Ну тогда только хранимки.

FishHook
()
Ответ на: комментарий от FishHook

ORM Джанги

Ее не стоит сравнивать с «нормальными» ORM потому что это кусок джанги.

micronekodesu ★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)