en
Feedback
Ayub Begimkulov - уроки по JS

Ayub Begimkulov - уроки по JS

Open in Telegram

По вопросам и деловым предложениям писать на @ayub_begimkulov

Show more
3 138
Subscribers
No data24 hours
No data7 days
No data30 days
Posts Archive
Последние полгода часто слышу, что люди, которые раньше без проблем находили работу — не могут даже на собесы сходить. Часть проблемы конечно же заключается в том, что экономика сейчас далеко не в той ситуации, как это было пару лет назад. И фирмы соответственно тоже стали более избирательны к сотрудникам. Но такую проблему вижу даже у очень опытных разработчиков, которых всегда не хватает. Чаще всего, когда начинаешь спрашивать у человека детали — то всегда слышу примерно одно и то же: “Раньше на хх откроешь резюме, сразу пишет куча фирм, а сейчас сам на все откликаюсь и везде отказы”. Собственно, если вкратце — то никто сейчас не может чисто на HH работу найти. По крайней мере никто из моего круга общения. Обычно все пару приглашений от туда получают, да и то в странные места) Я сам тоже в ноябре проходил собесы, хотел стариной встряхнуть + разведать, что спрашивают на архитектурных собесах. И ХХ мне помог только на один собес попасть. Хотя у меня 5+ лет опыта и Яндекс есть в резюме) Да и в целом описано там все не плохо — достижения по каждой работе прописаны с показателями. Если честно, я с рекрутерами не общался (если кто есть — буду рад услышать ваше мнение), но мне кажется, что проблема в фильтрах, которых раньше не было (там даже на вакансиях процент метча показывается). Мне много больших компаний меньше, чем за 1 час отказывали, хотя я знаю, что туда на собес зовут людей с опытом намного меньше. Да и не кажется, что там мониторят 24/7 все отклики. Очевидный вопрос тут возникает — а что же делать в такой ситуации? Один из вариантов откликаться на сайте компании. Однако я заметил, что многие фирмы будто бы от туда вообще не смотрят отклики. Но попробовать не помешает) Второй вариант, как раз самый эффективный — это смотреть вакансии на ХХ, хабр или других сайтах, но потом не откликаться там, а писать на прямую рекрутерам в этой фирме. Либо по рефералке заходить, если есть такая возможность. Тут главное полотно текста не писать, коротко и ясно высказаться. Я что-то такое писал:
Добрый день! Меня Айюб зовут. 

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

Если она еще актуальна — буду рад обсудить детали. 

[резюме]
В плане того, как найти контакты рекрутеров — тут тоже все не так сложно. Либо через друзей/знакомых узнать, которые когда-то проходили собес в нужную вам фирму. Либо на linkedin ищете профили рекрутеров в компании и там часто бывает телеграмм приложен в описании. Если нет телеграмма — то можно прямо в linkedin написать, но тогда профиль должен быть нормально заполнен. А так, друзья еще говорят, что Хабр и getmatch сейчас более эффективные в плане поиска. Я сам просто всегда ленился там зарегистрироваться, поэтому ничего посоветовать не могу. Но только на HH сейчас искать точно не вариант.

Итоги прошлого года Как и обещал, выкладываю более детальные итоги прошлого года, которые мы обсуждали на последнем лайве. Для начала немного статистики за прошедший год: - 49 новых видео, 9 трансляций, 526 598 просмотров, более 6900 новых подписчиков и более 60 тысяч просмотренных часов на YouTube. - Более 2000 тысяч новых подписчиков в телеграмме и более 300 постов (пока не разобрался как адекватно смотреть аналитику, поэтому цифры не совсем точные). - ~35 собесов и ~180 сессий менторинга (статистика из календаря, поэтому цифры могут быть не совсем точные). - 10 розыгрышей и 27 победителей. Из которых 17 выбрали консультацию, 10 — деньги (некоторые кстати после выбора консультации так и не нашли время, чтобы созвониться. Если что — предложение еще актуально). Да и в целом год был очень плотным. Сначала ушел из Яндекса в зарубежный стартап, потом попал там под сокращения, начал заниматься фулл тайм контентом (2 видоса в неделю + 1 пост в день) + менторством и потом “пропал” на 3 месяца (об этом расскажу чуть ниже). Помимо всего этого, довелось пообщаться с кучей разработчиков разного уровня и понять их проблемы, изучить много тем в процессе подготовки видосов и постов, освежить и систематизировать свои знания. Когда начинаю вспоминать январь прошлого года, чувство такое, будто это было года 2-3 назад. Да и себя и свои действия в тот момент вспоминаю с большим “кринжом”, что для меня тоже не малый показатель прогресса). Всем большое спасибо за поддержку, за то, что смотрите, читаете, комментируете и делитесь с друзьями! Надеюсь в этом году результаты будут как минимум не хуже). Что делал последние 3 месяца? Во-первых, ничего серьезного со мной не случилось, канал тоже не забросил. Просто была тонна дел, которые я откладывал или не успевал сделать из-за плотного графика. Вот примерный список того, что я делал: - Работал над затянувшимся фриланс проектом, который я недооценил. Планируем в этом месяце уже завершать все. - Добрал людей на менторинг и отлаживал схему обучения (Вот тут прям очень много чего нового для себя узнал, буду делиться в будущих постах/видео). - Водил нескольких из учеников по собесам, помогал с общением, реферами, разборами ошибок. Один из них смог устроиться в Яндекс! - Налаживал свой режим, снова начал регулярно тренироваться. - Отдыхал от постоянных мыслей о том, какой написать пост и на какую тему записать видео). Ну и конечно же была куча личных дел, которые вряд ли будут кому-то интересны. Планы на 2024 год Так как большинство подвешенных дел уже решилось, планирую потихоньку входить в ритм и начинать снимать контент и писать посты. Пока никаких обещаний по частоте давать не буду, так как хочется всё делать в спокойном режиме и посмотреть, какой темп будет комфортен. В целом на год планов очень много, хочу начать немного по другому подходить к контенту, поэкспериментировать с разными форматами и темами. Но это уже другая тема, думаю расскажу детальнее в отдельном посте или видео.

Друзья, всем привет! Давно уже не было новостей от меня, а тут еще и год заканчивается). Давайте в 14:00 по Москве проведем небольшой лайв в телеграмм. Подведем итоги года. Также расскажу, где был и чем занимался последние 3 месяца, и какие планы по контенту на след год. Ну и на вопросы ваши постараюсь ответить, если хватит времени. Все кто может — заходите, буду рад видеть!

Под прошлым постом один из подписчиков не мог понять, почему у него происходит TS ошибка при присвоение свойства в объект, значения которого содержать разные типы данных (ссылка на playground с примером ниже). Расписал подробно решение и понял, что может и другим будет полезно (так как сам частенько сталкиваюсь с подобными ошибками). Да и по опыту помню, что разборы различных ошибок на stackoverflow/github были очень полезны для понимания того, как TS проверяет код. https://tsplay.dev/WPM9Lw

После долгих размышлений в последние несколько дней, понял для себя, что история с двумя видео и ежедневными постами создаёт слишком большую ответственность, что ведет к неоправданному количеству стресса. До той степени, что смысл во всей этой затее теряется. Изначально была идея, чтобы ограничения давали мотивацию создавать и не прокрастинировать. Но по итогу это начало выливаться в то, что я не мог делать некоторые более сложные видео, так как просто не уложусь в график. Посты иногда приходилось писать на коленке, не успев нормально все перепроверить. Да и некоторые из них писались просто, чтобы что-то написать. А изначально идея была делиться каким-то находками/инсайтами из своего опыта. В итоге смысл такого графика теряется. Идёт просто погоня за цифрами, до которых никому особо и нет дела (кроме меня разве что). Не сказать, что жалею о том, что поставил себе такой челлендж. Дедлайны научили совсем по другому подходить к сбору идей и проработке контента. Но на данный момент кажется, что они несут больше вреда, нежели пользы. Поэтому хочу (как минимум на пока) отменить ежедневные посты, 2 видео в неделю и, соответственно, розыгрыши. Забрасывать канал не собираюсь, контент будет выходить по мере возможности и свободного времени. Интересно посмотреть, что из этого получится.

Для тех кто не видел, вышла бета TS версии 5.3. Из основных изменений: - Поддержка import attributes для обычных и type импортов. - Улучшенное «сужение». Больше всего порадовал кейс со switch(true). - Более точные проверки вызова методов через super. https://devblogs.microsoft.com/typescript/announcing-typescript-5-3-beta/

Заходите на лайв, буду рад пообщаться и ответить на ваши вопросы.

Сейчас нахожусь в небольшом разъезде, поэтому давайте вместо поста проведем тут лайв общение.

Обычно все разработчики любят фокусироваться на хард скиллах. Хотя часто бывает, что софты не меньше влияют на ваш карьерный рост. Думаю все видели уже разные статьи, где нанимающие менеджеры говорят о том, что процесс найма часто субъективен. Но это мы уже в другую сторону пошли… Хотел поделиться двумя самыми большими вещами, которые помогли мне в развитии навыков коммуникации (до сих пор есть куда расти, но раньше я и пары предложений сказать не мог, не добавив несколько «аааа» и «типа»). 1) Запись и переслушивние своей речи. Да, занятие по началу не из приятных (особенно если не привыкли слушать свой голос). Но самая большая польза заключается в том, что вы начинаете замечать проблемы в речи, которые у вас сейчас есть. И чем больше вы будете обращать внимание на эти проблемы — тем больше вы будете стараться их исправить. Я раньше просто включал камеру и по 10 минут говорил о рандомных темах. Потом (с трудом) пересматривал все это. Если совсем сложно слушать свой голос — то может помочь взять более хороший микрофон. Встроенные обычно очень «утоньшают» ваш голос, что увеличивает негативный эффект. С другой стороны, это на 100% от проблемы не избавит — так что я бы не стал только по этой причине что-то покупать. 2) Писать, писать, писать. Эта часть как раз больше помогает с формулировкой мыслей. Чем больше пишите (на какую тему не важно), тем лучше учитесь структурировать свои мысли. Что конечно же переходит в более чистую и понятную речь. Тут наверное основная сложность заключается в том, что процесс обдуманного написания занимает много времени. Да и процесс сам обычно скучный. Зато результат будет намного лучше, чем от советов по типу «читайте больше книг» (я от чтения книг вообще прогресса в речи не замечал). Оба совета, как видите, не сложные. Самое главное начать их применять.

Пару дней назад вышел документальный фильм про TypeScript (кажется такой формат набирает обороты). Нашел сегодня время посмотреть. Конечно снято не так круто, как про React от Honeypot. Но все равно очень понравилось. Особенно было интересно взглянуть на картину развития большого проекта внутри Microsoft. Какая была мотивация, продвижение в опен сорс, колаборации с другими проектами и тд. Если есть свободное время — советую к просмотру. https://youtu.be/U6s2pdxebSo?si=toaAlAJlf8sC2eom

Под одним из прошлых постов про сборку многие отписали, что используют Next.js без SSR. Решил изучить этот вопрос и оказалось реально можно на выходе получить полноценную статику. Правда роутинг нужно будет делать свой. File based routing с таким сетапом не будет работать. Для новых проектов чем create-react-app думаю получше будет. Особенно в долгосрочной перспективе. Ну и также может быть полезно в тех случаях, когда кто-то давно создал проект с SSR, хотя он вообще был там не нужен. А на переезд нет времени. https://dev.to/apkoponen/how-to-disable-server-side-rendering-ssr-in-next-js-1563

Хотел узнать, а использовал ли кто-то в своих проектах concurrent фичи — useDeferedValue, useTransition (кроме использования с server components)? И есть ли вообще какие-то библиотеки, которые их используют? Я вот ищу и что-то не могу чего найти. Но наверное плохо искал… Уже который раз ловлю себя на мысли (да думаю и не только я) о том, что сильно то ничего и не поменялось с добавлением concurrent mode для чисто клиентских приложений. Хотя… фичи с Suspence иногда могут быть полезными. Но на практике выходит, что улучшенный батичнг, useInsertinoEffect и useSyncExternalStore будто бы больше пользы принесли. Так как конкурентный рендеринг спасает в тех ситуациях, когда кажется и так уже все плохо — есть долгий рендер, который нужно прерывать более приоритетной задачей. В общем, если есть пример использованный — буду рад если поделитесь.

Продолжаем разработку нашего проекта в лайв формате. Также буду рад ответить на ваши вопросы в чате. Начало, как обычно, в 12:00 по мск. Подходите, кто может. https://youtube.com/live/MHwB_Ro2pbw?feature=share

Друзья, через 22 минуты (в 12:00 по мск) стартуем стрим. Будем продолжать пилить наш проект. У кого есть время — подключайтесь. https://youtube.com/live/P53x_5idWZk?feature=share

Если еще не видели, то в пятый Svelt доезжают signal’ы (видео с разбором от Rich Harris’а по ссылке ниже). Изменения довольно классные. Особенно зашел новый синтаксис для пропсов и эффектов. Но есть и другая мысль, которая у меня появилась — так это, что он теперь стал похож на solid. Раньше, если все делалось полностью компилятором, то теперь нужно помечать ваши реактивные переменные и вычисляемые значения отдельными функциями (для чего это было сделано рассказывается в видео, посмотрите обязательно). Но все равно компилятор до сих пор делает за вас много вещей. Вы скорее просто помечаете ваши состояния, нежели пишите на полноценных сигналах. И мне на первый взгляд такой подход кажется странным. С одной стороны, нужно понимать, как это все работает. С другой, нет полного контроля, так как часть действий делает сам компилятор. А в конце концов получается микс реального JS и магии компилятора. Мне как-то по душе подход, когда ты на прямую работаешь с примитивами фреймворка, нежели через компилятор (у солида тоже в этом плане есть свои приколы, но их намного меньше). Будто бы так все становится более наглядно и понятно. В любом случае, пока сам не попишешь — не узнаешь. Поэтому стоит воспринимать мои слова с долей скептицизма. И думаю когда уже будет релиз, можно будет написать какой-то проект на стриме. По сравнению с тем, что было, улучшения прямо очень позитивные! https://youtu.be/RVnxF3j3N8U

Часто вижу, что у людей ModuleFederation ассоциируется с микрофронами. Хотя это по сути способ отдельно собирать и подключать в runtime какие-то сторонние модули. Да, под идеологию микрофронтов это идеально подходит. Но тем ни менее, спектр использований может быть шире. В некоторых случаях ModuleFederation можно использовать для того, чтобы подключать какие-то независимые компоненты/модули, разрабатываемые другой командой, в ваше приложение. Плюсы по сравнению с npm пакетами будут заключаться в том, что вам не придется каждый раз пересобирать и выкатывать ваш сервис, когда обновиться сторонний пакет. Хорошим примером тут может быть компонент общих на уровне нескольких приложений нотификаций:
import {Notification} from 'NotificationsApp/Notification';

const Header = () => {
    return <div>
        {/* .... */}
        <Notification config={notificationConfig} />
    </div>
}
Обычно общие нотификации никак не связанны с нашим приложением. Их просто нужно отрендерить в правильном месте и передать какие-то опции (которые часто можно сделать обратно совместимыми). В таких случаях, если использовать ModuleFederation, обновления будут доезжать автоматически, без лишних действий. Но минусы тоже есть - не удобная работа с тестами, типизацией и версионированием. Поэтому для большинства случаев проще и надежнее будет использовать npm пакеты. Но об альтернативе знать тоже полезно. Иногда пригождается).

Сегодня гуляя по просторам интернета наткнулся на то, что Lodash 5-й версии находится в стадии разработки. Но самая интересная часть заключается в том, что мейнтейнер проекта просто закрыл все старые issue с тегом issue bankruptcy. Объяснил он это тем, что после 4-х лет не работы над проектом (в связи с выгоранием), невозможно разобрать все issues/PR. С одной стороны, я могу его понять, с другой, решение прямо очень странное (и скорее всего больше эмоциональное). Но в целом радует то, что идет работа над новым мажором. Я сам никогда не был фанатом использования lodash (по большой части из-за плохой типизации, но перформанс и размером пакета тоже можно улучшить), однако все равно он в конечном итоге оказывается у тебя в конечном бандле (а часто даже несколько штук). Поэтому новая версия точно не будет лишней. Хотя в переходный период с 4-й на 5-ю версию в бандле с большой вероятностью можно будет увидеть 2 разных мажора библиотеки. P.S. Также из новостей увидел выход next v13.5. Но там только улучшения по перформансу и багфиксы — https://nextjs.org/blog/next-13-5.

Уже который раз ловлю себя на мысли о том, что не понятно, какой инструмент для сборки использовать при старте нового проекта. Да, если использовать next — то вопросов особо нет. Он из коробки приезжает cо связкой webpack + turbopack (если не ошибаюсь, пока только для дева, на проде вебпак). Может местами не идеально, но улучшаться в будущем будет. Но если проекту не нужен SSR, то не понятно, что выбирать. create-react-app уже не поддерживается. Да и его по итогу приходилось всегда кастомизировать. Есть новый и быстрый Vite. Но все равно смущает отсутствие большого набора плагинов (тот же bundle analyze очень не удобный) и слышал много жалоб о билде в продакшен (там используется rollup, а не esbuild). Есть еще старый добрый Webpack. Кажется самый стабильный, сложный и кастомизируемый из всех. Однако после того, как его создатель начал работать над Turbopack, не уверен, будет ли он активно развиваться. Да и долгие обновления на больших проектах не очень радуют. Такое чувство, будто все в каком-то переходном состоянии находится. Вроде бы и новые есть инструменты со своими плюсами, но немного сыроваты еще. Вроде и старые есть, но не понятно, будут ли они улучшаться. Когда меня спрашивают, что выбирать — я говорю vite. Так как проблемы, которые с ним выскакивают, обычно получается решить. Также быстрые обновления очень приятны при разработке. Ну и на крайний случай всегда на что-то другое переехать можно. Но интересно, что вы думаете по этому поводу? Это у меня одного только такие ощущения?

Наткнулся на классную статью с объяснением того, какие проблемы решает Relay (и как это делает). Раньше что-то читал о нем, но как-то не смог полноценно погрузиться. Схемы + сравнение с другими решениями супер упрощают понимание. https://hasura.io/blog/scaling-frontend-app-teams-using-relay/