Нервный программист
176 subscribers
87 photos
2 videos
1 file
50 links
Эмоционально об айти и программировании
Download Telegram
Литералли каждый коммент, когда вайбкодю:
😁4🤔1
Уууу сукаа. Выбесился с двух вещей вчера.😡
1. Claude Sonnet 4.5 (потому что пиздабол)
2. github (потому что майкрософт нихера там не улучшает и всем поебать на запросы пользователей)

В чем суть. Пытался задеплоить пет проект. Шоб вы понимали, это просто старый добрый static веб сайт из трех файликов: html, js, css. Никаких фреймворков, баз данных и прочего бэкендского говнишка. Всякие либы гружу с CDN. Полный минимализм. Боже, как я по этому скучаю на работе😔

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

И я спрашиваю у клода "а могу я в github actions просто собрать свою прелессть во время публикации релиза и просто запихать ее как ассет, а потом на своем сайте просто грузить этот ассет по прямой ссылке?"

И клод мне отвечает: "Отличная идея! Ты такой умный и красивый! Кстати, github releases поддерживает CORS, так что проблем не будет!" Я его про CORS даже не спрашивал, но он вообще красавчик, и сам мне написал про это👍

Для тех кто не в курсе, что такое CORS (Cross-Origin Resource Sharing). Это такая штука, которая позволяет бровзеру загружать ресурсы с другого домена. В данном случае, мне нужно грузить ассеты с гитхаба, и это другой домен. Поэтому поддержка CORS с их стороны будет как нельзя кстати.

Проблема в том, что у гитхаба нет поддержки CORS для ассетов релизов 🤡 Зато есть тикет, которому 3 года, с просьбой добавить эту самую поддержку. И я узнаю об этом в тот момент, когда уже все нахуячил и пытаюсь задеплоить. Всякие штуки вроде raw.githubusercontent.com позволяют загружать только контент репозиториев, но не ассеты релизов.

У этой проблемы существует 2 решения:
* Использовать прокси
* Добавить стадию билда, где перед публикацией загружать ассет и класть его рядом с другими файлами

Я выбрал второй варик, потому что первый - это какое-то нереальное дрочево, если делать свой прокси, и суперненадежно, если использовать публичные. Благо, что мой хостинг провайдер netlify позволяет изи сделать билд😍 Вообще про netlify можно отдельно написать, потому что прям очень понравилось. Если вам надо захостить простой сайт БЕСПЛАТНО, то netlify - это прям мой рекомендасьон!

Выводы:
1. github не поддерживает CORS. Говорят, даже их api не поддерживает CORS, хотя в доке написано обратное, но тут я не проверял 🤷
2. llm врали, врут и будут врать. Причем делают они это так убедительно, что каким бы подозревакой ты не был, разок-другой тебя все равно наебунькают. К сожалению или счастью, общая производительность благодаря им все равно гораздо выше. Поэтому придется принять эту реальность. Кожанный мешок может лишь научиться вычленять критичные факты, и вовремя их проверять (используя те же llm для скорости проверки), прежде чем начинать реализовывать предложенный план.

Пока что с пунктом 2 у меня проблемы. Нейронки нахлабучивают меня регулярно, а я им даже в чан не могу прописать 😢
😢5👍2👏21
⚠️Итак, про пет проект и небольшой анонс! Если вы php разработчик, то это может быть вам интересно!⚠️

Те, кто ковыряются с пыхой знают, насколько важен стат анализ в их коде. В наши дни наличие phpstan или psalm в дев пайплайне уже вариант нормы. Ну это, если вы не wordpress разработчик — вам, ребята, мои искренние соболезнования и обнимашки🙆‍♂️

Тем не менее, существует огромное количество легаси проектов, в которых вместо современных DTO с readonly классами, все еще повсеместно используются наши любимые array. Но даже в современных проектах, внешний json незамедлительно декодится во что? Правильно, в std объект или массив! В этих ситуациях разработчик может почувствовать недостаток типизации в крови.

При этом, и phpstan, и psalm поддерживают array и object shapes в аннотациях типов, что позволяет добавить типизацию для массивов и объектов. Но аннотировать такое ручками часто больно и лениво😔

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

Короче, в итоге родилась cli утилита hell2shape (https://github.com/Feolius/hell2shape)🤩

Но! я прекрасно понимаю вас, мои ленивые пирожочки, что вы даже исполняемый файл заленитесь скачать, и уж тем более не будете ставить это через композер. Поэтому специально для вас я сделал веб версию, чтоб вам вообще можно было не напрягаться https://hell2shape.netlify.app/, а сразу попробовать! Из прекрасного здесь то, что это все работает локально в браузере через php-wasm😍 Как следствие, я не парюсь насчет сервера, а вы не паритесь насчет ваших данных!

Теперь немного оправдашек:
1. Сразу скажу, что я не ставил задачу сгенерировать все типы абсолютно правильно. Это и невозможно! Тут скорее смысл в том, чтоб у разработчика появился некий бейзлайн, который он скопировал в ide, а дальше уже допиливал сам.
2. Генератор тупой как пробка. Это означает, что если вы ему дали на вход лист, в котором каждый элемент уникальный — на выходе вы получите лист, у которого элемент это юнион из кучи типов. Никакого лимита на количество типов в юнионе пока что нет.
3. Ну и в целом тема то сложная, обосраться можно много где. Так что не судите строго. Просто шлите баг репорты 😊

Пожалуйста пробуйте. И пишите, че думаете. Говно, не говно? На сколько полезно вам будет?
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥6🤝5
Вы не просили, но я все равно принес вам обзор на книгу. В этот раз отзыв будет о труде под названием "Распределенные данные" за авторством Алекса Петрова☝️Про себя я ее называю "недокабанчик".

Мы с Маськой изучили книгу и ставим ей четкие 5.5 из 10. Маська попросила накинуть 0.5 за рыбу на обложке😊Данную оценку можно интерпретировать как "Книга не полное говно, но и настоятельно рекомендовать ее не буду".

Это книга о базах данных в разрезе подсистем хранения. И название здесь совершенно сбивает с толку. Можно подумать, что она про базы данных исключительно в распределенных системах. Но это не так. Книга состоит из двух частей, и первая из них (бОльшая) посвящена исключительно одноузловым системам. И только вторая часть про алгоритмы распределенных СУБД.

В этой книге рассматриваются следующие темы:
* B-деревья
* Очень много разных B-деревьев
* Больше-больше B-деревьев
* LSM - деревья
* Важные слова про распределенные системы, куча бессмысленных описаний алгоритмов распределенных транзакций и выбора лидера, CAP - теорема.

Впринципи, больше ничего нет. Да, в книге про распределенные данные не написано толком ничего про репликацию и шардирование. Так бывает.

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

Второй момент связан с тем, что как учебник она так себе. Это легко можно понять по тому, что в книге очень много ссылок на БУДУЩИЕ главы. Я считаю, такое допустимо, только когда книга - справочник. Кстати, вы можете легко это исправить, если будете читать книгу задом наперед🤡

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

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

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

Книга будет полезна, если вы хотите разобраться в
* B-деревьях (круто описаны)
* общих вещах и проблемах, связанных с распределенными системами

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

Вердикт: могло бы быть и лучше!

Кто найдет ошибку на второй фотке?
👏7❤‍🔥4🔥2
Карочи, попробовал использовать свой hell2shape в работе. Оказалось неюзабельное говно😀

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

Первая проблема была ожидаема. Я предполагал, что var_dump не очень удобен в использовании. Но его универсальность как инструмента отладки подкупила. Вторая же проблема оказалась неожиданностью, потому что я вроде бы тестировал сохранение форматирования при вставке до этого, и все работало🤔 Но возможно мне показалось, и я в очередной раз обосрался.

Немного погрустил. Но на энергии грусти решил запилить фиксы в эти выходные. И мне кажется, получилось 🤩 Встречайте версию 0.4.2!

Первую проблему решил тем, что добавил фасад Hell2Shape, у которого всего один статик метод generate. В итоге можно прям в коде написать

$types = Hell2Shape::generate($var);

и получить типизацию в $types. А дальше уже вопрос, как ее скопировать. Можно, например, var_dump'ом 🤡 Но я обычно просто из дебаггера копирую. В любом случае, это уже не мои проблемы так гораздо проще😊

Вторую проблему удалось победить тем, что теперь hell2shape по-умолчанию генерирует PSR-5 DocComment. При вставке комментом все форматирование сохраняется (слава богу). А дальше его уже можно допиливать в редакторе, добавляя всякие @var и прочее. Появилась опция и в cli, и в gui, чтоб можно было отключить комменты, и вернуться к старому варианту.

Вот такие пирожочки, пирожочки!

Спасибо, что накидали (накидали же?🤨) звезд на гитхабе, даже несмотря на неюзабельное говно 😘

UPD. Чуть не забыл. Внутри Hell2Shape есть хелпер VarDumper, который позволяет сохранить var_dump переменной в переменную

$dump = VarDumper::dump($var);

Тоже должно помочь поидее
😁4👍31
В сеть утекли требования на джуна в 2026 году
🤣8🔥2😁2👍1😭1
Ну так что там у нас с десктопным линуксом? На сколько это все дружелюбно для рядового пользователя?

Как некоторые из вас могут помнить, перед новым годом я ставил кубунту. Ну как ставил. По сути это она ставила меня на место. Но в итоге все таки проблемы запуска удалось победить, и я даже как-то смог там обжиться😊

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

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

Линукс мне потребовался для дела. Не просто поразвлекаться и вспомнить молодость. Мне надо, чтоб все работало с минимальным количеством затрат. И даже если бы что-то не работало, я мог бы изи это все починить по гайдам в интернете. Некада мне тут экспериментировать. Поэтому и выбор в пользу самого попсового дистрибутива. Понятно так?

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

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

Ну это ладно. Начал ставить всякие приложухи. И само по себе это удовольствие ниже среднего, если ваши приложения не deb пакеты. Ну, например, если вам поставляют AppImage на электроне, то надо создать конфиг для apparmorа, иначе ничо не запустится. Представляете, как классно быть обычным пользователем самого дружелюбного дистрибутива?

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

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

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

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

Так вот, 2 часа ковыряний, и экспериментально выяснил, что если .desktop файл в имени содержит дефис, то приложение не появляется в списке🤡 А при этом разработчики, поставляют этот файлик с дефисом, например jetbrains-pycharm.desktop.

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

Короче, вывод. Как бы кто не хейтил винду или мак, у обычных пользователей по факту нет альтернатив. Сорри. 6 лет не касался десктопного линукса, но он как был говном для специалистов, так и остается. Поэтому, если ты своей маме решил поставить убунту, ведь там все НЕХУЖЕ, будь готов выделить пару выходных в месяц и банку смазки (себе, не маме), чтоб решить ее проблемы.
4💯4👍2👨‍💻2🔥1
Полюбас у каждого разработчика есть нелюбимый тип тасков. У меня, как у бэкенд трудяги, в топе этого списка всегда находится интеграция с third-party api. Потому что
* это всегда куча неопределенности, которую невозможно оценить
* в 90 процентах случаев дока говно
* это всегда жопа с тестированием

Однако даже среди таких задач, оказывается, существует подвид задач, которые абсолютно прокляты. Я сейчас говорю про интеграцию с платежным api google и apple. Я бы даже расширил это до "интеграции с appstore и google play api".

Третьего дня свалилась задачка, что пора бы обновить интеграцию на сервере с apple app store api, потому что текущий способ устарел. Вот такое конечно особенно ценишь, когда все работает, но блять устарело. В итоге ценности для бизнеса ноль, для разработчика удвольствия ноль, а пердолинга по самые помидоры. Штош.

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

Тоже самое с гуглом. Если хочешь тестировать платежки в google play, нужен девайс с андроидом🤷

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

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

еще и sdk под пхп не завезли 😔
👍3💯31🤝1
Вчера Валентин Удальцов с канала @phpyh разобрал код hell2shape на стриме, за что ему огромное человеческое спасибо. По итогу даже отправил pr с небольшим фиксом😍В конце выяснилось, что код hell2shape был написан с использованием llm 😀

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

Знаете, что общего между мной и Меркурием? Мы оба бываем очень ретроградными

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

Сама по себе задача очень простая и прямолинейная. Есть понятные ввод и вывод. Есть понятные стадии обработки: лексер, парсер, генератор. Мне показалось, что это будет идеально для проверки возможностей ллм. В качестве агента решил использовать Cline + claude sonnet 4.5 (ебать это дорого оказалось)

По итогу llm бустанул меня так, шо я охерел. Учитывая, что писал я это вечерами после работы, будучи уже очень усталым, польза от ллм становится х2. Более конкретно, ллм помогла в следующем:
* создание каркаса приложения (генерация файлов с классами, структура папок и накидывание сигнатур методов)
* написание тестов
* написание документации (это вообще просто бомба)
* создание UI (ненавижу фронтенд)

НО!

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

Или вот решил я возвращать phpdoc вместо типов, о чем писал до этого. Понятное изменение. Сказал клоду, шоб делал. В итоге клод просто взял результат, разделил строку по \n, добавил префиксы пхпдоков и собрал обратно. Вроде валидно, но по факту ведь говно. Если бы у меня был заказчик, который торопил меня, я бы даже принял такое и поставил тудуху на фикс)

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

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

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

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

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

Также специфика проекта это еще и об изолированности области, в которой вы вайбкодите. UI hell2shape — отличный пример. Я туда смотреть вообще не собираюсь. Мне этот html и css абсолютно не интересен. Более того, я еще и на компромиссы готов тут пойти, как единственный стейкхолдер. Поэтому здесь ускорение даже не в дестяки раз, а в сотни.

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

Если не лень, пишите в комментах про ваши стратегии вайбкодинга🙏
5🔥4👍3
Давненько не было лонгридов. Решил это исправить.

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

Mypy vs Phpstan: битва стат анализаторов

Ну и как всегда, feel free to написать коммент, и сказать, где я обосрался и неправ😚
8🔥2👍1
Лучший код - тот, который не написан. Лучшая реплика - та, которой не существует☝️
11👍1
Ну что! На улице rain, на душе pain, за окном cold, за компом old. А значит время поныть!

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

Однако сегодня речь про компанию поменьше под названием jetbrains.

Не так давно они зарелизили ide под версиями 2025.3. Будучи парнем ссыкливым по жизни, я не бросился тут же обновляться. Тем более, что апдейт серьезный, и они там переработали графоний. И поскольку ui импрувед, вероятность баг резиста крайне мала👨‍🦳

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

Дело в том, что, когда мне надо открыть несколько проектов в одной ide, я предпочитаю интерфейс в одном окне с табами. Каждая таба — это отдельный проект. Так вот после обновления при открытии нового проекта ide стала нахер зависать с серым пустым экраном😡 и я не один такой. Вот тикет у них в трэкере. И это во всех продуктах, какими я пользуюсь (phpstorm, pycharm, goland).

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

Но это только часть истории! Дело в том, что предыдущие две недели я провел в грузии. И там я не смог этот баг ни разу повторить! Просто проблема испарилась! Хотя до этого, у меня была проблема не повторить этот баг, а открыть новый проект. Вернулся в рф. Первое же открытие проекта — сразу серый экран🫠

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

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

Так и живем 🚬Спасибо за внимание!
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3😭3💯21😁1
Мне, как и многим, наверное, было интересно, как OpenAI, компания которая состоит из надутых денег чуть менее, чем полностью, собирается стать прибыльной. Ведь там же полный писос.

Nvidia вкладывает деньги в openAI, чтоб те закупали у них оборудование. То же самое делает и amazon, чтоб те у них хостились. А OpenAI в свою очередь подстегивает капитализацию nvidia и amazon. И они все там крутятся в циклическом анале, не производя при этом нихера и без особой прибыли.

А мы ощущаем повышение цен на железо из-за ихнего голландского штурвала😡

Но вот вчера талантливый бизнесмен Сэм Альтман наконец-то разьяснил, как они собираются генерировать прибыль. Слава богу, теперь я могу спать спокойно☺️
🙈81
Теперь можно выразить еще и глубокую озабоченность, а чуть позже — решительный протест🤷
👍5
Внимание! Обнаружена самая лживая книга по программированию!
😁151
Уже больше года активно не пишу на "лучшем языке для написания бизнес логики" по версии биг техов. Я сейчас конечно же про golang. Так уж получилось, что наши пути разошлись🤷 Обстоятельства оказались сильнее😢

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

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

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

И вот тут разработчики берут и переделывают реализацию хэш мапы, хех. Теперь там, так называемые Swiss Tables. И получается, все ответы, которые кандидаты заучивали годами, становятся неверными устаревшими. И важно выдать другой ответ на собесе. Со старым ответом ты уже не сможешь json перекладывать🤡

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

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

Я сколько открытых собесов по голэнг не смотрел, не видел ни разу, что спрашивали "расскажи, а какие подходы ты знаешь для проектировани хэш мап"? Этот открытый вопрос гораздо больше проверил бы "сеньорность" кандидата. И он не привязан к заученным мантрам. Но его очень легко приземлить на голэнг. Ведь если кандидат отвечает "ну я знаю open-addressing и chaining", то наверное он в своей голове давно уже связал реализацию через бакеты и сразу поймет, куда воткнуть swiss tables. Но даже в такой формулировке хз, на сколько это важно для реальных задач.

Короче, вот пишу на пыхе 15 лет. Вроде приличный срок. В данный момент (момент написания поста) вообще не ебу, как там реализованны массивы. Читал про реализацию, охеревал от того, на сколько умные люди там все писали, закрывал, забывал. Повторял раз 5.
И если бы я кого-то собесил на php, и мне кто-то наизусть рассказал устройство массива, я бы очень удивился и поинтересовался, а какая нахрен такая задача заставила в это погрузиться. Потому что иначе, он прочитал об этом буквально вчера и пытается меня впечатлить.

Но на голэнг собесах, похоже, все любят друг друга впечатлять, а не искать кандидатов под задачи🦶 Но может я неправ, и с такой ситуацией на рынке "впечатлять" приходится всех и везде🫠
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6👏5😁43💯1
Атеисты: *бога и дъявола не существует*

Дьявол в комментах:
😁172