Как стать автором
Обновить

Лучше самому изобрести колесо, чем ездить на арендованном квадратном

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров7.8K
Всего голосов 57: ↑43 и ↓14+42
Комментарии133

Комментарии 133

ЗакрепленныеЗакреплённые комментарии
Меня тут ценят!
Меня тут ценят!

На акторной модели.

Я с ними и не думал соревноваться. Просто этот шуруп оказалось удобнее закрутить крестовой отверткой.

Вот она квинтэссенция.

Эта фраза не случайно же только в финале третьего акта появляется. Хотя ружьё висело на стене буквально с первых букв.

Хорошая режиссура...

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

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

Если бы соседняя команда команда ответила тоже самое по поводу велосипеда, вам бы легче стало?

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

Первое возражение, IMHO, не совсем корректно изложено. Время как раз гораздо чаще бывает резиновым, а вот деньги - увы. И если мы не про разработку не на заказ (где за продукт в любом случае будет уплачено), а на рынок - то чем быстрее мы выкатим пусть неидеальный, но работающий продукт на рынок, тем раньше мы перейдём из стадии "проедаем деньги" в стадию "зарабатываем деньги" и тем меньше вероятность оказаться в стадии "деньги закончились, банкротимся".

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

Время — деньги.

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

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

P.S. Не хочу, чтобы этот коммент был понят как что-то пренебрежительное к рядовым специалистам. Как человек, бóльшую часть жизни проработавший наёмным менеджером, скажу, что позиция наёмного менеджера как раз самая паршивая в этом плане - уже приходится наступать на горло собственному перфекционизму и учитывать вот всё это дерьмо, но бизнес и деньги, ради которых ты идёшь на комромиссы, всё равно не твои :)

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

Последнее слово за владельцами, разумеется, ну так я зачем-то же умею аргументировать свою позицию.

Между делом к ФСИН РИ привязать демократию это какой то особый талант)

Upd 2.Так уверенно делать неправильные выводы, тоже талант своего рода.

3. Вера в зомби ящик и собственное просветление.

Интересный тип конечно, для психолога

Кроме того, о чем вам сказали в телевизоре (ой, простите, вы же наверное зумер, так что в телеграме), существуют иные истории.

Под "зомбо-ящиком" подразумевается не только телевизор, но и все СМИ, видеохостинги, соцсети (в том числе и телега). Всё что можно использовать для отупления.

Например, какие? Расскажите, очень интересно.

Та, которую я упомянул в тексте. Та, про которую мне напомнили в комментариях ниже.

Красной нитью через комментарии проходит.

Я всё равно слишком дорогой разработчик для «тяп-ляп-стартапов».

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

Дальше лень цитировать

Самый ценный комментарий тут, наверное, спасибо за бесплатный труд.

Но когда мне потребуется секретарь для написания пресс-релизов, я его найму.

В основном согласен с вами. Единственное что бы хотелось добавить, что использование библиотек - это хорошо и правильно. Если только эти библиотеки решают одну конкретную задачу и решают ее хорошо ("Do one thing and do it well").

Да я вроде эту мысль тоже раза три прямо в тексте высказал.

А появляются круглые бесплатные колёса каким именно образом? Их передают свыше, как скрижали?

И круглые, и квадратные делают люди, очевидно. И?)

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

А кто воспевает крайности? Вот прямая цитата из текста выше:

«[…] возьми вон библиотеку, которая делает это!». Если она действительно делает ровно это, вы проглядели код и тесты, запустили бенчмарки и вас всё устроило — берите, не пожалеете.

Вспомнился вот этот мем

Как владелец бизнеса я не стал бы нанимать очень дорого разработчика с таким подходом, из-за очевидного перерасхода ресурсов (которые всегда ограничены) на разработку в стиле "будем писать коннекторы к БД сами".

Как технический специалист очень сильно сомневаюсь, что написанные таким образом коннекторы имеют хоть малейший шанс составить конкуренцию существующим.

Возможно, это говорит о том, что в обеих ипостасях у вас крайне ограниченный кругозор.

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

«Половина второго.»

Как владелец бизнеса я бы еще подумал, что делать, если(когда) такой придумщик колес уйдет. Уйти он может и на соседний проект.

Как разработчик не раз сталкивался с проектами, где все эти самодельные колеса проще заново сделать, чем разбираться в их деталях.

В чем принципиальная разница со сторонней библиотекой, автор которой ушел на соседний проект еще до того, как вы решили эту библиотеку использовать?

Если библиотека широко используется, у меня есть экспертиза сообщества, а для самопального решения может не оказаться ничего.

Я не против новых велосипедов, не всегда внешнее решение подходит по тем или иным причинам, но ультимативно писать и поддерживать все самим - это перебор.

Меня смущает слово «ультимативно», потому что я нигде ничего похожего не предлагал.

"Я являюсь ярым сторонником велосипедостроения" или "в подавляющем большинстве ситуаций".

Акценты в статье расставлены - строй свой велосипед, когда можешь. Я накатался на таких велосипедах, иногда они действительно хороши, а иногда у них форма колес зависит от фазы Луны.

Акценты в статье расставлены — строй свой велосипед, когда можешь.

Жаль, значит мне не удалось донести мысль. Мне казалось, что акценты расставлены так: «строй свой велосипед, когда проверил чужие библиотеки и удостоверился, что они не подходят».

Я насмотрелся в своей жизни на то, как люди тянут в проекты всякое наколеночное говно, типа упомянутого в тексте лефтпада, или даже что-то посложнее, не утруждая себя ни анализом кода, ни уж подавно бенчмарками — просто потому, что ну вот же, оно в интернете лежит, значит работает, как надо!

Такой Anti-NIH синдром.

А как насчёт владельцу бизнеса подумать, чтобы разработчик и не захотел никуда уходить?

Я согласен, что основной причиной потери ключевых сотрудников является жадность владельцев. Но далеко не единственной.

Вы не сможете удержать команду на проекте, который давно развивается. И дело не только в зарплатах. Человек может перерасти текущую компанию и уйти в условный FAANG. Москва так, кстати, утягивает программистов из регионов. Человек может переехать в другой город (или страну, чего уж) по личным причинам. В конце концов, есть усталость от проектов. Моя жена работает в оборонке, так вот у них ведущий программист ... умер от старости. Фактор автобуса, так сказать.

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

Значит, я вас неправильно понял. Но сути это не меняет - у долгоживущих проектов команда редеет независимо от действий владельца, процесс можно замедлить, но не остановить.

Правда, есть еще особый сорт людей, которые после n лет на проекте просто боятся что-то менять из-за своей узкой специализации.

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

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

Раз у вас есть пулл-реквест, значит у вас есть форк. Значит никто не мешает использовать форк. Как из этого следует, что надо взять и напилить с нуля велосипед?

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

никто не мешает использовать форк

Пробовали? Понравилось?

не любые два идущих подряд тезиса автоматически превращаются в силлогизм

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

Пробовали? Понравилось?

Представьте себе! И пробовал и продолжаю пробовать. И нравится вполне. Как минимум гораздо больше, чем изобретать с нуля то, что уже изобретено, но имеет "фатальный недостаток".

Прекрасно! Я определенно писал этот текст не для тех, кто предпочитает тащить в проект рассинхронизированные форки, вместо того, чтобы сделать всё по уму..

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

команда редеет

Редеет - потому что на замену ушедшим никто не хочет приходить?

у долгоживущих проектов команда редеет независимо от действий владельца

А я слышал о долгоживущих проектах, которые со временем только пухли - Эппл, Микрософт, Гугл...

Неправильно выбрал слово, скорее прореживается. Сама команда может и расти, но основной костяк или уходит или меняется. Как результат, на проекте остаются куски кода, написанные n лет назад, которые "работают, не трогай".

FAANG - это замечательные примеры. Если у вас есть сотни миллионов на проект, пишите свои велосипеды, не стесняйтесь, потом наймут 10 человек поддерживать и развивать ваше творение. Или разгонят всех на другие проекты, а затраты спишут. Другая парадигма - другие решения.

Ну если работа команды основана по принципу "каждый пишет так, как хочет" - то неудивительно, что команда разваливается, а код получается неподдерживаемым. Мне кажется, что если вы хотите сделать не просто продукт, а конкурентно-способный продукт - то надо точно осознавать, в чём будет его преимущество. Особенно если вы с конкурентами берёте одни и те велосипеды, непонятно кем написанные и непонятно с какими багами.

Типичный пример - это библиотека SDL. Старая, популярная и предельно забагованная. Развивается до сих пор, но по принципу "устранены старые ошибки, добавлены новые". Я лично сам недавно перебирал её версии взад по истории, чтобы запустить и посмотреть интересную мне программу. В одних у меня звук не работал, в других графика. В итоге проблему решил перекомпиляцией программы, благо её исходные коды были доступны. Это же ведь не то, что ожидает конечный пользователь, не так ли?

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

Вообще, программисты боятся программировать. Т.е., писать код. Считается, что при наличии библиотеки, которая решает (или "решает") нужную задачу, не использовать ее - это что-то типа греха. Ну, как пачку чипсов в магазине украсть, не оплатив.

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

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

Ну да, я, вроде, примерно это и пытался изложить своими словами.

А я своим ответом пытался выразить своё согласие :)

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

Но чаще всего получается дольше и хуже. И это в принципе убивает идею повторного использования кода.

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

Опять на хабре волна про «я знаю единственный верный способ». Борьба философий «Лучше посрать и опоздать на встречу чем прийти вовремя и обосраться» и «дорога ложка к обеду (вовремя - лучше чем хорошо)». Все вот эти «пиши длинный код», «пиши короткий код», «пиши простой код», «пиши сложный код», «не пиши код», «пиши код», «не используй библиотеки», «используй библиотеки», «стремись к идеальному коду», «не стремись к идеальному коду», итд. Все попытки дать универсальный ответ для всех ситуаций обречены на провал. Кроме одной. Двадцать лет опыта позволили мне создать универсальный ответ на любой вопрос. Вы готовы, дети? Не «пошел в жопу, умник хренов!», а «Да, капитан!» нужно отвечать. Так вот «В каждой ситуации действуй по ситуации».

Третий закон любого форума: под каждым текстом всегда появится бессмысленный трюизм в комментариях.

Нулевой закон форумов: автор всегда прав.

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

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

Но народец — в массе своей — туповат, конечно, тут не поспоришь.

Да, капитан!

Первый вариант

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

Вы, наверняка, слывёте среди коллег и друзей весьма остроумным человеком, да?

А вы наверняка слывете необычайно токсичным вредным старпёром

* полезным старпёром

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

Я никак не разбираюсь в цифровых фильтрах и любой маршрутизации, поэтому я не беру на себя смелость ни писать библиотеки в этих областях, ни выбирать оные.

Как Вы решаете проблему недостаточности компетенций и узкой специализации?

Мы нанимаем профессионалов, с компетенциями и нужной специализацией.

Поддерживаю всеми клешнями!

Работал в одной крупной компании, делал свой "велосипед", сам писал скрипты на гитхаб экшнс, было полсотни модулей, по (условно) 20 версий, 1000 зелёных запусков, ноль красных. Наняли чела из Ебурга, меня своими политическими подковерными играми оттуда выжили. Переделали по его "видению", те самые 1000 звёзд на гитхабе. Перед тем как я уволился, помню смотрел, 70% красных прогонов. Т.е. проект регулярно "лежит" и требуется вмешательство чтобы его поднять. Зато теперь нет своих велосипедов. Отличное решение! Чётко, умеете, могёте.

Меня тут ценят!
Меня тут ценят!

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

Сократ же был раньше? Там, конечно, протоколирование было в переносном смысле.

Гелиасты, сэр!

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

Вместо волшебного DRY теперь контр-лозунги: WET (Write Everything Twice), AHA (Avoid Hasty Abstraction), DAMP (Descriptive And Meaningful Phrases

У велосипедов один Фатальный недостаток

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

Или более ****педично https://ru.m.wikipedia.org/wiki/Синдром_неприятия_чужой_разработки

Я, видимо, потратил недостаточное количество усилий на реабилитацию самого термина, и многие тут в комментариях почему-то продолжают автоматически приклеивать к слову «велосипед» абсолютно нерелевантные «нет тестов», «в одно рыло» и прочие ярлыки.

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

"Изобретать велосипед" - термин с устоявшейся негативной коннотацией по изобретению чего-то бесполезного, появившийся задооолго до появления термина "IT", реабилитировать его нет смысла. Если вы делаете собственное "уникальное инженерное решение", которое по требуемым параметрам превосходит существующие - вы делаете всё правильно. Если вы "изобретаете велосипед" не в учебных целях самообразования, а для решения реальной задачи - с высокой долей вероятности (но не 100%) вы делаете что-то не то ;-)

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

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

реабилитировать его нет смысла

У меня есть такая устоявшаяся привычка: я сам решаю, что мне делать есть смысл, а что — нет.

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

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

Да я шучу, что сразу обижаться то.

Обижаться? Я? Для того, чтобы я на человека обиделся, он сначала должен вытащить меня из окопа под артобстрелом, а потом украсть у меня миллион :)

Злостный и трагикомичный оффтоп.

Вот прям на грани статьи о дискредитации ...

Насчёт реабилитирования терминов - есть такой термин "monkey-patching". Команда разработчиков Angular придумала переобозвать это "зонированием", и вуаля - фреймворк имеющий гнусный антипаттерн в своей основе готов выходить в прод, пользуйтесь люди, смотрите не обляпайтесь.

Зашел в комментарии почитать фактический разбор - а его нет. Чтож.

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

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

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

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

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

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

Конечно. Поэтому нужно семь раз подумать перед посещением моэля. Что вашей команде обойдется дороже: потратить неделю прямо сейчас на реализацию того, что нужно именно вам и вашему проекту, или месяцы сопровождения библиотеки общего назначения, медленно решающей отдаленно похожую на вашу задачу.  <....> Но если библиотека написана каким-то чуваком из Оклахомы, про которого известно только то, что его ник на реддите — gray_pussy_2008… Ну, хотя бы имеет смысл заглянуть в тесты, пробежаться по исходникам и — зачастую самому — прогнать бенчмарки.

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

Ваш corner case будет не таким, как у автора и пользователей библиотеки. Поверьте нашему с Джоэлом опыту, никто не тестировал этот код на польской версии виндоуз. И даже когда вам удастся локализовать проблему и укрыть тестами неподатливый кусочек кода — как вы собираетесь его чинить, если ограничение на четыреста капель валерьянки прибито гвоздями, а вам нужно четыреста две?

Ну вот когда Вы сделаете свой Виндоус, не хуже оригинального, тогда можете показать, что таких корнер-кейсов у Вас нет. А то ловко - ОС, значит, писать не будем, но баг критиковать будем в контексте статьи, где "пишите сами". Видимо, за недельку можно и виндоус написать лучше, чем есть.

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

И прямо даже документацию по пути правок будете обновлять? Прямо регулярно? Прямо и тесты там будет с coverage 99%>? И прямо все это будет удобно оформлено, а не в текстовом файле в стиле "Сюда инт клади, тут флоат получай"? На бумаге все красиво, но этого почти никогда нет, поэтому на велосипеды и смотрят косо.

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

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

Подытоживая, в такой красивой демагогии все очень просто - делайте хорошее, плохое не делайте, всего хорошего. Только в реальном мире это не работает на базовом же этапе - где, например, чертить черту? Вот компилятор можно использовать? А библиотеки IO? Или в сырой буфер полезем? А всякие Pandas, NumPy etc., где академический и страшный код и еще более страшная оптимизация? А то получается интересно, я, конечно, крутой программист, настолько крутой, что даже над стаковерфлоу и чатгпт смеюсь, и считаю, что напишу код лучше текущего. Но не всегда. И не везде. А когда и где - это я решаю сам, и поползло.
Если есть готовый и качественный инструмент - мы берем его. Если нет - то пишем его. Любая маленькая задача, если решается качественно за неделю - можно сделать самим. Скопировать и переписать, в конце концов, или просто скопировать и использовать, если лицензия не запрещает, чтобы совместимость не ломать. Сложные задачи решают сложные инструменты, и писать свой страшный костыль не только не нужно, но и я бы был категорически против.

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

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

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

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

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

дорогие для бизнеса, но удобные лично для меня решения

Давайте вы со своими тараканами станете дискутировать где-нибудь в другом месте? Я ничего и близко похожего не предлагал никогда.

Конечно не предлагали, такое вообще не надо никому предлагать.

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

ну да проще вот я открываю msdfgen/msdfgen-atlas(пример из последнего что я заметил) смотрю на т.н. мануал/документацию - сам я пользуюсь системой с посикс и что я вижу, геморный кусок кода завязанный на туле Скиа, куча крутых фич с которыми в их реализации не хочется даже возится, и мне приходится как я даже не знаю программист ли я, разбираться с другими кодами разбираться вообще как из ничего сделать то что не смог в своей квинтессенции мсдфген и кстати чутка разобрался, но до идеала далеко. Это на тему как лень разбираться с чужим кодом, но не с чужой конечной реализацией, пришлось кстати даже документацию по труТайп поднимать и разбираться вообще во всем чтоб заработало

Скрытый текст

как результат разобрался даже с сдф в первом масштабе, но косячки пока еще есть ), это сигма 2

Спасибо. Этот комментарий в разы лучше статьи

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

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

Я прямо в тексте дал ссылку на один из своих велосипедов, в расчете на то, что прежде, чем приводить в качестве контраргументов тупые стереотипы, люди заглянут, хотя бы. Но тут же хабр, ха, чего я ждал. Ультранаивность — ожидать, что кто-то заглянет в код (документацию), прежде, чем выскажет своё бесценное облыжное мнение.

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

Да ну? Давайте я приоткрою вам немножечко глаза на реальный мир. ① все без исключения «проверенные и закаленные в боях» библиотеки — начинались как велосипед. ② по госплану развивался голанг — и посмотрите, что вышло; если бы не реклама от Г, этот набор костылей и заплаток — ни один уважающий себя разработчик использовать не стал. ③ правильный стек — понятие бессмысленное, в отрыве от контекста задачи. ④ в мире существуют сложные задачи, в которых нет чужих решений от Г, только от чувака из Оклахомы.

прямо даже документацию по пути правок будете обновлять? Прямо регулярно? Прямо и тесты там будет с coverage 99%>? И прямо все это будет удобно оформлено

Как я уже сказал выше, в тексте есть ссылка, можно было разок кликнуть, вместо того, чтобы саркастировать тут у меня в комментариях. Да, разумеется (кроме coverage >99%, который вообще никому никогда нахрен не впёрся, и которого уж подавно нет у библиотек, которые вы там в вашей «хорошего качества кодовой базе» используете). Зато у меня будут property-based тесты, бенчмарки и примеры использования.

Не нужно судить всех по своему негативному опыту и проецировать свои комплексы на окружающих.

Круче, чем репозиторий, который мейнтейнят крупнейшие игроки рынка

Часто это дяди Васи

Вообще не понимаю кто бесплатно мейтейнит и кто бесплатно контролирует. Были же истории с попыткой перехвата управления распространенными библиотеками с целью внедрения вредоносного кода.

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

В этом то и проблема. Вместо того, чтобы хотя бы поверхностно ознакомится с решением, прочитать в описании зачем автор написал свою, когда уже тыщи существуют (а там по-любому будет обоснование) – вы сразу категорически против. Такая категоричность вредит. Именно из-за нее у нас во фронтенде, библиотеку redux написаную лучшими ребятами из «книги лиц», выверенную, проверенную и т.д скачивают 11 000 000 раз в неделю, хотя объективно она проигрывает многим решениям примерно во всем. А результат этой быстрой и надежной разработки на проверенных библиотеках получается примерно как хабр, не грузим одновременно статью и комментарии, ибо тормозит.

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

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

Но дело даже не в этом.

уже тыщи существуют

Проблема (на мой облыжный взгляд) в том, что выбрав из тыщи, никто и не подумает «хотя бы поверхностно ознакомится с решением» из выбранной библиотеки. Я об этом именно и писал в главке ②.

Я писал свою БД. Не реляционную, а временных рядов. А также визуализацию к ней, свой язык в виде надстройки над SQL, библиотеки для обмена данными с контроллерами Simatic, коннектор к СУБД с автоматическим переподключением и асинхронными запросами через события, и ещё кучу всякого разного. И не как самоцель, а потому что все существующие решения, включая у таких именитых фирм как Siemens, которые вроде бы собаку съели на промышленной автоматизации - какое-то говно. И не потому что там программисты плохие, а потому что у них цели другие - заработать бабла, и побыстрее. В том числе и проприетарными решениями и форматами, чтобы клиентов к себе привязать и не отпускать к конкурентам. Понимаю и не осуждаю, рыночные отношения как-никак.

Ну закиньте в опен сорс

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

Ну закиньте в опен сорс

Я бы предпочёл продать и желательно за такую сумму, чтобы до конца жизни мочь не работать. А так - недостаточно же свой проект просто вываливать на гитхаб. Нужно:

а) писать документацию,

б) заниматься продвижением,

в) заниматься поддержкой.

То есть тратить кучу своего времени ради того, чтобы плодить себе конкурентов и брать на себя дополнительную ответственность. Зачем?

P.S. пара проектов на гитхабе у меня есть, поэтому в пункте б) совершенно точно уверен.

Ну да, ровно то, про что я и пытался написать: ваши задачи могут отличаться от задач крупнейших игроков рынка.

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

Бан у вас недавно был, надо бы повторить похоже вот за такие переходы на личности, например:

Возможно, это говорит о том, что в обеих ипостасях у вас крайне ограниченный кругозор.

Вы, наверняка, слывёте среди коллег и друзей весьма остроумным человеком, да?

Но когда мне потребуется секретарь для написания пресс-релизов, я его найму.

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

Я думаю, таких комментов с пассивной агрессией неск десятков наберется со всех ваших выпендрежных статей.

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

Что если скажу, что ваш код - дерьмо, и вы - сраный-старый мудак на вонючем велосипеде.
Давайте-ка ответьте мне тут как надо, а я позабочусь о вашем еще одном бане, думаю, многие будут не против.
ЗЫ: поддержите плюсом, кто за бан этого выпендрежника, наберется неск десятков - будет что админам ресурса передать.

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

Спасибо, что милостиво позволили мне и дальше существовать.

Поддержал плюсом.

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

когда у вас закончится обострение вашей болезни

ваших выпендрежных статей.

до сих пор не получили нормальных люлей

вам надо было навесить прямо в нос.

При этом агрессивный у нас — автор. И вы совершенно не умеете остроумно осаждать оппонента. Учитесь у автора, он вас умыл двумя (!) словами на семь ваших предложений.

поддержите плюсом

Лайк, подписка, комментарий. Вы это сейчас серьезно?

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

согласен. Извиняюсь.

Спасибо :)

вот такими совсем не агрессивными семью предложениями

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

Кто-то должен, наверно, ему уже прямо сказать об этом, вот я и сказал, что думаю о нем.

Думаете, ему до вас никто этого не говорил? :)

Видите, что человек "херачит" их просто, еще комменты пишет, и в других темах тоже отсвечивает.

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

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

На секундочку, на Хабре и так экспертов по пальцам пересчитать можно, некоторые перестали писать сами, некоторые даже и не собираются, хотя материал у них есть (напр., Константин Владимиров — вы, как человек знающий С/C++, о нем слышали, скорее всего), а вы тут банить одного из них собрались.

Вопрос, когда он успевает полезную работу делать как "рядовой специалист" ?

Так он и не "рядовой специалист", можно только позавидовать.

Я, например, в сварочном цехе свой телефон держу в полиэтиленовом пакете, а почитать что-либо могу только на 30 минутном обеде, при том что 10 минут от этого я только руки отмываю, а сами вы тут посреди рабочего дня комменты строчите!

Лично я в подобных "остротах" зачастую агрессии не вижу

Вы не видите, ну ок

и так экспертов по пальцам пересчитать можно ... а вы тут банить одного из них собрались.

Эксперт, пусть так, но правила приличий никто из-за этого не отменял.

 только руки отмываю

Тоже руки отмывал в свое время.
Да, комп - инструмент рабочий теперь, поэтому есть возможность строчить.

Ладно, давайте на этом закончим. Всем не угодишь, кто-то плюсы ставит статьям этим, я тоже ставил. Автору успокоиться желаю наконец, и перестать гнаться за признанием, а статьи пусть пишет, да.

статьи пусть пишет, да

Спасибо, вседержитель, век такой милости не забуду.

осаждать его приходится да

Если вы считаете, что вы меня осадили, — вам надо бы психотерапевту показаться. У вас мания величия в запущенной форме.

Не уйметесь вы никак, да. Ладно, время лечит.

он вас умыл двумя (!) словами на семь ваших предложений

Благодарю. Я очень ценю, что сие не осталось незамеченным, без шуток.

Срезал, скажите еще. Язык у вас отстрый, это не отнять, людям это нравится. Но суть-то не в остроте обычно ведь.

Ух ты, да вы, никак, Василия Макарыча читали?

Вот за это — сразу плюсик в карму, без вопросов.

плюсик в карму

Аналогично

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

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

Потому что у разработчика может не быть компетенции в данном вопросе. Самый простой пример — fftw. Вы смогли бы написать реализацию быстрее? Сомневаюсь. Не потому что вы плохой разработчик, код писать не умеете, а потому что у вас (вроде как?) нет компетенции в данной области.

Идём дальше. Как ловко мы перешли от

У библиотеки тысяча звезд на гитхабе

К

невнятной библиотеке версии 0.0.1, написанной албанским стажером три года назад по пьяни.

библиотека написана каким-то чуваком из Оклахомы, про которого известно только то, что его ник на реддите — gray_pussy_2008

Ещё дополнение к компетенции

Во-первых, потому что я умею писать код.

Это, конечно, хорошо, но код не существует в вакууме, это просто прикладная часть. Окей, вы написали движок к базе данных, возможно он реально хорош и идеально решает ваши задачи, но где гарантии что вы так же хорошо напишите, скажем, графический движок, планировщик или lock-free алгоритмы?

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

Потому что зачастую (по личной выборке, я бы сказал, 90%) велосипеды это как раз-таки "невнятная библиотека версии 0.0.1, написанная албанским стажером три года назад по пьяни". Без тестов, документации, примеров. Да, есть оставшиеся 10%, куда входят и велосипеды автора, но по большей части статистика удручающая.

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

Во-первых, велосипед стоит делать ТОЛЬКО если это оправданно. То есть решений либо нет (но мы и не велосипед тогда пишем), либо затраты на адаптацию и поддержку готового куда больше написания велосипеда.

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

Я прекрасно понимаю что хочет донести автор, просто выражены мысли, скажем так, своеобразно. Либо я дурак, не так понял гения и что он пытается донести.

Я не посчитал нужным уточнить, что за штурвал самолета имеет смысл садиться только пилотам. Мне это казалось слишком очевидным, чтобы размазывать сопли по тексту.

Перед профанами обычно же и выбор библиотеки тоже не стоит, зачем специально оговаривать, что картину пишет художник, а не Остап Сулейман Даннинг Крюгер Бендер?

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

И вы очень заблуждаетесь что перед профанами не стоит выбор библиотеки :)

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

Именно так.

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

Потому что большинство велосипедов именно так и пишется. Личные наблюдения.

вот пишу своё решение, когда существующие решения меня не устраивают.

Истинно так.

"If you never fail, your aren't trying hard enough" (C)

поидее fft можно и самому написать )

Я писал.

я тоже было дело да и формула есть в вики )

щас вот что получается )

Скрытый текст

чисто Гаус как я понял, а вот как Гимповский алгоритм повторить хз )

тут получается хотелось сделать edge-detect, а получилось чтото между bloom и edge-detect

Ну тут по мне свёрткой в лоб будет проще, а на GPU ещё и быстрее.

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

допилил )

Скрытый текст

получается без зависимостей система шрифта и чутка процессинга до отрисовки на гпу

там еще можно будет наверно СИМД добавить будет поинтереснее наверно

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

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

Думается мне, что велосипеды не подходят от силы в 10% случаев. А 90% кейсов давным-давно уже покрыты в области типичной крудной опердени. Я не прав?

Не знаю, я не занимаюсь крудами, но нормальный фреймворк для фронтенда, например, мне за мою жизнь удалось увидеть однажды — это Polymer, который создатели сами же и закопали.

У велосипедов, помимо перечисленных выше преимуществ, есть еще одно, на длинных отрезках пути даже более существенное, — создание собственных велосипедов прокачивает кунфу вашей команды в сотни раз сильнее, чем использование чужих

Что-то прям троицей Кимов, ТПК и Чучхе повеяло от этогго )))

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации