underground dev
815 subscribers
35 photos
4 videos
37 links
Пишу бэк на шарпах
Хожу на собесы
Делюсь опытом и мотивацией
Рофлю над IT

Contact: @danny_v3
YT: https://youtube.com/@undergrounddev_v1
GH: https://github.com/dannythehumbleguy
Карта канала: https://telegra.ph/Karta-TG-kanala-Loggiruyu-razrabotku-10-01
Download Telegram
Ради эксперимента бахнул только что около 50 откликов на hh с 4+ лет опыта, с условиями удаленка и 300к, посмотрим какая будет конверсия в приглашение на первый созвон.

Из интересного🤔
• Много вакансий гибрид или офис.
• Так же довольно много вакансий для челов с нулем опыта или < 3 лет.
• В целом вакансий реально мало, я хотел откликнутся на 100, но их тупо нет😔
• Если в вакансии есть вилка, то в 90% - это копейки.

Результаты через 1-2 недели кину. Мой предикт - 2 приглашения 🙃
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍175🔥3😁2
underground dev
Ради эксперимента бахнул только что около 50 откликов на hh с 4+ лет опыта, с условиями удаленка и 300к, посмотрим какая будет конверсия в приглашение на первый созвон. Из интересного🤔 • Много вакансий гибрид или офис. • Так же довольно много вакансий для…
Все, подвожу итоги🤓
11 - в архиве
16 - отказов
17 - ожидание
2 компании написали, 1 собес

По самим цифрам могу сказать, что результат ожидаемый🚬 ощущается, что довольно мало компаний сейчас ищут людей, особенно на 300к+, к тому же лето. Мой предикт был почти правильным, подал бы я еще в ozon, тогда точно было бы два собеса). Подожду октября-ноября закину еще откликов, посмотрим, что будет.
Собес кстати был в Альфу, я уже на нем побывал. Делал код ревью почти на полтора часа, довольно прикольно, без топ 100 вопросов.

Ну и hh конечно помойка еще та, как будто там половина вакансий вообще не действующих, на 4-5 вакансий мне вообще сразу отказ прилетел, хотя откликался я в 12 часов ночи. Хотя главный фактор - это конечно куча "полезных" фич, по типу оценки знаний с помощью тестов(хахаха) или автоотклики и автоподнятие резюме, сами проблему создали, сами её решили, сами наградили себя медалькой🤡 Очевидно все это делается, чтобы скосить немного бабок с инвесторов, а то акции бьют все анти рекорды, оно и понятно почему.
Думаю, что через месяц, проведу еще эксперимент - пооткликаюсь на более нишевых площадках, в тг и посмотрю какая там будет конверсия.

PS: я там добавил карту канала в описание(понял, что теги фигня) и обновил пост-знакомство, можете посмотреть/перечитать🙈
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍163😁3🤯3🔥2
Как говорил в предыдущем посте, я побывал на собесе в Alfabank.
Это был нормальный собес на полтора часа с разбором кода, который был очень похож на задачу с озона, только объемней.
Забегая на перед, я его не прошел, но получил фидбэк. Выложу его по позже, так как там есть пара забавных моментов, а вы пока смотрите сам собес.
https://youtu.be/QcYXkWahr5g

Кстати, вы бы лучше реакции ставили так, как голосовали😏

ЗЫ: Я запорол немного качество видео, так что лучше смотрите с компа, соре
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍44🔥11
И так по поводу фидбэка c Альфы😏

Для начала хочу сказать, что мне его не дали и тупо заигнорили в личке, классика.
Но знаете... у меня был отпуск и я подумал почему бы не заставить поработать других пока я отдыхаю 🙂 хотя бы немного. Так как сам рекрутер не ответил, я подумал написать на hr почту, её я не нашел на сайте. Дальше пошел в LinkedIn поискать кого то начальника отдела или типа того, но не нашел этого рекрутера. В итоге пришлось писать в VK, на их HR аккаунт.
И вуаля, через полтора часа мне все же отвечают на мое сообщение в телеграмме 🥲 Сначала общим "Продолжили общаться с другим кандидатом", но после того, как я написал, что мне вообще собеседующий обещал фидбэк, скинули сам фидбэк.
Какой вывод с этого можно сделать? Если вы считаете, что нормально прошли собес, но вас игнорят с фидбэком, а он вам интересен - можно писать кому-то повыше и спрашивать "А игнор кандидатов - это часть вашего HR бренда?" только более формально. Так как большие компании обычно заботятся о бренде, вероятно они что-то да сделают.

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

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

Главный вопрос, который у меня возник "А с какого я вообще должен реализовывать именно Чистую архитектуру? Какие есть предпосылки к этому?"
То что я вижу в большинстве проектов под понятием "Чистая архитектура" - использование DI, локализация зависимости и оборачивание её в интерфейс, а так же раскидывания всего по проектам Api, BusinessLogic, Infrastracture и тп.
Но разве это плохо? Скорее нет, хотя меня иногда меня забавляет высокая озабоченность решением о, том что в какой проект засунуть, как будто если разместить все в одном, то что-то кардинально изменится, это просто удобство, важны лишь реальные зависимости между классами(не говоря о проектах с тестами, дистрибуции сборок и тп). НО зачем всему этому давать такое громкое название как "Читая архитектура" мне не понятно, если вместо этого можно говорить более конкретно.
Что я имею ввиду? Если вы используете инверсию зависимости, то так и говорите; если в используете rich объекты вместо анемичных, то так и говорите; если вы избавляетесь от сайд-эффектов в бизнес логике, то так и говорите. Все это намного более конкретные термины.
//----------------------------------------------------------------------------------------------------------------------
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍18🔥5🤡1
Обращаясь к оригиналу, а именного книге Роберта Мартина...🤓 Ну чего там только не написано, и про ООП, и про ФП, и про SOLID, но четкого определения нет. Чел просто вкратце написал, все что знал)
Можно посчитать, что главный принцип - это "Зависимости в исходном коде должны быть направлены внутрь, в сторону
высокоуровневых политик(ака бизнес логики)"
. Что это блин значит?

Если вы подумали, что вот же есть инверсия зависимостей, она то и решает эту проблему💡! Честно говоря, для меня это выглядит как копиум😣. Вот у меня обращения в БД, вот логи пишу, вот метрики собираю, я все это вижу, оно прям в бизнес логике! Конечно я могу подменить реализации, но я остаюсь зависим от них! К тому же часто ли вам приходилось подменять зависимость без изменения интерфейса(не считая юнит-тестирования)? Я понимаю, когда например делают какой-нибудь ICache, так как он может быть шариться между разными микросервисами, без него будет реально тяжело заменить реализацию. Но если у вас в небольшом микросервисе, есть репозиторий или сервис, зачем там интерфейс?🤨 У него вероятно будет не больше 20-ти вызовов. Его в любом случае будет легко заменить.

Есть конечно и "трушный" способ избавляться от зависимостей - это выделять детерминированную и идемпотентную логику, ака писать чистые функции(хаха, опять чистые😄). Насколько это практически применимо? Ставлю сотку, что почти не применимо 🙅‍♂️ . Вспоминаем про логгирование, метрики и тп; это менее производительно, так как данные нужно подтягивать все и заранее, а не постепенно и по ходу выполнения бизнес логики; некоторая логика тесно связано с транзакциями. Есть конечно мизерное кол-во логики на некоторых проектах бэка, которую можно так выделить , но это обычно не то, о чем говорят.

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

Не делайте все на автомате

Может я что-то реально упускаю в своих рассуждениях? Пишите в комментах, желательно с реальными примерами)
PS: меня позвали еще на один собес, так что мой предикт в 2 собеса на 100% оправдался😕
//----------------------------------------------------------------------------------------------------------------------
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍18🔥5🌚2
Короче был недавно на собесе на Senior разраба, были примерно такие вопросы:

Q: Как сделать так, чтобы только определенные потребители в группе Кафка обрабатывали сообщения?

(10 мин спустя)

Q: Расскажите про try/catch, как он работает? Что такое finally?

Вот так я себя чувствовал пока отвечал на второй вопрос:😡
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🌚1
А вы знали, что тернарки можно писать в свитч стиле? 😳
Но и из буханки белого можно сделать троллейбус, но зачем?

На первый вопрос у меня ответ все же есть. Если вы перепишите этот код на switch или даже if, то ef core не транслирует это в SQL, а жаль😔

Правда я так и не придумал как этот метод переделать так, чтобы я мог его переиспользовать для конвертации двух статусов в один для использования вне ef🤔

Короче паттерн матчинг, тернарный оператор - 0:1
Please open Telegram to view this post
VIEW IN TELEGRAM
Решил, спонтанно записать видос по деплою, думал минут на 20 будет, не получилось. Сел записывать еще вчера, а закончил минут 10 назад 👍 Короче целый интенсив получился. Но самое забавное, что где-то 20% из запланированного все же не сделал🙃
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍15🔥61
Давайте голосовалку!
✍️
Деплоил ли ты когда либо свое приложение с нуля?
Anonymous Poll
60%
Да
39%
Нет
2%
Нечего деплоить, не бэкендер, не фронт и тп.
underground dev
Давайте голосовалку!
✍️
Деплоил ли ты когда либо свое приложение с нуля?
Что ж, это шанс для 39% проголосовавших исправиться 😗 так на канале вышел новый видос по деплою:
https://youtu.be/hWtdhRt7ziY
ЗЫ: лайк не забудьте поставить

Ссылки из видоса🤩
Схема(diagrams.net): https://drive.google.com/file/d/14g294QTy6GgeFSoFd79rKbLq0zzqp6wF
Проект: https://github.com/dannythehumbleguy/easy-devops-example
Please open Telegram to view this post
VIEW IN TELEGRAM
119🔥23👍1
Вчера словил невероятнейший баг, следите за руками, дамы и господа.

Есть два сервиса, один grpc клиент A, другой сервис B.
Делал фичу, где нужно было добавить новый эндпоинт на А и вызвать из B.
После завершения кодинга, пришло время немного потестить локально, поднимаю два сервиса, думаю сейчас лайтово😎 за часик накидаю данных в бд и позапускаю свои фичи. Но вскоре вижу ошибку на клиенте:
Grpc.Core.RpcException: 'Status(StatusCode="Internal", Detail="Failed to deserialize response message.").


Думаю ну наверное proto файлы разошлись, скопировал полностью файл, ошибка сохраняется.
Пошел дебажить, вижу, что мой код на сервере действительно отрабатывает без ошибок и передает управление дальше по пайплайну обработки запроса.
Иду спрашивать GPT🤪, что происходит. Он посоветовал dotnet clean, сравнить версии пакетов, проверить proto, эндпоинты, фактически сгенерированные файлы самой Grpc либой, включить trace-логирование grpc. Все хорошо, но ошибка сохраняется.

Дальше он предложил отправить запрос напрямую через grpcurl aka исключить клиент из уравнения, совет хороший. Не считая того, что я где-то 40 минут потратил💀, чтобы запустить это из под powershell.

И тут я вижу:
Request metadata to send: (empty)
Error invoking method "persons.v1. PersonsGrpc/GetPartnerIdByBioId": grpc call for "persons.v1. PersonsGrpc.GetPartnerIdByBioId" failed: EOF


После этого становится кристально понятно, что ошибка на самом деле на сервере, хотя в логах ничего такого не было👍
На этом моменте GPT начал галлюцинировать, и как сумасшедший повторять одно и то же "проверь proto, проверь версии..." и так далее. Помощник был потерян 👨‍🔬
Думаю ну ладно, если мои новые методы не работают — подергаю старые, которые точно работают в проде. Иииииии... они сука тоже не работают, тут уже я начал шизеть🎧, так как этот лайтовый вечер уже постепенно превращался в 5 часов беспрерывного дебага.

Дальше думаю "хмм, когда-то я точно тестил этот сервер локально и он работал нормально", начинаю откатываться по коммитам и пробовать запускать старые версии, хотя идея кажется бредовой, ведь сейчас на проде все работает.
1 релиз назад все еще сломано, 2 релиза назад тоже сломано, и вот 3 релиза назад все работало локально, бинго.
Смотрю, что там вообще было такого добавлено, а там даже grpc никаким образом не трогали, WTF? 🤔
И единственное, что было сделано — это добавлено подробное логгирование всех HTTP запросов, которое включалось по флагу в переменных окружения, чтобы можно было отдебажить конкретный сервис, если там что-то произойдет. Его настройка выглядит так, сама фича дефолтная и от майков:
if (config.Logging.FullHttpLogging)
builder.Services.AddHttpLogging(logging =>
{
logging.LoggingFields = HttpLoggingFields.All;
logging.RequestBodyLogLimit = 4096;
logging.ResponseBodyLogLimit = 4096;
logging.RequestHeaders.Add(HeaderNames.Authorization);
});


При локальном же запуске используется статический конфиг, где эта настройка включена, так как локально полные логи могут быть удобны. Дальше я отключаю это логгирование в своей ветке с новой фичей, и тут происходит невероятное - все работает 😬
Please open Telegram to view this post
VIEW IN TELEGRAM
612
Казалось бы grpc и логгирование запросов от ASP.NET Core — не сильно связанные вещи, но это только кажется. Я до сих пор не понимаю, почему такой баг происходит, так как мы еще не проводили ресерч, просто решили забить на фичу логгирования, может даже я чего-то не так сконфигурировал, но это забавно🙅‍♂️

Какой же можно вывод сделать?

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

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

2) Откатывайтесь на версии назад и проверяйте корректность. Одна из причин, почему итеративность очень важна в разработке.

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


У вас часто происходит подобное веселье?🚬
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥12👍9
Мой коммент к видосу ниже:
Для меня всегда программирование было с вайбом андеграунда. Даже если ты живёшь в ПГТ на 1000 человек, тебе не свезло с родителями, в кармане только на дошик, но у тебя есть ноут с интернетом, то ты в игре. Нужно лишь научится и доказать, что ты умеешь кодить, и все.

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

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

PS: тезис про то, что диплом нельзя купить и выступление на конференции обязательно что-то значат - нереалистичны.

https://youtu.be/aQ3ltJ7wOC0?si=lNwt3O2B1lBK4nd8
6🔥11🤯52👍2
Попробовал Kiro IDE, кажется с фронтденерами все будет в порядке😔
Please open Telegram to view this post
VIEW IN TELEGRAM
😁26🤡4
Короче... если брать весь контент Антона, который существует, то самое лучшее, что у него есть - это стримы с разбором ошибок\ситуаций\искажений людей, с которыми он общается. Все остальное даже на половину не лучше этого. Таких стримов было под десяток и мысли иногда повторяются, но если вы не видели ни одного, то недавно был новый и это моя рекомендация персональная: https://www.youtube.com/live/jg2m7X39vqw?si=Y1apTTV8njPzZ4GW&t=4323

PS: идеи там ценны не зависимо от того на каком вы этапе.
👍104
А ты готов к будущему?
😁19🔥4🌚3
Дропнул разбор кода из собеса в Альфабанк, которое было несколько месяцев назад.
Прожмите там что нибудь😎

Ссылка на видео из поиска
Код из видео
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥24
Всаааап 🎩
Мы с другом недавно начали делать приложуху, идея которой - делать заметку на ходу, кидая голосовые в тг. Чтобы не было такого, что “Лень записывать, отложу на потом…”, а позже “Так а что я хотел записать 🤔 ?”

Короче мы накидали первый тестовый вариант, где можно сохранять заметки в Notion или в Mini apps, если первого у вас нет. Может позже еще интеграцию с чем-то сделаем, ты кстати что сам используешь?
Если хочешь начать сохранять свои идеи голосом, то ссылка на бота ниже😬

Бот: @YourVoiceNotesBot
Предложения, ошибки: @voicenotes_support
Please open Telegram to view this post
VIEW IN TELEGRAM
210👍7🔥4
Вот сколько я провел на созвонах за этот год.
Давайте только без зависти🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯13🔥9👍4🌚3
Путь к валютной удаленке 💲💲💲 [часть 2]

Так выглядит уничтожение моих планов почилить в новогодние праздники.

Побывал не так давно на первом скрининге на английском. Все прошло хреново, в какой-то момент я секунд на 15 подвис, самое ироничное, что на вопросе "Как вы будете объяснять сложные технические вещи бизнесу?" 🙃
Благо хоть чел на интервьере говорил супер четко и просто, я как будто понял 100% его слов.
На удивление через несколько дней пришло приглашение на тех. секцию, молюсь, чтобы не отменили)

Короче я пошел готовиться, всех с наступающим🎄🎄🎄
PS: если у кого-то есть опыт открытия ИП в Армении, напишите в лс плиз.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥37👍8🌚2