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

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

Начинайте тут: https://yangx.top/code_lab/280
加入频道
Leetcode 70. Climbing Stairs.

Эта задача - база рекурсии и динамического программирования.

Запомним:
- ДП всегда итеративно и работает за O(n) по скорости и O(1) по памяти. Работает по принципу Bottom-Top: разворачивает задачу от базовых случаев к заданному пределу.
- Рекурсия с мемоизацией работает за O(n) по скорости и O(n) по памяти. Работает по принципу Top-Bottom: идет сверху вниз, пока не встретит базовый случай.

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

const memo = {};
var climbStairs = function(n) {
if (n <= 1) return 1;

if(memo[n]) return memo[n];

const currentCalc = climbStairs(n-1) + climbStairs(n-2);
memo[n] = currentCalc;
return currentCalc;
};
Leetcode 70. Remove Duplicates from Sorted List

Эта задача не станет сюрпризом для тех, кто писал свой Linked List.

Дан указатель на голову листа. Создаем на него указатель. В цикле перебираем ноды: пока есть текущая и следующая ноды, проверяем, совпадают ли значения. Если совпадают - следующая за следующей нода становится на место следующей. Иначе следующая занимает место текущей.

Можно решить и рекурсивно, однако решение займет O(n) по памяти.

var deleteDuplicates = function(head) {

let temp = head;

while(temp && temp.next) {
if(temp.next.val !== temp.val) {
temp = temp.next;
} else {
temp.next = temp.next.next;
}
}

return head;
};
Leetcode 94. In-order обход дерева.

Это простой рекурсивный обход бинарного дерева. О деревьях и типах обхода (DFS, BFS, In-Order, Post-Order, Pre-Order...) уже писал ранее.

Чтобы понимать этот код, нужно уяснить, как работает стек при рекурсии.

Функция traversal вызывается на корне дерева. Далее в стек помещаются последовательно все вызовы на левых нодах - до тех пор, пока в вызов не будет передан null. После этого наполнение стека закончится. Произойдет неявный возврат undefined. Интерпретатор сможет выполнить следующую операцию - закинуть в массив значение предыдущей ноды. Затем вызывается та же функция на правой ноде, и процесс повторяется до исчерпания дерева.

var inorderTraversal = function(root) {
const result = [];

function traversal(node) {
if(node) {
traversal(node.left);
result.push(node.val)
traversal(node.right)
}
}

traversal(root)

return result;
};
Мои главные ошибки в программировании за 5 лет

Накопились, скажем так, точки роста. :) А именно:

1. Поверхностный анализ задач.
Чтобы решить задачу на 100%, нужно:
- внимательно прочитать задачу
- понять, какого результата ожидает заказчик
- понять, откуда брать данные и готовы ли они
- провести небольшой ресерч, как решать такую задачу
- обсудить с заказчиком все непонятные тонкости
- брать задачу в работу

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

Что изучить, чтобы так не делать?

Лекция по анализу задач: www.youtube.com/watch?v=ugGT4T5HcsI&t=9263s
Курс по софт-скиллам: https://youtube.com/playlist?list=PLfDKoUW4baOdVtmuBkfLt649c2L8KqZmx&si=CVc2ekvITCVBIqlN

2. Программирование реализаций, а не интерфейсов.
Сначала пишу код, потом подгоняю интерфейс.
Это неверный подход. Ни о каком LSP или DI не может быть и речи, когда ты не знаешь заранее, что код принимает и возвращает. Ты не видишь место кода в системе.
Напротив, спроектированный заранее интерфейс создает Black Box, который задает написанию коду понятные рамки.
Теперь я проектирую систему заранее, а реализации пишу после.

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

4. Развитие только в технологии.
Скачок в карьере дает только понимание, как код конвертируется в ценность (например, выручку компании). Это помогает расставлять приоритеты, выбирать технологии не по хайпу, а по потребностям домена, и общаться с коллегами от бизнеса на их языке.
Чистая архитектура - зло?

В блоге "Кодируем" (@koduryem) узнал, что кто-то из нас говорит: чистая архитектура - творчество университетских программистов, раньше писали без них и все летало!

Я прокомментировал:

"Правильное применение абстракций связано с рефакторингом. Изначально приложение может быть минималистичным. С ростом кодовой базы растет сложность. Мы ее периодически сбиваем, делая рефакторинг по принципам чистой архитектуры. Вот и все. Минимализм важен, чистая архитектура - тоже важна, всему свое место."

Более того, накидывать абстракции заранее - нормально. Опытный разработчик может предсказать, в какую сторону будет расти проект, и заранее абстрагировать пару фабрик. Остальное применит в ходе рефакторинга. Неопытный абстрагирует все, что может, потому что хочет показать свой профессионализм. Другие споткнутся об его код, упадут и закричат на весь интернет, что чистая архитектура - зло. :)

Этим постом ставлю точку над срачем, зло чистая архитектура или нет
ChatGPT уже заменил программистов?

Встречал на vc.ru статьи от СЕО маленьких компаний, которые с восторгом отзывались о GPT:

"Бот написал код по моему ТЗ, и я сам собрал его по инструкции. Мой программист мне больше ни к чему!"

Что здесь не так?

- Нет времени. Запустить продукт - мало, его нужно поддерживать, рефакторить, чинить и развивать.
- Нет экспертизы. Даже старшие разработчики не всегда понимают, как задать ChatGPT вопрос. Ответы O1-preview (лучшая модель OpenAI) слишком общие, и даже она ошибается.
- Нет ответственности. Бот ни за что не отвечает, юридическая база ответственности компаний-провайдеров ИИ отсутствует.

О массовых увольнениях программистов, как видите, не может быть и речи.
Дэн Щербаков ⚛️
ChatGPT уже заменил программистов? Встречал на vc.ru статьи от СЕО маленьких компаний, которые с восторгом отзывались о GPT: "Бот написал код по моему ТЗ, и я сам собрал его по инструкции. Мой программист мне больше ни к чему!" Что здесь не так? - Нет…
You don't know React

После 5 лет в разработке с радостью узнал, что Реакту еще учиться и учиться. Например:

- Compound Components Pattern, который реализует Open-Close Principle.
- Provider hell - лесенку оберток вокруг App - легко избежать через хелпер, принимающий массив компонентов и параметров.
- Каррирование коллбэков помогает делать чище JSX.

Это лишь мелочи из того, что я узнал. С одной стороны, заставляет усомниться в своем профессионализме. С другой - воодушевляет: пробелы в знаниях понятны, будущий уровень - тоже понятен.

Я продолжу инвестировать время в обучение: амбиции требуют больших компетенций. Заканчиваю материал по TypeScript, начинаю воркшоп по React от Anthony Alicea. В планах - "The Software Architect Mindset" от ArjanCodes и продолжить книгу Luca Mezzalira о микрофронтах.
Правда ли, что в 2025 работу во фронтенде найти сложнее?

Еще недавно было так: закинул резюме на HH, и HR сами пишут пачками. Но в 2025 всё поменялось.

Я сам столкнулся с этим, когда искал позицию синьора в конце 2024. Критерии были простые:

- Х2 к зарплате.
- Возможность в будущем стать тимлидом.

Делал, как раньше: написал резюме левой пяткой, выложил на Хабр Карьеру и hh. Думал, HR сами будут писать пачками. Но… компании смотрели - и не звали на собеседования.

Начал откликаться сам - впервые за всю карьеру. За неделю получил всего 2 приглашения - и не прошел даже HR-собеседование.

Этот результат сильно встревожил. Я не понимал, что делаю не так.

Решил разбираться и вложился в процесс:

- 50 тысяч рублей на карьерные консультации.
- 15 тысяч на подписки и Boosty экспертов, чаты «паровозиков»...
- 40+ видео с интервью.

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

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

Вот тогда пошли офферы.

Я настолько обнаглел, что отказался от оффера на почти 300К, потому что они не захотели торговаться выше. :)

И наконец вышел на отличную работу синьором - по ТК, с классным ДМС и карьерными перспективами.

Так что да, стало сложнее. Но если подходить с умом — всё возможно!
Зачем айтишнику свой блог?

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

Кроме написания кода, я решал две задачи:

1. Как устраиваться на работу.
2. Как развиваться, когда устроился.

Для этого я качал тех скиллы. Посмотри выше примеры решений задач с Leetcode, конспекты по SOLID и другие посты. Когда объясняешь другим, сам понимаешь еще лучше! Это не шутки, оно так работает. :) А если ты новенький, читай пост приветствия, познакомимся!

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

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

Так что теперь я не только делюсь кодом и архитектурой, но и помогаю в более сложных "софтовых" вопросах. Под ключ, короче.)

И это нефигово заряжает! Жизнь приобрела еще один смысл.
Как улучшить резюме фронтендера в 2025?

Смотри, 50% резюме программистов - полная шляпа. Моё старое - не исключение :)

Чтобы повысить грейд и зарплату во фронтенде в наше время, мало написать от балды и ждать. HR не будут откликаться на такое резюме! Ведь конкуренция высока, и другие уже освоили навыки самопрезентации.

Давай расскажу, как оптимизировал резюме на HH.ru - и за 14 дней получил несколько вкусных офферов :)

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

Прикрепил к посту пример. Это одна из предыдущих работ.

Пользуйся и находи работу быстрее, бро 🔥
Топ 5 карьерных ошибок фронтендера

Почему у тебя не получается быстро расти в доходе во фронтенде, хотя вроде бы делаешь всё правильно? В чём секрет?

На самом деле секрета нет. Есть однотипные, базовые ошибки, которые многие допускают по неопытности. Давай разберем:

Не качать софт-скиллы. Представь, ты сидишь на одном месте годами, делаешь однотипные задачи, перерабатываешь. Зарплата не растет, здоровье падает. А другие получают повышение. Жиза, да? Это исправляется софт-скиллами.

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

Учить все подряд. Ты фронтендер, тебе не нужны Python и C++ “на всякий случай”. Это прокрастинация. Углуби экспертизу в своей отрасли, изучай софт-скиллы и AI-инструменты (но, пожалуйста, не уходи в машинное обучение!).

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

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

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

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

Записал кружочек о том, как меня однажды уволили и какие уроки я вынес 💚
This media is not supported in your browser
VIEW IN TELEGRAM
Как просить прибавку, если страшно услышать "нет"?

Сколько раз ты думал: "Хочу больше денег, но если попрошу – вдруг откажут, и я стану в глазах начальства жадным нытиком?"

Логика понятна. Но знаешь, кто точно не получит прибавку? Тот, кто её не попросит.

Разбираем по шагам, как просить повышение дохода грамотно – без страха, с максимальными шансами на успех.

1. Подготовь аргументы

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

Какие проблемы ты решил?
Как улучшил процессы?
Что сделал сверх ожиданий?


Пример: "За последние 6 месяцев я оптимизировал процесс сборки фронта, ускорив CI/CD в 2 раза. Это сэкономило 15 часов работы команды ежемесячно".

2. Выбери правильный момент
Не в середине дедлайна, когда у всех горит.
Лучше после удачного проекта или квартального ревью.

Если рукль доволен результатом – шансов больше.

3. Покажи ценность, а не потребности
Ошибка новичков: "Мне нужна прибавка, потому что инфляция".
Лучший подход: "Я увеличил ценность компании – логично, если моя зарплата это отражает".

4. Как сказать?
Допустим, твоя цель – +50% к зарплате. Пример диалога:

Ты: "Я хочу обсудить свою роль в компании и пересмотреть уровень компенсации. За последние 6 месяцев я [список достижений]. Считаю, что мой вклад увеличился, и хочу предложить пересмотр зарплаты".

Если слышишь: "Пока нет бюджета", не падай духом. Уточни:

"Когда будет возможность обсудить это снова?"
"Какие результаты вам нужно увидеть, чтобы это произошло?"

5. А если всё-таки "нет"?
Главное – не воспринимать отказ лично. Это не значит, что ты плох. Это значит, что в компании может не быть ресурса или тебе нужно доработать аргументы.

Но если твои заслуги очевидны, а денег всё нет – начинай искать новую работу.

Вывод:
Бояться — нормально. Но если не просишь – точно ничего не изменится. Подготовься, уверенно обсуди – и получишь то, что заслуживаешь.
Пост знакомства для новеньких

Я Дэн, senior frontend-разработчик с 6 годами опыта и твой будущий ментор. В своем блоге помогаю расти профессионально и в деньгах.

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

В итоге, 2025 моя зарплата стала в 6.5 раз выше, чем на старте.

Я нашел ответы на вопросы:

- Как оформить резюме, чтобы пригласили на собеседование?
- Как вести себя на HR и техническом, чтобы дали оффер?
- Как действовать системно, чтобы повторять рост х2 каждые несколько лет?

А еще подготовил для тебя гайд, как за 5 шагов прокачать свое резюме.

Лови! ⬇️⬇️⬇️
Как повысить зарплату внутри компании?

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

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

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

Ставь лайк, если посчитал полезным!
ИИ наступает: как остаться в IT в 2025?

Привет! Слышал про ИИ-агентов?

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

ИИ-агент сам знает, как подобрать тебе билеты на самолет. Или заказать продукты. Или... создать приложение.

Помнишь, как скептики на Хабре насмехались над LLM? Сейчас зачатки Джарвиса из "Железного Человека" - реальность.

Стоимость одного агента около $200. Раз в 10-20 меньше твоей зарплаты в IT!

С кем же выгоднее работать компании?

Но помни: бот не может нести юридическую ответственность. В ближайшие 15-20 лет ты, как программист, будешь нужен в бизнесе - как руководитель ботов, оператор или верификатор их работы.

Овладей ассистентами, такими как Codeium или GitHub Copilot. Держи руку на пульсе новых ИИ-технологий в своей отрасли.
Моя история, часть 1: от офисного планктона до джуна-фронта

Я решил, что пойду в IT, в 2017 году. Тогда был менеджером на почте в компании Bosch. Зарабатывал 26500 рублей. Мне нравилось: на прошлой работе приходилось стоять по 8-12 часов, а платили столько же.

Но руководительница, пожилая женщина, стала токсичной. Бесконечные придирки, тяжелая атмосфера... Понял, что не хочу этого терпеть.

Вспомнил, что в 16 лет писал простейшие юзер-скрипты для браузера. А еще тогда у меня интернет-зависимость была. Сказал: буду зависимостью зарабатывать! Про высокие зарплаты в отрасли тогда не знал.

Тайком на работе начал читать learn.javascript.ru. Накопил немного денег, уволился и начал учиться всерьёз. HTML, CSS, JS...

Когда деньги кончились, устроился в кафе на пол-ставки.

Зашел как-то в телеграм-канал JS Jobs . Листал вечером, и увидел предложение о работе. Админы удалили предложение минут через пять, но я успел откликнуться!

Технический директор маленькой компании, звали его Максим* (имя изменено), дал техническое задание: порефакторить лендинг. Работал всю ночь, но задание выполнил. Отправил Максиму.

На следующий день Максим написал:

"Приезжай в офис, будем оформляться".

И я поехал! Метро "Аэропорт", просторный солнечный опен-спейс.

Меня устроили в CPA-сеть компании. Маленький дружный отдел. Дали два монитора! Поток лендингов, поддержка сайта на WordPress, верстка... Я справлялся, хотя даже не знал, что такое GET-запрос.

Это была первая моя работа в IT. Платили 45 тысяч. Сорок пять! В два раза больше, чем на почте!

Я сообразил, что поставил на правильную лошадь.

Через полгода в компании прошли сокращения. У меня были хорошие отношения с Максимом, поэтому я сохранил место. Зарплату тоже повысили - до 50 тысяч. Но этого было мало. И я открыл резюме на HH.

Это был 2019 год. Я накопил год опыта. Стоило открыть резюме - приглашения посыпались, как из ведра.

Уже через неделю собесов получил оффер от "Лиги Цифровой Экономики". Дали 75 тысяч.

Попрощался с коллегами, подписал заявление...

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

Первым делом "Лига" направила меня на проект в крупнейший банк.

===

Накидаете 10 лайков 👍 - напишу продолжение :)
4 убеждения против менторинга

Привет! Смотри, я назвал себя фронтенд-ментором не просто так. Сначала я пошел учиться у другого, опытного ментора.

Несколько лет до этого меня сдерживали ограничивающие убеждения - и вот какие:

Я могу сам разобраться!
Есть же куча статей, туториалов, книг и курсов. Я могу обучиться сам, как JS, верстке и так далее.
Только что-то идут месяцы, годы, а я все продолжал набивать закладки статьями...
Каша материалов без понимания, что и в каком порядке учить, приводила к жесткой прокрастинации. Я заставлял себя, но только выгорал.
В итоге ментор дал систему. Где-то подсказал, где-то замотивировал, где-то удержал от прокрастинации и напрасной траты времени.

Я не уверен, что это даст реальный результат.
Вдруг ментор будет пересказывать статьи, играть в капитана Очевидность?
Типа мотивационного тренера.
На менторинге я понял, что ментор доводит до результата не через уникальную информацию. Ментор дал мне свою систему, свой личный живой опыт, ответы на мои личные боли и проблемы, а не общие вопросы. Пойти к ментору - как купить настроенный под себя велосипед, а не набор запчастей.

Это дорого!
Ментор попросил 100.000 рублей за 2 месяца обучения.
Это дорого? Давай посчитаем:
В среднем, начинающий ментор зарабатывает от 300.000 до 1.000.000 рублей в год.
Это х3-х10 от вложений в обучение.
И это только деньги! Я также сэкономил годы блужданий, набивания шишек. Получил опыт полноценного бизнеса, которым можно заниматься параллельно с работой.

Что, если я не справлюсь?
Пойду к ментору, но не буду понимать, справляться, потеряю мотивацию...
Оказалось, что все это не про ментора. Все это - про самостоятельное обучение. Ментор терпеливо объяснял, сопровождал, своим примером добавлял мотивацию двигаться вперед: "если смог я, то сможешь и ты!", показывал он.

А какие убеждения ограничивают тебя от того, чтобы идти в наставничество? Делись в комментах :)
Как меняется жизнь с х2 к доходу

Если бы я знал раньше, как круто меняет жизнь хорошая зарплата!

Когда моя зарплата фронтенд-разработчика в крупном медиа была около 150 тысяч рублей, мне хватало на жизнь. Даже с девушкой! Мы питались ПП-шно во Вкусвилле, раз в неделю ходили в кафе, а раз в месяц - в театр.

Но я решил расти дальше. Потому что поджимала инфляция, и мы уже построили планы на семью.

И в один день мой доход выстрелил х2.

Мне открылся совершенно новый уровень жизни.

И прежде всего - я стал везде ездить на такси.

Как ленивый интроверт, терпеть не мог стоять в набитом автобусе.

Перейти на такси было потрясающе! Я просто вызывал Комфорт+ прямо к дому, садился в просторный салон,просил водителя поставить мою музыку, доставал планшет и работал. Или смотрел в окно. Автобусы пролетали мимо. На неудобных сиденьях горбились люди.

Раньше я был среди них.

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