0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Представим, что у нас есть фронтендер. Он или она в целом довольны своей жизнью, научились штамповать формы на React и закрывать вовремя задачи, в общем - их все устраивает. Но рано или поздно наш фронтендер начинает чувствовать, что чего-то не хватает. Новости о суперспособностях ChatGPT-4 начинают волновать нашего фронтендера, и чтобы почувствовать себя увереннее, приходится задуматься о своем дальнейшем развитии. И среди прочих buzzwords особенно мозолит глаза аббревиатура DSA, она же -<strong>Data Structures and Algorithms</strong>.</p>
1
<p>Представим, что у нас есть фронтендер. Он или она в целом довольны своей жизнью, научились штамповать формы на React и закрывать вовремя задачи, в общем - их все устраивает. Но рано или поздно наш фронтендер начинает чувствовать, что чего-то не хватает. Новости о суперспособностях ChatGPT-4 начинают волновать нашего фронтендера, и чтобы почувствовать себя увереннее, приходится задуматься о своем дальнейшем развитии. И среди прочих buzzwords особенно мозолит глаза аббревиатура DSA, она же -<strong>Data Structures and Algorithms</strong>.</p>
2
<p>Сначала наш фронтендер недоверчиво относится к такой идее. Можно же изучить что-то поинтереснее, например, новый фреймворк, удариться в fullstack, стать властелином CSS-анимаций, в конце концов.<strong>Зачем фронтендеру знать алгоритмы?</strong>В JavaScript есть sort(), есть find(), есть new Map(), да и насколько часто вам приходится по работе обходить дерево? Зачем тратить свое бесценное время на ненужный скилл?</p>
2
<p>Сначала наш фронтендер недоверчиво относится к такой идее. Можно же изучить что-то поинтереснее, например, новый фреймворк, удариться в fullstack, стать властелином CSS-анимаций, в конце концов.<strong>Зачем фронтендеру знать алгоритмы?</strong>В JavaScript есть sort(), есть find(), есть new Map(), да и насколько часто вам приходится по работе обходить дерево? Зачем тратить свое бесценное время на ненужный скилл?</p>
3
<p>Как бы то ни было, реальность жестока. Знание алгоритмов вам пригодится на собеседовании в любую из big tech компаний. Иногда от вас могут даже<a>не потребовать высшее техническое образование</a>- а вот об алгоритмах наверняка спросят. Даже если вы не собираетесь в big tech, ситуация на рынке такова, что вам придется посоперничать с<a>обладателями Computer Science degree</a>и попавшими под<a>layoffs</a>бывшими сотрудниками FAANG. Даже если вы не метите слишком высоко - разве не приятно на обычном собеседовании с уверенностью решить любую предложенную задачку? Да и в ежедневной работе иногда приходится столкнуться со сложной структурой ответа с бэкенда - и хорошо бы знать, как с ними работать.</p>
3
<p>Как бы то ни было, реальность жестока. Знание алгоритмов вам пригодится на собеседовании в любую из big tech компаний. Иногда от вас могут даже<a>не потребовать высшее техническое образование</a>- а вот об алгоритмах наверняка спросят. Даже если вы не собираетесь в big tech, ситуация на рынке такова, что вам придется посоперничать с<a>обладателями Computer Science degree</a>и попавшими под<a>layoffs</a>бывшими сотрудниками FAANG. Даже если вы не метите слишком высоко - разве не приятно на обычном собеседовании с уверенностью решить любую предложенную задачку? Да и в ежедневной работе иногда приходится столкнуться со сложной структурой ответа с бэкенда - и хорошо бы знать, как с ними работать.</p>
4
<p>В этом нам на помощь и приходят алгоритмы. Но встает очевидный вопрос -<strong>а как их учить</strong>? Разве это не тайное знание, доступное лишь людям с техническим складом ума? Но если вы все-таки освоили хотя бы базовый JavaScript, то наверняка и алгоритмы окажутся вам по плечу - как и в любом другом деле, упорство зачастую оказывается куда важнее таланта.</p>
4
<p>В этом нам на помощь и приходят алгоритмы. Но встает очевидный вопрос -<strong>а как их учить</strong>? Разве это не тайное знание, доступное лишь людям с техническим складом ума? Но если вы все-таки освоили хотя бы базовый JavaScript, то наверняка и алгоритмы окажутся вам по плечу - как и в любом другом деле, упорство зачастую оказывается куда важнее таланта.</p>
5
<p>Я не считаю себя гуру алгоритмов (я не волшебник, я только учусь), но буду рада поделиться своим<strong>подходом к изучению алгоритмов и структур данных</strong>.</p>
5
<p>Я не считаю себя гуру алгоритмов (я не волшебник, я только учусь), но буду рада поделиться своим<strong>подходом к изучению алгоритмов и структур данных</strong>.</p>
6
<ol><li><strong>Не идите на медведя с голыми руками</strong>. Если вы не знаете об алгоритмах ровным счетом ничего, не бегите первым делом щелкать задачки на Leetcode, потому что почти наверняка быстро разочаруетесь. Мои любимые источники теории -<strong>курсы с YouTube</strong>, где подробно разбирают отдельные задачи (их много, так что найдите преподавателя, который нравится именно вам), курс с Хекслета "<a>Основы алгоритмов и структур данных</a>", и, конечно же, книга "<strong>Грокаем алгоритмы</strong>" - у автора книги даже есть<a>репозиторий на GitHub</a>с примерами кода из книги на разных языках (JavaScript там тоже есть). Можно (и нужно) учиться по нескольким источникам одновременно. Главное здесь - обязательно пробуйте сами воспроизводить решения задач, иначе ничего не запомните.</li>
6
<ol><li><strong>Не идите на медведя с голыми руками</strong>. Если вы не знаете об алгоритмах ровным счетом ничего, не бегите первым делом щелкать задачки на Leetcode, потому что почти наверняка быстро разочаруетесь. Мои любимые источники теории -<strong>курсы с YouTube</strong>, где подробно разбирают отдельные задачи (их много, так что найдите преподавателя, который нравится именно вам), курс с Хекслета "<a>Основы алгоритмов и структур данных</a>", и, конечно же, книга "<strong>Грокаем алгоритмы</strong>" - у автора книги даже есть<a>репозиторий на GitHub</a>с примерами кода из книги на разных языках (JavaScript там тоже есть). Можно (и нужно) учиться по нескольким источникам одновременно. Главное здесь - обязательно пробуйте сами воспроизводить решения задач, иначе ничего не запомните.</li>
7
<li>При этом<strong>не пытайтесь запоминать код</strong>. Мне понравился такой совет - попробуйте своими словами описать принцип работы алгоритма и запомнить именно его, чтобы при необходимости воспроизвести его по шагам. Думаю, если собеседующий увидит, что вы понимаете подход, но где-то упустили переменную - вас поправят, но ругать никто не станет. Некоторые даже делают Anki-карточки для запоминания алгоритмов и структур данных - хочу попробовать сделать так тоже.</li>
7
<li>При этом<strong>не пытайтесь запоминать код</strong>. Мне понравился такой совет - попробуйте своими словами описать принцип работы алгоритма и запомнить именно его, чтобы при необходимости воспроизвести его по шагам. Думаю, если собеседующий увидит, что вы понимаете подход, но где-то упустили переменную - вас поправят, но ругать никто не станет. Некоторые даже делают Anki-карточки для запоминания алгоритмов и структур данных - хочу попробовать сделать так тоже.</li>
8
<li>Не ограничивайтесь одной теорией, но и<strong>не практикуйтесь бездумно</strong>. Мне нравится такой<a>roadmap</a>от одного ютубера - он помогает постепенно перейти от простых тем к более сложным, а еще по каждой теме есть отдельный список задач. На том же Leetcode есть множество тематических списков (вот, например, по<a>рекурсии</a>) - как по мне, лучше увидеть несколько применений одного алгоритма и полностью в нем разобраться, чем постоянно переключаться с одной темы на другую. Даже Брюс Ли боится не того, кто изучает 10 000 различных ударов, а того, кто изучает один удар 10 000 раз!</li>
8
<li>Не ограничивайтесь одной теорией, но и<strong>не практикуйтесь бездумно</strong>. Мне нравится такой<a>roadmap</a>от одного ютубера - он помогает постепенно перейти от простых тем к более сложным, а еще по каждой теме есть отдельный список задач. На том же Leetcode есть множество тематических списков (вот, например, по<a>рекурсии</a>) - как по мне, лучше увидеть несколько применений одного алгоритма и полностью в нем разобраться, чем постоянно переключаться с одной темы на другую. Даже Брюс Ли боится не того, кто изучает 10 000 различных ударов, а того, кто изучает один удар 10 000 раз!</li>
9
<li>Если ничего не понимаете -<strong>не огорчайтесь раньше времени</strong>. Я подступаюсь к этой теме далеко не в первый раз, но могу с уверенностью сказать, что с каждым следующим подходом становится проще и проще. Если вы все понимаете с первого раза - поздравляю! Если же нет - не расстраивайтесь, однажды вы обязательно решите и эту сложную задачу тоже. Попробуйте вернуться к более простым заданиям, и тренируйтесь, пока не почувствуете себя более уверенно.</li>
9
<li>Если ничего не понимаете -<strong>не огорчайтесь раньше времени</strong>. Я подступаюсь к этой теме далеко не в первый раз, но могу с уверенностью сказать, что с каждым следующим подходом становится проще и проще. Если вы все понимаете с первого раза - поздравляю! Если же нет - не расстраивайтесь, однажды вы обязательно решите и эту сложную задачу тоже. Попробуйте вернуться к более простым заданиям, и тренируйтесь, пока не почувствуете себя более уверенно.</li>
10
<li>И мой последний лайфхак, конечно же,<strong>позвать на помощь ChatGPT</strong>. Мне не очень нравится использовать его прямо в качестве учителя (все-таки учебный материал, подготовленный людьми, усваивается гораздо лучше), но вот попросить нейросеть найти ошибку в вашем коде (или даже просто подтолкнуть вас к правильному решению) - бесценно. Все-таки увидеть готовый ответ к задаче - это не так полезно, чем довести до совершенства код, написанный самостоятельно.</li>
10
<li>И мой последний лайфхак, конечно же,<strong>позвать на помощь ChatGPT</strong>. Мне не очень нравится использовать его прямо в качестве учителя (все-таки учебный материал, подготовленный людьми, усваивается гораздо лучше), но вот попросить нейросеть найти ошибку в вашем коде (или даже просто подтолкнуть вас к правильному решению) - бесценно. Все-таки увидеть готовый ответ к задаче - это не так полезно, чем довести до совершенства код, написанный самостоятельно.</li>
11
</ol><p>Вот и все. Ну и последний аргумент, чтобы убедить вас начать изучать алгоритмы: так мы не только готовимся к тому, чтобы стать незаменимым специалистом, но и<a>снижаем риски возникновения болезни Альцгеймера</a>.</p>
11
</ol><p>Вот и все. Ну и последний аргумент, чтобы убедить вас начать изучать алгоритмы: так мы не только готовимся к тому, чтобы стать незаменимым специалистом, но и<a>снижаем риски возникновения болезни Альцгеймера</a>.</p>
12
<p>А кто-то еще говорит - бесполезный скилл.</p>
12
<p>А кто-то еще говорит - бесполезный скилл.</p>