Дэн Щербаков ⚛️
91 subscribers
19 photos
46 links
Канал для фронтенд-разработчиков о том, как развиваться и увеличивать зарплату.

Senior Frontend Developer с 6 годами опыта. За этот период увеличил зарплату почти в 7 раз.

Начинайте тут: https://yangx.top/code_lab/280
加入频道
⬆️⬆️⬆️ Мнение синьора, как войти в IT в 2025-2030

Записал мини-подкаст, как человек с 6 годами опыта во фронтенде видит будущее отрасли. Получилось холиварно! Запускай, будет полезно и весело :)
Просто чиллю в Афимолле 😊 Заехал выпить кофе.

Здесь (в Sticks) классный раф и улыбчивые официанты. Henderson, Kaiser, барберы и другие удовольствия для парней тоже есть.

А над куполом видно башни Сити. Отпад вид 🔥
Нет откликов на резюме: что делать?

Ты реально стараешься. Откликаешься на 20-30 вакансий в день, под каждую адаптируешь сопроводительное. И ждешь, что приглашений будет хотя бы 30-50%.

Вместо этого зовет всего две компании в неделю - и те не лучшие.

За две недели таких стараний руки начинают опускаться.

Я был на твоем месте. И я нашел способ, как обходить барьеры.

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

На консультации мы:

Скорректируем твое резюме.

Обсудим твою ситуацию: что делать с учетом твоего опыта, локации, возраста.

Бонусом объясню, как работать с Linkedin в 2025 с наибольшим эффектом.

Стоимость до конца недели 1000 рублей, затем - 3000.

Если посчитаешь, что не получил на консультации ничего полезного, я верну деньги.

Пиши мне "резюме" в личку, чтобы получить консультацию ⬅️
⚛️ Хитрый вопрос с собеса: почему Redux?

На собеседовании тебя спросят: когда и почему стоит тащить в проект Redux?

И вот хитрость: правильный краткий ответ принесет тебе 0 бонусов.

Ты не провалишь собес - но тебя обойдут те, кто подготовился.

Держи пошаговый план, как ответить. Применяй его не только для любых открытых вопросов:

1️⃣ Базовая теория.

2️⃣ Углубленный пример.

3️⃣ История из рабочей практики.

В случае с Redux я бы отвечал так:

"Вообще, у Redux три преимущества - популярность, иммутабельность и легкость дебага.

Первое. У технологии отличная дока, а сообщество нашло большинство багов в Redux и экосистеме. Разрабатывать на нем - никакой эзотерики. Уже известно, как его внести в FSD. Это важно для средне-больших проектов.
Второе. Здесь нет мутабельности, как в MobX. Это значит не только предсказуемость, но и производительность. Чуть позже поясню.
Третье. Девтулзы дают легкий дебаг, а иммутабельность - тайм тревелинг (снепшоты состояний сохраняются при изменениях). Убежден, что дебаг на больших проектах должен быть как можно проще.

Давайте я пару слов скажу про профит от иммутабельности в производительности. Селекторы сравнивают состояние по ссылке. Если объект, на которое ссылалось поле состояния, изменился, redux прекращает вычисления: для него этого достаточно, чтобы понять, что состояние новое. Одна операция сравнения против сравнения структуры объекта - это серьёзно.

На одном из моих проектов в коде была ошибка: внутри useSelector оставили функцию со сложностью O(n2). Тяжелый код вызывался при диспатчинге любого экшена. Когда я его убрал, проект избавился от лагов, и мы сохранили все преимущества
технологии."

➡️ На своем менторстве я помогаю описывать опыт привлекательно, чтобы выделиться среди кандидатов и получить классный оффер

Если зашла рубрика ответов на вопросы собесов, ставь лайк 🔥
🤯 Собес или смерть: ловушка поиска

Искать работу более месяца и на все получать отказы - выматывает.

Ты пытаешься понять, что упустил. Что-то исправляешь, но получается хаотично. Друзья и ChatGPT дают общие советы, они и не подходят под твою ситуацию. Читаешь статьи на Хабре, но они уже устарели.

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

Самое время попросить экспертной помощи!

Так сделал фронтенд-разработчик из Казахстана, когда пришел ко мне на консультацию.

➡️ Кейс клиента

Несколько месяцев он искал работу на позицию мидла около 200 тысяч. Его звали на первичный скрининг. Потом, в 99% случаев, HR пропадали или присылали стандартные отписки. Он увидел мой пост о консультации и подумал: почему бы и нет?

Мы обсудили его ситуацию и начали анализировать. Выяснили:

1️⃣
Он гражданин Казахстана, ищет по СНГ.

2️⃣
Его интересует только удаленка по ИП.

3️⃣
В резюме есть стандартные ошибки самопрезентации.

Что мы сделали:

Акцентировали в резюме достижения и сильные стороны именно как удалёнщика.

Оформили опыт легко читаемо, отделили достижения от обязанностей.

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

Клиент получил конкретный план, как искать работу, и снизил стресс неопределенности.

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

Напиши мне в личку слово "резюме", чтобы записаться на консультацию и получить классный оффер быстрее и спокойнее!
🤨 К кому идти за помощью в получении оффера?

Бывает, откликаешься на вакансии, но ответов HR мало.

На скринингах HR слушают, но пропадают.

Пробился на техническое - не возвращаются с обратной связью.

Ты в тупике.

Я был в такой ситуации. Потратил месяцы на поиски и тесты. И понял:

▶️ Как составлять резюме;

▶️ Как общаться на скрининге;

▶️ Как за 20% времени покрыть 80% тем на техническом.

Мои консультации - сумма всего этого опыта.

Ты сможешь пробить невидимый барьер, применив мой опыт.

Что я предлагаю:

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

Узнаешь, что в твоей ситуации мешает в поиске работы.

Получишь образец конверсионного резюме.

Пиши "+" в личку, и я помогу тебе решить затруднения в устройстве на работу фронтендером в 2025.

По цене 3000 осталось три слота. Далее цена вырастет до 5000 рублей, потому что желающих много, свободное время на консультации ограничено.
⌛️Зачем нужен хук useDefferedValue?

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

Представь: в таблице или списке 10к записей, и каждая фильтрация вызывает у интерфейса микроинфаркт. UI лагает, будто на довре 2010-й. Ты что-то упустил. Пушить такое нельзя.

В чем же дело? Пока пользователь печатает в поиске, реакт ререндерит огромный список на каждый символ.

💡 И тут на сцену выходит useDeferredValue.

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

const oldTableItems = getHugeAmountOfItems();
const defferedTableItems = useDeferredValue(oldTableItems);


Здесь oldTableItems - это набор итемов с предыдущего рендера, а defferedTableItems - новый, отложенный для следующего рендера.

Состояние, когда данные в интерфейсе еще задерживаются, можно поймать простым сравнением и навесить CSS-класс, чтобы отобразить:

 const isStaleState = (oldTableItems !== defferedTableItems) && 'color: gray'.


Интерфейс - шёлк, юзер доволен, ты - красавчик.

На своем менторстве я помогаю понять такие вещи, чтобы ты уверенно отвечал на собеседованиях и получал вкусные офферы ⬅️
🤓 Что оценивают на техническом интервью?

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

Что хочет увидеть технарь на той стороне?

➡️ Знания. Как глубоко и широко владеешь теорией, решаешь абстрактные практические задачи типа console.log(11 && 45).

➡️ Навыки. Как применяешь теорию. Для этого - лайфкодинг, включая алго-секцию.

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

➡️ Soft-skills. Будь внимателен к этому пункту, это не буллщит от эффективных менеджеров. Это самый необъективный, психологичный - и очень важный кусок мозаики, если нанимаешься на линейную позицию. Даже на синьора. Они хотят видеть спокойную уверенность в себе, аналитический ум, умение внятно излагать мысли во время решения задач - особенно тех, решений которых ты не знаешь.

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

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

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

Почему?

У тимлида ставка 300+ тысяч. Его время дорого стоит компании.

Поэтому фильтр HR неизбежен. Он максимально прост ⛔️

Разберем его:

1️⃣ Список технологий. У HR перед глазами перечень технологий на проекте. Упомянешь или нет? Если нет - дальше не пустят

2️⃣ Стиль общения. Нервные смешки, путанная речь, явное выдумывание -

3️⃣ Понимание ценности. Не можешь обосновать, что ты можешь дать компании, что делаешь хорошо, - на позицию выше middle не пройдешь

Все эти ошибки я совершал сам. Они крайне популярны.

Не понимаешь, почему не пропускают на технические? Пиши мне в личку: на консультации я помогаю выявить ошибки и получить работу быстро
👀 Не знаешь этот хук React - у тебя проблемы!

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

Хук useImperativeHandle - твой лучший друг. На которого ты, скорее всего, забил.

Он превратит ref-объект в публичное API компонента-ребенка.

Хочешь менять состояние ребенка из родителя? Да! Работать с абсолютно любой сложностью, инкапсулированной внутри чайлда? Снова да!

Ты нарушишь Flow-подход, но иногда иначе никак.

➡️ Какие мне известны редкие кейсы, решенные useImperativeHandle?

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

Есть огромный компонент видеоплеера. Задача - останавливать просмотр по клику в хедере. Я не хочу размазывать логику по всему приложению. Создаю с useImperativeHandle метод. Пилю реф. Пробрасываю через контекст в видеоплеер. И дергаю. Вот и все, без костылей с Redux.

А какие задачи ты мог решить с useImperativeHandle, но по незнанию делал костыли?

Делись инсайтами в комментах ⬇️⬇️⬇️
💪 Как работать 12 часов в сутки и не выгорать?

Говорят, работай не много, а головой. А то выгоришь. Какие, мол, 12 часов, Дэн?

А я скажу: бывает, что нужно. Без сверхусилий нет сверхрезультата. И лучше тебе войти в это вооруженным.

Делюсь простой тактикой.

Разбей день на 3 фазы по 4 часа:

1️⃣ Сложная умственная работа. Технические интервью, продумывание архитектуры, сложные задачи по фронту.

2️⃣ Задачи умеренной сложности. HR-скрининги, шаблонный код, тесты.

3️⃣ Чилловые задачи. Пассивное обучение с конспектами, рутинные задачи, посты в блог.

В фазу 2 впихни спортзал, полезно для мозга.

Работай с Pomodoro-таймером.

Один день в неделю отдыхай. Даже если работа по 12 часов получается и ты чувствуешь себя суперменом. Криптонит никто не отменял.

И не волнуйся, на своем менторстве я не заставляю так работать 😁
☘️ 9 мыслей синьора помидора обо всем

Про работу:

0️⃣ Учись на практике. Изучил фишку языка - сразу примени. Почему: так усваивается гораздо лучше.
1️⃣ Прокачай софт-скиллы. Это не корпоративный буллщит, а твой набор ключей к комфортной работе.
2️⃣ Пользуйся Pomodoro. Мозг устает от задач, дай ему отдышаться.

Про здоровье:

3️⃣ Занимайся спортом. Любым. Будь то бег, зал или занятия на турнике. Нагрузка стимулирует кровоток, что заставляет мозг работать. После 30 особо полезно.
4️⃣ Высыпайся. Не выспался - привет тупняк на весь день.
5️⃣ Выкинь сахар, пельмени, чипсы и другую дрянную пищу, чтобы держать в тонусе дофаминовую систему.

Про жизнь:

6️⃣ Работай над обложкой. Хорошо одевайся, учись общаться, учись мыслить глобально и с позиции силы.
7️⃣ Формируй свою среду. Не общайся с негативными людьми - даже если сам на негативе. Негативное мышление - тормоз.
8️⃣ Ставь цели на день, неделю, месяц, год и на всю жизнь. Без целей прочитанное выше - бесполезно.
Ошибка 90% самоучек

Я самоучка. Если мы с тобой похожи, я знаю твою боль:

Что, чёрт возьми, учить? В каком порядке?

🤯 JS - 100500 учебников.
🤯 WebApi - огромная дока.
🤯 TS - материалы для новичков отсутствуют.

Панель закладок раздулась от статей, которые "надо бы потом почитать".

Что в итоге? Откладываешь на завтра. Или бросаешься с головой учиться, натыкаешься на непонятный пласт и выгораешь.

Нет опытного друга, чтобы набрать, обсудить материал 🧑🏻‍💻

А главное - ты тратишь массу времени! Как на попытки самому понять зубодробительный материал, так и на борьбу с прокрастинацией (защитным механизмом психики от бесполезных занятий).

Эту ошибку совершает 90% самоучек. И я совершал.

Пока не понял простую вещь:

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

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

Как же я решил эту проблему?

Убрал из головы установку, что я самый умный и все смогу сам.

Начал с простого - стал брать консультации.

А чтобы стать по-настоящему синьорным чуваком - обратился к ментору.

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

Сейчас я сам менторю новичков, junor и middle фронтенд-разработчиков. Веду просто за руку.

➡️➡️➡️ Записывайся на предварительный созвон, чтобы обсудить твою ситуацию и определить, как мы решим твою проблему в обучении ⬅️⬅️⬅️
⚔️ React vs Vue: что учить в 2025?

...а может, angular или svelte? 😲

Давай разберемся.

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

Обычно на проектах технологии уже подобраны. А если ты техлид и сам их выбираешь - напиши мне, пойдем в бар 🤝

Какие технологии выбирают чаще всего? React с экосистемой.

Значит, на React больше всего вакансий.

С другой стороны, на React обучает 90% курсов по фронтенду, поэтому на каждую вакансию больше желающих.

Поэтому.

Если ты хочешь стать фронтенд-разработчиком в 2025 году, у тебя два пути:

1) Стать лучше выпускников курсов по фронту и углубиться в React. С персональным ментором - задача несложная.

2) Не конкурировать с ними и пойти в Vue, но быть готовым к меньшему количеству вакансий.

Выбор за тобой.
🥴 GPT обновился: нас заменят!

Сегодня вышла обнова o4-mini-high, лучшая модель-кодер.

И вот что она ответила про синтаксис в строгом режиме 😁

Формально все правильно. Так и сработает - в глобальной области видимости.

Но! В любом блоке, если переменная let или var существует выше, ошибки не будет.

Модели по-прежнему галлюцинируют, выдают часть правды или подменяют понятия.

На ближайшие 5-10 лет я за свою профессию спокоен 🙈

UPD: оказывается, я невнимательно прочел ответ чата. Он все сказал правильно. Значит, все-таки нас заменят 😁
Спорим, не ответишь?

function foo() {
console.log( this.a );
}

var a = 2;
var o = { a: 3, foo: foo };
var p = { a: 4 };

o.foo(); // 3
(p.foo = o.foo)(); // что выведет в нестрогом режиме? Почему?


Такие вопросы задают джуниорам, а все чаще и мидлам.

Почему?

На рынке 2025 требования выросли. От фронтов ждут знания языка на уровне, которого раньше ждали от бэкендеров в финтехе.

Можешь с этим не соглашаться. Можешь возмущаться.

Но правила диктует рынок.

А теперь ответ:

Выведет 2. Вот почему.

Оператор присваивания, "=" возвращает ссылку на функцию в отрыве от контекста.

Звучит непривычно, но да, он возвращает значения, как и оператор return.

В коде "=" вернет ссылку на функцию foo, присвоенную объекту o.

Отметь: ссылку на саму функцию, а не метод объекта с привязкой к контексту.

По умолчанию функции привязывают свой this к глобальному объекту.

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

Объявленные в глобальном объекте переменные становятся его полями, доступными через точку.

И мы получаем из глобального объекта 2.


А в своем менторстве я учу понимать такие вопросы, вместо того чтобы заучивать ответы.
Что ждет на моем менторстве?

Решиться на менторство - непросто.

Не всегда понятно:

- Как конкретно построена работа с ментором?
- Каких результатов я достигну?
- Если что-то пойдет не так, у ментора есть план?

Я написал полный гайд по моему менторству, как все устроено изнутри

Переходи, чтобы получить подробный план: ➡️➡️➡️ https://teletype.in/@daniel.s/S9RJ19F0qBh

Остались вопросы? Пиши в комменты)
⚽️ Обойти 90%: навык победителей

Конкуренция в IT и других сферах растёт с каждым днём.

Чтобы быть впереди, нужно чётко понимать, что даёт преимущество.

«Рычаг» (leverage) — инструмент, позволяющий добиться преимущества с минимальными усилиями.

Простой пример: если тебе нужно сдвинуть тяжёлый камень, можно годами тренироваться - а можно просто использовать лебёдку.

➡️ В IT такой рычаг - системное мышление.

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

- SOLID
- KISS
- DRY
- Scrum и Agile
- Архитектурные паттерны

Например, принцип единственной ответственности (SRP из SOLID) основан на теории систем. Система состоит из подсистем, которые связаны внутри, но слабо зависят друг от друга.

Органы в теле человека не знают друг о друге, но образуют единый организм. В университете отдельные факультеты автономны, а вместе они — единая образовательная система.

В программировании работает точно так же.

Успешные спецы вроде Павла Дурова, Марка Цукерберга или любого архитектора ПО с зарплатой от 500 тысяч рублей — владеют системным мышлением интуитивно: родились с ним либо развили с детства.

Ты можешь приобрести этот навык осознанно.

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

10 лайков - расскажу о системном мышлении и его применении больше