Павел Сорокин | Java
СтатистикаО том как стать и быть Java разработчиком Обучение по Java до оффера: https://sorokin.school По рекламе и сотрудничеству: @pave1ss или sorokincompany@rambler.ru
- Последний пост
- 08:14
- Последнее чтение
- 09:30
- Постов за неделю
- 8
- Всего постов
- 27
- Тип
- открытый
- Язык
- русский
- Категория
- Образование
- В каталоге с
- 12 авг.
- 1/24сутки в ленте
- 2 718
- 1/48двое суток
- 3 114
- 1/72трое суток
- 3 359
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
Всем доброе утро, у кого сколько лимитов осталось?
без подписи
без подписи
без подписи
без подписи
Почти любой паттерн в микросервисах можно перевести на человеческий язык как: «Когда-то кто-то очень жестко облажался в проде» 😁 Чем больше изучаешь System Design, тем сильнее понимаешь, что большинство паттернов - это сборник чужих ошибок, за которые кто-то уже заплатил бессонными ночами, сорванными релизами и очень неприятными созвонами 😐 🟣 Возьмем Circuit Breaker, сначала кажется, что это какая-то сложная архитектурная штука. На практике идея максимально простая: если соседний сервис начал умирать, не надо его добивать своими запросами Потому что, как обычно происходит: один сервис начал отвечать по 5 секунд вместо 100 мс, остальные продолжают в него ломиться, забивают свои пулы потоков, начинают тормозить сами, и через пару минут уже лежит половина системы Circuit Breaker буквально говорит: «Брат, ему плохо. Отстань от него на пару минут» И это спасает прод гораздо чаще, чем кажется 🟣Или Saga - очень популярная тема на собеседованиях. Пока работаешь с монолитом, транзакции выглядят как magic, если что-то пошло не так - откатились и всё ок, но потом появились микросервисы: деньги списывает один сервис, заказ создает второй, товар резервирует третий И внезапно оказывается, что общего rollback больше не существует ☹️ Если деньги уже списались, а резерв товара упал, кто будет все откатывать назад? Спойлер: ты Поэтому Saga работает по другому принципу: она не откатывает действия назад, она запускает компенсирующие действия Списали деньги? Значит нужно сделать возврат Создали заказ? Нужно отменить заказ Зарезервировали товар? Значит нужно снять резерв То есть вместо одного большого rollback появляется цепочка бизнесовых отмен. И именно поэтому Saga одна из самых популярных тем в микросервисах. Потому что рано или поздно почти каждый проект сталкивается с вопросом: "А что делать, если половина процесса уже выполнилась, а вторая половина сломалась?" 🟣 Еще один паттерн, который очень любят интервьюеры - CQRS (Command Query Responsibility Segregation) На деле идея довольно бытовая, очень часто системе нужны совершенно разные подходы для чтения и записи данных. Например, заказ создается один раз, а читается потом тысячу раз. И в какой-то момент становится выгоднее иметь отдельную модель для записи и отдельную для чтения, чем пытаться заставить одну схему хорошо делать всё сразу Но когда впервые встречаешь эту аббревиатуру, кажется, что это какой-то секретный раздел математики 🟣 Дальше идет шардирование, с ним обычно начинают разбираться, когда база уже начинает становиться узким местом системы Выглядит всё просто: если одна база не справляется, давайте разделим данные между несколькими Но вместе с нагрузкой распределяются и сами данные. Теперь нужно думать, как находить нужный шард, что делать с запросами не по shard key и как избежать ситуации, когда один шард плавится под нагрузкой, а остальные почти ничего не делают 🥺 Поэтому шардирование - это не волшебная кнопка для ускорения базы, это способ решить одну большую проблему с масштабированием ценой нескольких новых проблем, с которыми потом придется жить. Подробнее про шардирование рассказывал в этом посте 👀 🟣Ну и конечно Outbox Pattern, рано или поздно почти каждый проект приходит к связке БД + Kafka. И тут выясняется, что PostgreSQL вообще не знает, что такое Kafka, а Kafka не знает, что происходит внутри транзакции PostgreSQL 🙄 И если приложение упадет между сохранением данных и отправкой события, можно легко получить рассинхрон между сервисами Собственно, Outbox появился ровно потому, что кто-то однажды потерял достаточно много событий и понял, что так жить больше нельзя На собесах почти никогда не спрашивают сами паттерны, обычно дают какую-нибудь неприятную ситуацию: упал сервис, потерялось событие, одна база перестала вывозить нагрузку и так далее И если ты понимаешь, почему эта проблема вообще появилась, нужный паттерн обычно вспоминается сам, поэтому паттерны полезно учить не как список определений, а как каталог чужих катастроф P.S.Чекни карточки, там каждый паттерн расписан, а если пост зашел - накидай 🔥, сделаю вторую часть
Wait, это что, реально полезная и интересная конференция? Такие у меня были первые мысли, когда мне написали ребята из Т-Банка и позвали на JVM Day Итак, это сходка для бэкендеров, которая пройдёт 29 августа в Москве. Контингент соответствующий: Java, Scala- и Kotlin-разработчики, архитекторы и тимлиды По темам внутри: • Актуальные тренды JVM - Loom, конкурентность, автоматизацию миграций и связанные ограничения • Реальные кейсы внедрения с разбором ошибок, которые мешают довести прототип до production‑уровня • Подходы к конкурентности в Java после Loom • Как новые возможности JVM влияют на архитектуру бэкенд‑систем А после полезной части вечером ребята делают афтерпати во дворе штаб-квартиры Т-Банка с играми, DJ сетом и опенмайком с историями фейлов Зарегистрироваться можно вот по этой ссылке Видно, что ребята хотят сделать круто и интересно, зайдите на сайт и сами посмотрите темы докладов. Мой любимый - "JDK, собранный из 16 млн строк открытого кода. Иллюзия безопасности"
Все выходные я фоново думал о том, как правильно донести мою мысль Начнем вот с чего - мой курс по Java Backend нацелен на 2 категории людей: 😱 люди с базовым знанием Java, которые хотят освоить актуальный стек за 3-4 месяца, а не за год, и далее вкатиться ⌨️ действующие разработчики на неактуальном стеке, с проседающими относительно запросов рынка хардами Выгоды курса тоже понятные: 1⃣Систематизированная информация, разложенная по полочкам 2⃣ Ментор, который ответит на вопросы и даст обратную связь 3⃣ Применение скиллов на практике как в проде на реальном проекте Но если всё это собрать в одну мысль, то на самом деле вы покупаете не доступ к урокам и даже не сами знания У вас появляется возможность не тратить месяцы на то, чтобы создать себе план обучения по релевантным темам. Не надо полгода прыгать между видосами и статьями, пытаясь понять, что актуально, а что нет И тогда вся суть сводится к двум всем известным истинам: 📌 Самостоятельное обучение = сотни часов хаотичного поиска инфы без уверенности её правильности и без качественной обратной связи 📌 Курс = за тебя придуманный рабочий путь вката/роста по хардам и ЗП Так вот. Вернемся к тому, что я пытаюсь донести: Учиться надо тогда, когда другие бездействуют - иначе вы рискуете стать хомяком Вот представим, что рынок вакансий полетит вверх через 3 месяца И у людей появится мотивация что-то делать, ведь отговорка «ну я пока подожду, че толку хардворкать» перестанет работать 🫣 Но есть один нюанс - те, кто плевал на состояние рынка и просто фигачил, через 3 месяца уже залутают все вакансии Это ровно то же самое, как закупать биток на хаях, вот я к чему И вывод из этого простой - вам должно быть вообще плевать, какая ситуация на рынке, если вы хотите получить результат Поэтому курс по Java Backend покупаем, потом курс по многопоточке докупаем, и уже через несколько месяцев оффером фиксируем прибыль 📞 Всю информацию по курсу расскажет Артем - менеджер школы 😎 Пишите, не стесняйтесь 😘
«Рынок мёртв. Даниэлю просто повезло. Курсы работу не дают» 🤔 Примерно такое было вчера в комментах под постом. Забавно, что я согласен буквально с каждым тезисом: • Да, курс ≠ работа. Курс = систематизация знаний и помощь с поиском работы • Да, сейчас искать работу сильно сложнее, чем несколько лет назад. Ну и че теперь, не искать? • Да, история одного Даниэля не доказывает, что каждый завтра отправит 10 откликов и получит оффер в Тиньк НО. Я хочу, чтобы вы заметили подмену понятий с «рынок сложный» на «от меня почти ничего не зависит» Вот с этим я категорически не согласен. Ты НЕ можешь контролировать: • количество вакансий и кандидатов на рынке • бюджеты компании • какая карта таро выпадет рекрутеру в ответ на твоё резюме Но ты МОЖЕШЬ контролировать: • насколько ты хорош по хардам • какие технологии реально трогал руками • умеешь ли применять знания в реальном проекте • количество своих попыток • скилл прохождения собесов И именно об этом была история Даниэля. А не о том, что существует секретный курс, после которого рынок внезапно начинает тебя хантить Курс нужен для того, чтобы у тебя были актуальные и нужные рынку знания. А так же чтобы ты учился проще, имея системность этих знаний, практические домашки и ментора Всё это НЕ гарантирует тебе трудоустройства/рост ЗП Курс кратно ускоряет и упрощает путь до оффера, но пройти его ты должен сам Особенно я выпал с тезиса про ошибку выжившего. Называть везением то, что человек херачил как не в себя, впитывал знания и не сдавался после отказов, это ну... странно, как минимум P.S. насчёт «опять прогрев»… Согласен, просто возмутительно, что человек смеет предлагать нуждающимся купить свой сильный продукт в своём канале. Ни стыда, ни совести, ни ссылки на оплату 😡
Иногда кажется, что обсуждений про то, как сложно джунам с работой, уже больше, чем самих попыток её найти 🙃 Каждый раз, когда пишу что-то про рынок, обязательно находятся те, кто говорит, что сейчас без коммерческого опыта уже не пробиться, джунам конец, вакансий нет. И отчасти они правы 🤷♂️🤷♂️🤷♂️ Сложнее? Да Дольше? Да Придется получать отказы? Естессно, да! Возможно, многие безоговорочно в это верят, потому что от этой мысли становится легче. Если рынок виноват, то можно ничего не менять и просто подождать, пока он «оживет» Но посмотрите на Даниэля 😎, человек собрал коллекцию отказов, потратил кучу времени на тестовые, ковырялся в технологиях, о которых до этого даже не слышал, но ни разу не сказал: «Пожалуй, пока еще полгодика поучу теорию» Поэтому, если сейчас сидишь и думаешь: «Вот еще немного подготовлюсь, а потом начну откликаться», уверяю, через месяц будешь думать то же самое Лучше получить 5 отказов и понять, что реально нужно подтянуть, чем полгода пытаться подготовиться к собесу, на который так и не дойдешь ✨ Поэтому только для тех, кто реально хочет разорвать этот рынок, здесь оставлю ссылку на менеджера Артема, он расскажет все подробности о новом потоке курса «Java Backend, как в BigTech» От отказов он тебя не спасет (они будут, как ни крути), но ты будешь иметь чёткую систему знаний, опыт работы с необходимыми технологиями, понимание того, о чем спрашивают на собесах и самое главное - ПРОЕКТ, где все знания будут собраны воедино, и его реально не стрёмно показать 😆
Как прирасти по ЗП в 1.5 раза за 2 дня?🤔 Чтобы ответить на этот вопрос надо откатиться на 1 июля - именно тогда Даниэль рассказал мне свою историю Я тогда знатно офигел, порадовался за него очень и понял насколько у меня самого было искаженное восприятие рынка Мол, пробиться жесть как сложно и всё такое. Я никогда не смотрел на это как на приятное испытание, скорее как на серию квестов, и что на самом деле всё более чем возможно и приносит жесть какие плоды, если усилий приложить «Когда оффер от Иннотеха уже лежал на почте, меня позвали на собеседование в Т-Банк И самое смешное, я пришел абсолютно расслабленным. Потому что работа у меня уже была» Он не стал идти по стандартной схеме, а решил за минимум времени показать максимум своих скиллов: вместо IDE открыл блокнот и написал им решение задачи через Stream API. Подключил свои софтскиллы, пообщался с тимлидами про архитектуру, ИИ-агентов и… … в итоге перевернул всё так, что это он их выбирает, а не они его 😎 «Ребят, вы мне очень понравились, но у меня на руках оффер от Иннотеха, дедлайн ответа - послезавтра. Решайте» Такое бывает редко, но компания ускорилась нереально: за пару часов они прогнали его через статус финалиста и выкатили встречный оффер в 1,5 раза больше предыдущего, выдали топовый MacBook, оплату питания в офисе и гибрид в крутом хабе T-Space на Белорусской 😎 « Сейчас уже вторую неделю работаю в Т-Банке. Команда супер (кстати, мой бадди из старшего разраба резко стал моим начальником, так что политический расклад идеальный) Задач море, инфраструктура огромная (GitLab, 100+ репозиториев, свои внутренние нейронки и кубы) - ну рил, там ДОФИГАААААА ИНФЫЫЫЫЫ, я впитываю как губка и заваливаю абсолютно всех вопросами» Я рассказал вам эту историю по 2 причинам Первая простая - чтоб у вас мотивация поднялась и вы увидели живой пример как люди здесь и сейчас залетают в бигтехи Да, были отказы, было ощущение что вникуда тратишь время, но на самом деле ВЕСЬ путь оказался полезным для результата и куча чеховских ружей выстрелила Вторая причина - прогреть к курсу показать, что связка актуальной системы знаний + хардворка приносит результаты. Можно бесконечно жаловаться на рынок, а можно запотеть и всего добиться 🚶♂️ Накидайте максимум 🔥 Даниэлю, но учтите - каждый, кто поставит огонёк подписывается сам тоже пойти фигачить для результата 😇
Таааак, на чём мы там остановились? 🤔 Давайте мы все дружно сделаем вид, что из-за дел в real life я не задолжал вам историю, и вы не писали в личку "Ну чё там дальше-то было? Я вкатится хочу давай рассказывай" Остановились мы на том, что мой студент Даниэль НУ ОЧЕНЬ хотел вкатиться, но провалил квест с отказами и тестовым в ВК с кривейшей документацией 🫣 Казалось бы, максимально болезненный отказ для Даниэля: 12 часов на тестовое, никакой обратки и очередное «большой поток кандитатов». Но именно это в итоге оказалось самым полезным, потому что дальше... «А потом я увидел невзрачную афишу стажировки от Иннотеха (Т1). Откликнулся. На техническом собесе меня начали жестко гонять по Spring Core и базам данных. (Спасибо, Паш, за твой курс) Спрашивали про разницу аннотаций, подкапотную работу @Transactional, как решать проблему N+1 и еще кучу всего. За счет того, что в обучении был проект, знания не лежали отдельными кусками, а сложились в цельную картину. Поэтому отвечал вообще спокойно» 😎 Получается, не зря на сайте пишу: «Программа построена под актуальные запросы рынка», ахваха «Благодаря твоему модулю по Core и тому проекту, который я писал в конце, у меня в голове была четкая структура. Я отвечал уверенно, а когда спросили, как оптимизировать долгий пересчет баланса, я выдал архитектурное решение (через триггеры БД, а не костыли в Java)» ЭТО МООООЙ СЫЫЫЫН, ЭТО МООООЙ МАЛЬЧИИИК. Кхм, о чем это я… ах да, чеховское ружьё про VK Tech из прошлого поста «Бонусом я рассказал им историю, как декомпилировал библиотеку для VK - финт ушами залетел на ура :) Разумеется, я накидал им кучу других пет-проектов: работа с S3, кафкой, твой проект в конце на чистом спринге, хакатон от ВТБ. А иннотех - это же как раз их главный поставщик!» Вот к вопросу о том, стоит ли делать пет-проекты (только не типичные круды) - как минимум стоит, чтоб самому всё потрогать, как максимум реально пригодится И, наконец, послу кучи отказов идёт череда офферов: сначала один на +- 100 000 руб (Gross), гибрид, Москва-Сити, Java 21, но и это ещё не всё. У некоторых офферов есть свойство увеличиваться в 1.5 раза за несколько дней (при определенных обстоятельствах кнешно) Что? В 1.5 раза больше? Человеку без опыта? Да ещё и за несколько дней? Да-да, и такие чудеса бывают, завтра расскажу, как так получилось А пока интересно почитать, чтобы вы вообще делали в его ситуации? Психанули и бросили всё или продолжали бы дальше?
А вы работали с технологией Nasham Purgoev? 🤷♂️🤷♂️🤷♂️ Этот парень со скрина точно работал)) Хитрить, конечно, на собесах можно, и шарить во всех библиотеках вы не обязаны, но не до такой же степени)) P.s помню, помню, что должен продолжение про Даниэля, скоро все будет 👍
Отказ, после которого психанул бы любой 🤢 Вчера я уже рассказывал историю Даниэля и о том, как он пытался вкатиться в Яндекс, МТС и СБЕР, на очереди был VK Tech Всё было как обычно до момента, пока не началось тестовое 😱 « Нужно было написать gRPC-сервис, который переваривает 5 миллионов записей в Tarantool 1.5.0. Думаю: ну ладно, сейчас почитаю документацию... А документация оказалась не то, что устаревшей, она просто была НЕПРАВИЛЬНОЙ Я просидел часов 12. В какой-то момент понял, что другого выхода нет, и полез декомпилировать их проприетарную библиотеку прямо в IDEA, чтобы разобраться, как вообще работают интерфейсы. Потом прикрутил батчинг, чтобы все это не падало с OutOfMemory, даже на Lua пришлось немного писать. Нейронки, конечно, тоже подключал 😄» Ты уже, наверное, думаешь, что всё, конец, оффер у героя получен? Ноооо нет - отказ. Почему? Внятную причину никто не сказал, стандартное «большой поток кандидатов» 🤷♂️🤷♂️🤷♂️ Кажется, что затея уже дурацкая и ничего хорошего не принесет: потратить кучу времени, ни оффера, ни обратки на тестовое, ни тем более мотивации продолжать Но Даниэль почему-то посмотрел на это совсем иначе: «Я впервые поработал с in-memory базой данных. Разобрался с Tarantool, поковырялся в gRPC, полез в чужие библиотеки, чтобы понять, как они устроены. Короче, получил опыт, который сам вряд ли бы стал изучать просто «на всякий случай» Поэтому делаем финт ушами: на последующих собесах говорил, что я на рассмотрении у Яндекса и есть опыт работы с БД в памяти, причем РФ-версией. Если есть проблема - решаю на месте и декомпилирую эти библы» И в последней его фразе - чисто чеховское ружьё, которое в скором будущем в рамках истории ОЧЕНЬ сильно стрельнет и даст оффер. Где и как стрельнет? Об этом расскажу завтра:) Старательно держу интригу 😑
Представьте, что вам N лет, у вас 0 коммерческого опыта, но бешшшшшенное желание вкатиться ⌨️ Вот такое же и было у моего ученика - Даниэля. И я настаиваю на том, чтобы вы послушали его историю, потому что это ну просто пиздец. Далее с его слов: «Ну что же, я уже благодаря твоей статье, где ты указывал на ошибки начинающих (про бесконечное обучение и страх выхода на работу), начал не учить что-то новое, а пробовать попасть со своими текущими скиллами. Но всё началось с полной жести. В апреле-мае я словил серию жестких отказов. МТС, Сбер и еще пара бигтехов меня просто проигнорили или отказали из-за обучения в вузе» На этом месте уже многие бы решили, что пока рано, и вернулись смотреть очередной курс, но не наш герой 😎 Следующим был Яндекс и его Летняя школа: «Прошел контест, вышел на лайвкодинг, оптимизировал алгоритм по памяти, но на стрессе ляпнул, что при подготовке юзал нейронки. Итог - мимо Но благодаря этому провалу я понял, что нормально названия некоторых методов не знаю и даже выявил косяки в знаниях базы - а меж тем в сольных проектах я уже на буте сидел. кхмммм....» Следующим шагом был VK Tech, и я, когда услышал, ЧТО они там ему дали и КАК он из этого выкрутился, то прифигел плотно 😱 Но самое цепляющее и вызывающее восхищение в этой истории, это то, что Даниэль за все время отказов ни разу не откатился обратно в режим «сейчас еще полгодика, поучу теорию» 😆 Наоборот - каждое собеседование превращалось в список того, что стоит попробовать на практике. И в итоге он набрал куда больше необходимых рынку скиллов, чем если бы просто продолжал смотреть курсы и решать абстрактные задачи Писать полотно сразу не буду, все равно половина забьет и не дочитает, поэтому расскажу про VK уже завтра, а ты накидай 🔥, если история заинтересовала
без подписи
без подписи
без подписи
без подписи
Мы относимся к отдыху как к ремонту: много поработал, устал, разрядился - значит, можно несколько дней ничего не делать, чтобы снова вернуться в рабочее состояние 😎 Но после поездки на Кавказ я подумал, что у отдыха есть другая, менее очевидная сторона На 8 дней мы уехали в небольшое ущелье в Северной Осетии, сейчас в трех местных поселениях живет около 200 человек, хотя раньше их было больше 3000 Почти каждый день мы куда-то ходили: в горы, к леднику, по ущельям, сплавлялись по горной реке, ходили в баню и на термальные источники. Слушали рассказы местных и гида о том, как здесь жили сотни лет назад, во что верили и как был устроен их быт Формально это не очень похоже на отдых. Каждый день расписан, иногда по десять часов проводишь на ногах, но именно там я действительно переключился Когда надолго вырываешься из своей рутины, начинаешь замечать, что твой привычный способ жить - только один из возможных. Другие люди по-другому устраивают быт, по-другому относятся к работе, семье, времени и собственным проблемам Какие-то проблемы, которые дома казались сложными и безвыходными, внезапно выглядят вполне решаемыми. Появляются новые мысли и варианты И так получается, что отдых нужен не только для того, чтобы восстановиться, иногда его главная польза в том, чтобы ненадолго выйти за рамки своей жизни и увидеть, что мир устроен гораздо шире 👀 Так что обязательно путешествуйте, смотрите, как живут другие, пробуйте разные места и форматы отдыха Иногда лучший способ разобраться со своей жизнью - на время оказаться совсем в другой 😉