Андрей Журавлёв
718 subscribers
8 photos
1 video
131 links
Будни и мысли @Gen1us2k реклама не интересует. Рекламу не продаю и не покупаю. Пишу на смешанные топики в программировании и менеджменте
Download Telegram
Вайлдберрис — контора пидорасов. Неделю спустя.

Оставайтесь на линии, ваш звонок очень важен для нас. Примерное время ожидания два года.

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

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

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

На сайте написано что по всем вопросам можно писать на sales@wildberries.kg или sales@wildberries.ru, но там тоже не отвечают.

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

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

Don't marry your code. Наверное это лучшее что я слышал за последние полтора года и я полностью согласен с этим утверждением. И расскажу о последних изменениях, которые таки получилось вмержить в main, но они убивают больше половины кода, написанного в проекте.

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

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

1. Это достаточно большая и сложная зависимость для проекта и нужен код для работы с ним
2. Нужно думать, как сделать использование постреса для HA, а это значит нужно либо использовать оператор, либо пилить самим что-то чтобы запустить три реплики постреса, чтобы они работали между собой
3. Его нужно бекапить и думать об этом.
4. В кубере есть либо кеши контроллера, либо кеши клиента, которые лучше подходят для кеширования объектов, чем пострес.

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

Но! Обсудив с продактом весь этот движ мы приняли два важных решения

1. Задепрекейтить композ и деплоить Эверест внутрь кубера и сделать его Kubernetes Native приложением
2. Убрать поддержку мультикуберов, потому что пока не понятно что на самом деле нам будет нужно и если убрать всё прямо сейчас, то продукт станет проще.

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

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

Такие дела
Не трогай, оно и так работает.

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

Продолжая тему Don't marry your code с течением жизни проекта и изменений требований проекта, части системы придется выкидывать. Как по мне лучше всего это делать без сожалений и не думая о том, что завтра эта вещь может понадобиться. Это равносильно комментированию кода при коммитах.

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

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

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

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

Убитая ненужная зависимость снижает
1. Когнитивную нагрузку
2. Косты на хостинг для пользователей
3. Поддержку решения разработчиками
4. Количество корнеркейсов и обращений от пользователей, что не работает тот или иной функционал
5. Тестирование
NFS: Unbound, Resident Evil 4 и God Of War: Ragnarok Valhalla

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

Resident Evil 4 — это любимая игра из прошлого, но проходил я ее впервые на компе. Я тильтанул после первой попытки и когда пришел в деревню дох очень часто, плюс на компе я проходил ее с читами, нарисовав себе кучу денег с помощью артмани. В целом — это тот же самый резидент, с тем же сюжетом, теми же косяками, только с новым и классным графонием. На контроллере в нее играть сначала непривычно, но потом как-то втягиваешься. Было прикольно пройти ее сначала, а потом еще раз и в итоге забив, что я таки не куплю бесконечную базуку я забил на нее спустя 2 с половиной прохождения. Плюс до платины ее если добивать, то пройти надо будет не один раз, а на это тратить 5-10 часов не очень хочется

DLC для God Of War получился достаточно интересным и хорошим. Кто играл в Варкрафт и знает что такое Торгаст или Башня Мага, то это примерно тоже самое, только с дополнительной историей и всем подобным. Кратко — нужно просто проходить через несколько миров и дверей поднимаясь наверх, драться с Тиром и получать какой-то кусок истории. В целом пройдя DLC на 100% остались вполне себе хорошие впечатления.

Unbound. Вообще я не собирался покупать игру и как-то гамать в нее. Я вообще думал поставить NFS: Most Wanted 2005 года и пройти ее еще раз, но посмотрев пару обзоров я решил дать шанс, к тому же она шла со скидкой и обошлась мне в 11 баксов. Я не любитель серии после того, что выходило после 2005 года, пробовал Heat, пробовал переиздание Most Wanted и оно не заходило. Тут же есть прикольные эффекты в стиле комиксов. По геймплею есть вайб тех самых андерграундов и мост вонтед, саундтрек в игре отстой, AI хорош и на пару кругов не накатать их уже, плюс количество рестартов ограничено. Также можно не париться и не всегда приезжать первым, кроме некоторых ивентов. В общем, можно попробовать поиграть в нее. Правда онлайн доступен только при подписке на Playstation+.

А пока сейчас межсезонье в World Of Warcraft, то приходится играть либо в какие-то игры на плойке, либо смотреть видосики с конф.

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

Обычно из каждого утюга говорят про ворк-лайф баланс. Однако если в вашей лайф только ворк и лайф, то у меня плохие новости. Жизнь не делиться на лайф и ворк и обычно для поиска баланса есть колесо баланса и другие инструменты. Также говорят, что переработки ведут к выгоранию, однако это в большинстве случаев не так. Я сколько перерабатывал и не выгорал (Да-да типичное у нас психологов не было и ниче, нормальные. С вас пять тыщ :D). По опыту и наблюдениям переработки ведут к усталости, истощению и даже если разорвать бесконечный цикл, то восстановление займет достаточно быстрое время до пары недель. Однако, если переработки бесмыссленные, то вот в этом случае оно может привести к выгоранию.

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

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

Более менее список причин, которые могут привести к выгоранию

1. Некомпетентный менеджмент. К сожалению его найти в отрасли достаточно легко. Сюда входят классические примеры, что мы используем agile poker для получения эстимейтов, менеджер принимает решение когда должна быть готова та или иная фича в 100% случаев и так далее
2. Насилие на рабочем месте. Сюда входит обесценивание труда, выданное под соусом “Я выдаю фидбек”, не умение в конструктивную обратную связь, обвинения всякие, газлайтинг, абьюз и подобное
3. Непонятна картина куда вообще идет проект ни по технической, ни по продуктовой стороне. Если нет ответа “А зачем мы делаем этот проект”, то в конечном счете человек не будет видеть смысла в своей работе
4. Бесмыссленные переработки. Есть переработки, которые вполне легко переносятся. Например, когда катите какую-то фичу и хотите успеть. Тут всё понятно зачем и почему перерабатываете. Но если переработки не по вашему желанию а из-за некомпетентности менеджмента или неумения говорить нет, то тут они и ведут к тому, что можно выгореть.

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

1. Отъебитесь от себя и позвольте себе ничего не делать. С работы можно либо взять отпуск, либо уволиться, либо делать что-то другое.
2. Прислушайтесь к себе что хочется делать. Это может быть желание отоспаться, посмотреть сериалы, погамать в игрушки, набухаться, накуриться, натрахаться или что-то еще
3. Дайте себе время на отдых и реабилитацию
4. Смените область деятельности
5. Плюс была терапия, которая дала результаты

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

1. Сначала спал и ничего не делал
2. Потом посмотрел все сериалы, которые хотел
3. Когда понял, что не могу сидеть без дела, решил попробовать поработать таксистом, чтобы закрыть весь цикл работы в такси
4. Когда понял, что бухать можно в ноль, поработал барменом пару смен и научился готовить пару коктейлей. В итоге у меня теперь есть немного барного оборудования и я могу делать коктейли. По крайней мере сделать виски саур – это изи
5. Занялся обучением, ресерчем интересных для меня тем

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

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

Ну и свои варианты можно докинуть в комменты
Capture the Flag(CTF) — это всегда интересно, прикольно, волнительно и в целом офигенно. Это такое соревнование, в котором можно залипнуть сильнее, чем в любой самопогружающей игре и на этой неделе меня случайно подбили на это действие.

Регнул команду, посоревновался вместе с другими ребятами со всего мира по разным тематикам: Web, Pwn, Crypto, Hardware, Reverse, Misc и несколько других. Решил 10 челленджей из 67 уровня до медиум.

Веб разработчикам участвовать в этих мероприятиях будет хорошо, чтобы научиться писать безопасный код и хотя бы знать про OWASP top 10. Админам и прочим — научиться конфигурировать сервисы достаточно хорошо.

Из интересных вещей, которые были не в Reverse:

1. Прикольно было ковырять RabbitMQ, чтобы найти флаг в очередях
2. Было интересно поэксплуатировать RCE питоновского pickle
3. Было забавно впервые самому загрузить пхпшный шелл и поломать пхп приложение по выводу времени
4. Получить классный опыт получения reverse shell

Был удивлен решить хоть что-то в Reverse, учитывая что для меня эта тема была новой (относительно). Я как-то давно интересовался этой темой и руки никак не доходили до этого, пока десяток лет назад не встретился с чуваком, который захотел перейти с реверс ресерчера в питониста. Тогда он скинул мне простую crackme, сказал поставить IDA, открыть его и сказал: “Вот тут код, найди тут баг”.

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

Сейчас же, дошел до медиум и в процессе реверса чуть лучше стал понимать ассемблер (не, код на нем я конечно не напишу, но понять стало проще), поработал с разными тулами, типа strings, file, ltrace, strace, radare2, ida.

Некоторые бинари поддавались минут за 20-60, над некоторыми думал более 5-6 часов.

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

А какие подобные активности нравятся вам и почему? Хакатоны? CTF? Что-то другое?
Следующая серия постов будет про найм. Там я и по ворчу и по критикую и в целом как-то порефлексирую опыт. Я долгое время нанимал сам, поэтому кое что об этом знаю.

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

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

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

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

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

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

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

План, который собираюсь раскрыть следующий:

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

А что добавите вы?

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

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

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

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

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

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

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

Если смотреть наглядно про было и стало то вот резюме до работы с Сашей и вот после.

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

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

— Чувак просто решил побездельничать пару месяцев и это вполне себе лайтово
— Можно взять время на рефлексию и это тоже лайтовый вариант для ответа
— Ухаживал за больным родственником
— Человек сам болел или с ним что-то случилось.

Можно вопрос “А почему вы ушли и не устроились куда-то после увольнения” ставить примерно в одну и ту же категорию, что вопрос “Тебе 30+ лет и у тебя нет детей. Почему?”.

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

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

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

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

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

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

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

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

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

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

Домашние задания тоже вполне себе окей, хоть тоже и сомнительно. Обычно я не против домашних заданий, если я чему-то научусь в процессе, либо задание интересное, либо оно короткое до 4х часов в идеале, максимум 8.
А может среди подписанных тут ребят есть кто сейчас в Праге и кто хочет сходить на концерт Раммов в это воскресенье? Если есть — напишите плиз, два билета отдам со всеми нужными доками
Жаль конечно что концерт Batushka перенесли на октябрь в Алматы потому что кое кому не понравился блек метал в религиозном сеттинге.

Где-то месяц ковыряю Rust и переход дается проще чем когда я переходил с питона на го, однако язык интересен.

Что нравится в языке

— Модель работы с памятью и то, что есть афиннные типы (те типы, которые гарантируют что переменная будет использована не больше одного раза). Иногда конечно это раздражает, но всё равно это лучше, чем дебажить код, который был написан не тобой и переписывать места где аллоцируется память.
— Генерики сделаны хорошо, понятнее и для людей. В Go, когда их завезли было не очень понятно зачем, учитывая что в целом жили нормально и без них.
— В Расте есть макросы, которые прям очень хорошо расширяют возможности языка. В го есть для этого кодогенерация, но она всегда выглядела как-то сомнительно.
— Трейты в расте — прям дар божий. Иногда бывает нужда расширить стандартный или другой тип и добавить пару методов и в Го для этого приходилось эмбеддить тип и пилить кучу всякого вокруг этого кастомного типа, когда как в расте можно сделать просто


impl ErrorTokenStream for String {
pub fn to_compile_error(&self) -> String {
return String::new()
}
}


и теперь у каждой строки появится этот метод.

Отдельно нравится тулинг и раступ (rustup) и карго. Если в го нужно знать о металинтере (теперь golangci-lint) и ставить его отдельно, то у карго есть clippy, который можно запускать в педантичном режиме.

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

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

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

Я хз писал об этом или нет, но как-то надоело в одно время при поиске работы пилить yet another microservice architecture на гошечке и хотелось пилить чего-то интересного и желательно чуть более низкоуровневого.

Радует что хайп с блокчейна ушел, можно с этим разбираться, однако за 5 лет в блокчейне много чего случилось. Там и Solana запустили и Ethereum решили как-то поскейлить и в целом появилось много разных вещей в экоситеме, типа Intent, Order Flow Аукционы и прочее.

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

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

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

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

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

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

ЗЫ. Раст хорошо трансформирует мышление при дизайне программ и написанию кода. Пока интересно, потому что начал копать темы, которые не особо хочется копать в го или питоне.
Что могу сказать после месяца программирования на расте. Мне всё нравится пока что, не считая некоторых странностей от непривычки (это я про борьбу с борроу чекером конечно же)

Раст в целом сделал меня куда продуктивнее. Хотя не совсем раст конечно же, а копилот или что там в вскоде код генерит мне я хз. Конструкции с генериками и лайфтаймами не вызывают каких-то вопросов, плюс куда интереснее погружаться вглубь языка, что в целом помогает лучше понять и остальные языки, типа Go или Python. Продуктивность достигается просто за счет того, что много вещей происходят в compile time и не надо смотреть что не запилил ли где-то data race или нет запуская программу.

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

Го меня подкупал в свое время двумя вещами: просто читать код и достаточно удобный способ в concurrency/parallelism. В плане метапрограммирования го не был интересным, потому что я об этом то и не особо знал тогда.

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

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

На Расте кстати куда проще писать код, который не аллоцирует ничего лишнего, потому что есть и лайфтаймы(которые часто всех пугают) и всякие Rc, Arc фичи.

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

Больше всего в Go меня подбешивала обязанность постоянно писать if err != nil. С одной стороны это куда очевиднее и выбирая между эксепшнами и постоянным дрочевом с обработкой ошибок, то я выберу второе, потому что надобность в сентри или подобном отпадает. Плюс код становится более очевидным в плане того, где оно может поломаться и почему.

Нравится что в расте нет nil поинтеров и nil aka null в принципе, что отлично помогает в недопущении UB. None есть, но это относится к Option когда у тебя может быть два варианта, либо Some, либо None. Это больше похоже на монадические подходы.

Но вещь, которая прям зашла и теперь очень часто используемая штука это Result<T, E>, который также похож на монадические вещи, однако там может быть что угодно вместо T и E.

Можно сделать такой вот код


type Error enum {
String(&’static str)
}

fn function_returning_error() -> Result<T, &’static str> {
let result = do_stuff().ok_or(“Error happened”)?.do_other_stuff().ok_or(“Another Err”)?
Ok(result)
}


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

Это удобно. Можно теперь писать код куда выразительнее и меньше тратить времени на бойлерплейтные вещи.

А еще я перешел на VSCode с ViM, правда чуть чуть страдая и может быть обратно вернусь на ViM. Все дело в интеграции из коробки с Copilot, который и код помогает писать быстрее (это не стандартные подсказки, а что-то более серьезное и генерящее большие куски кода, чаще всего валидные) и получать ответы на вопросы прям из вскода через Cmd+I интеграцию.

Я переходил с IDE на обычный текстовый редактор, потому что было удобнее и быстрее печатать самому в ViM. Да и фичи IDE я использовал редко. Сейчас VSCode делает меня куда продуктивнее, чем ViM.

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

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

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

Вообще за карьеру было парочку интересных моментов.

1. В начале всё интересно и всё хочется попробовать
2. Потом наступает какая-то стабильность или плато, которое сложно пробить. В английском это плато на уровне Intermediate, которое пробивается просто дополнительной практикой и изучением
3. Потом было опять интересно уходить в ширь и немного вглубь. Тогда решил уйти в бек полностью, оставил фронт и мобилки другим ребятам.
4. Недавно было ощущение, что в целом весь бек — это мы перекладываем жсоны(или не жсоны) в базу и обратно.

После рефлексии нашел пару вариантов

1. Уйти в базы данных. Это как раз вглубь технологии и стать там экспертом.
2. Уйти в сетевые сервисы и пилить что-то на L3
3. Уйти совершенно в новую сферу, куда я в итоге и ушел — это блокчейн.

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

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

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

Еще, я сегодня женился и поменял фамилию. Так что, теперь на канале ребрендинг и я теперь Журавлёв Андрей Андреевич 😄

О чем кстати написать? Вхождение в раст кажется не таким уж и интересным, а про крипту и остальное не уверен что зайдет
Channel name was changed to «Андрей Журавлёв»
Спустя полгода на расте. Какие ощущения в целом.

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

Для меня самая большая фича раста это отсутствие nil pointer. Не нужно делать проверки если что-то не nil или None или что-то еще. Это делает код куда понятнее и управлять исполнением стало куда проще.

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

Так как раньше для меня было проще сходить в апиху через питон, потому что это быстрее, но спустя какое-то время мне надоели проверки типа if something is not None:. Переписав на раст получилось чуть больше кода, однако он стал куда более расширяемым.

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