Главная | Все статьи | Дневник студента

Как заставить фронтендера учить алгоритмы

Время чтения статьи ~4 минуты
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
Как заставить фронтендера учить алгоритмы главное изображение

Представим, что у нас есть фронтендер. Он или она в целом довольны своей жизнью, научились штамповать формы на React и закрывать вовремя задачи, в общем — их все устраивает. Но рано или поздно наш фронтендер начинает чувствовать, что чего-то не хватает. Новости о суперспособностях ChatGPT-4 начинают волновать нашего фронтендера, и чтобы почувствовать себя увереннее, приходится задуматься о своем дальнейшем развитии. И среди прочих buzzwords особенно мозолит глаза аббревиатура DSA, она же — Data Structures and Algorithms.

Сначала наш фронтендер недоверчиво относится к такой идее. Можно же изучить что-то поинтереснее, например, новый фреймворк, удариться в fullstack, стать властелином CSS-анимаций, в конце концов. Зачем фронтендеру знать алгоритмы? В JavaScript есть sort(), есть find(), есть new Map(), да и насколько часто вам приходится по работе обходить дерево? Зачем тратить свое бесценное время на ненужный скилл?

Как бы то ни было, реальность жестока. Знание алгоритмов вам пригодится на собеседовании в любую из big tech компаний. Иногда от вас могут даже не потребовать высшее техническое образование — а вот об алгоритмах наверняка спросят. Даже если вы не собираетесь в big tech, ситуация на рынке такова, что вам придется посоперничать с обладателями Computer Science degree и попавшими под layoffs бывшими сотрудниками FAANG. Даже если вы не метите слишком высоко — разве не приятно на обычном собеседовании с уверенностью решить любую предложенную задачку? Да и в ежедневной работе иногда приходится столкнуться со сложной структурой ответа с бэкенда — и хорошо бы знать, как с ними работать.

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

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

  1. Не идите на медведя с голыми руками. Если вы не знаете об алгоритмах ровным счетом ничего, не бегите первым делом щелкать задачки на Leetcode, потому что почти наверняка быстро разочаруетесь. Мои любимые источники теории — курсы с YouTube, где подробно разбирают отдельные задачи (их много, так что найдите преподавателя, который нравится именно вам), курс с Хекслета «Основы алгоритмов и структур данных», и, конечно же, книга «Грокаем алгоритмы» — у автора книги даже есть репозиторий на GitHub с примерами кода из книги на разных языках (JavaScript там тоже есть). Можно (и нужно) учиться по нескольким источникам одновременно. Главное здесь — обязательно пробуйте сами воспроизводить решения задач, иначе ничего не запомните.
  2. При этом не пытайтесь запоминать код. Мне понравился такой совет — попробуйте своими словами описать принцип работы алгоритма и запомнить именно его, чтобы при необходимости воспроизвести его по шагам. Думаю, если собеседующий увидит, что вы понимаете подход, но где-то упустили переменную — вас поправят, но ругать никто не станет. Некоторые даже делают Anki-карточки для запоминания алгоритмов и структур данных — хочу попробовать сделать так тоже.
  3. Не ограничивайтесь одной теорией, но и не практикуйтесь бездумно. Мне нравится такой roadmap от одного ютубера — он помогает постепенно перейти от простых тем к более сложным, а еще по каждой теме есть отдельный список задач. На том же Leetcode есть множество тематических списков (вот, например, по рекурсии) — как по мне, лучше увидеть несколько применений одного алгоритма и полностью в нем разобраться, чем постоянно переключаться с одной темы на другую. Даже Брюс Ли боится не того, кто изучает 10 000 различных ударов, а того, кто изучает один удар 10 000 раз!
  4. Если ничего не понимаете — не огорчайтесь раньше времени. Я подступаюсь к этой теме далеко не в первый раз, но могу с уверенностью сказать, что с каждым следующим подходом становится проще и проще. Если вы все понимаете с первого раза — поздравляю! Если же нет — не расстраивайтесь, однажды вы обязательно решите и эту сложную задачу тоже. Попробуйте вернуться к более простым заданиям, и тренируйтесь, пока не почувствуете себя более уверенно.
  5. И мой последний лайфхак, конечно же, позвать на помощь ChatGPT. Мне не очень нравится использовать его прямо в качестве учителя (все-таки учебный материал, подготовленный людьми, усваивается гораздо лучше), но вот попросить нейросеть найти ошибку в вашем коде (или даже просто подтолкнуть вас к правильному решению) — бесценно. Все-таки увидеть готовый ответ к задаче — это не так полезно, чем довести до совершенства код, написанный самостоятельно.

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

А кто-то еще говорит — бесполезный скилл.

Аватар пользователя Вика Эф
Вика Эф 21 апреля 2023
10
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 28 ноября
профессия
от 14 960 ₸ в месяц
Ручное тестирование веб-приложений
4 месяца
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 28 ноября
профессия
от 24 542 ₸ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 28 ноября
профессия
от 28 908 ₸ в месяц
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 28 ноября
профессия
от 39 525 ₸ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 28 ноября
профессия
от 25 000 ₸ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Автоматизированное тестирование веб-приложений на JavaScript
8 месяцев
c опытом
Старт 28 ноября