Стоит ли решать задачи на Codewars? Или как я полюбил алгоритмы

от автора

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

Ремарка, codewars можно заменить на другой ресурс, но я все решаю на codewars.

Начнем с небольшой вводной информации: Я — Frontend разработчик с опытом около 4 лет, и за это время алгоритмы в чистом виде мне ни разу не пригодились, ну почти, собеседования не считаем. Получается на этом можно закрыть обсуждение с заключением, что алгоритмы для frontend не нужны, а я не могу рассуждать о более сложных материях. Спасибо за внимание…….

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

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

Резюмируем ошибки:

  1. Надежда, что чтение литературы, просмотр видео и так далее как то поможет улучшить свой навык

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

  3. Желание увидеть результат здесь и сейчас

А как в этом поможет codewars? Ну если заходить на него раз в неделю, решать одну задачу 8 каты (самые простые) то результата почти не будет, но если взять за привычку решать одну задачу в день, желательно разных уровней сложности, а потом смотреть несколько решений от других авторов, и попытаться понять почему это решение более эффективно, а потом еще и переделать задачу с новыми знаниями, и так у вас появится небольшое хобби, на 15–20 минут в день, которое через пару месяцев сделает из вас, гения алгоритмов, поправочка, эта привычка сделает ваш код немного эффективнее, и прокачает ваше понимание как сделать лучше и быстрее, вы лучше узнаете конструкции и возможности языка, я больше половины методов JavaScript использовал в первый раз именно при решении задач на codewars. Но есть один нюанс про который я должен сказать, для лучшего понимания что вообще происходит, и как понять какой алгоритм лучше или хуже, советую прочитать книгу «Грокаем алгоритмы», это даст вам базовые знания об алгоритмах, не умение их применять, а понимания для чего их применять, и как строятся алгоритмы. Прочтение книги уберет стеклянный потолок под котором вы можете оказаться. Если не хочется читать всю книгу, то прочтите хотя бы первые четыре главы, это около 80 страниц.

И как же сталь лучше в алгоритмах:

  1. Читаем «Грокаем алгоритмы»

  2. Решаем одну задачу в день на Codewars

  3. Повышаем уровень сложности, личная рекомендация, решайте задачи 8–5 каты, более сложные задачи немного теряют связь с реальностью.

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

Задача: Вам будет предоставлен массив a и значение x. Все, что вам нужно сделать, это проверить, содержит ли указанный массив значение. Массив может содержать числа или строки. X может быть любым из них. Верните значение true, если массив содержит значение, и значение false, если нет.

Первое решение:

function check(a,x){     for (let i=0; i < a.length; i++){       if (a[i]==x){         return true        }     }   return false }

Второе решение:

function check(a,x){   return a.includes(x); };

Этим примером я выкопал для себя небольшую яму, так как эксперты алгоритмов могут сказать, что это и не алгоритмы вовсе, просто метод языка, где тут алгоритмы? И в какой то мере будут правы, но наша работа связанна не с придумыванием сверх сложных конструкций, а связанна с поиском оптимального решения, и алгоритмы должны помогать нам делать код проще, понятнее и быстрее, а не создавать сложные конструкции, которое уже вряд ли кто то сможет понять.

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

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

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

Начнете решать алгоритмические задачки?

57.62% Уже решал, и продолжу этим заниматься87
23.18% Начну35
7.95% Начну, но не на codewars12
6.62% Мне это не надо10
4.64% Не буду решать задачи7

Проголосовал 151 пользователь. Воздержались 13 пользователей.

ссылка на оригинал статьи https://habr.com/ru/articles/828048/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *