Стоит ли решать задачи на 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);
};

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

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

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

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Начнете решать алгоритмические задачки?
66.67% Уже решал, и продолжу этим заниматься2
0% Начну0
33.33% Начну, но не на codewars1
0% Мне это не надо0
0% Не буду решать задачи0
Проголосовали 3 пользователя. Воздержался 1 пользователь.
Источник: https://habr.com/ru/articles/828048/


Интересные статьи

Интересные статьи

В работе на себя есть золотое правило: живи, где дешево, работай, где больше платят. Очевидно, что жизнь в Дубае не самая дешевая, но означает ли это, что фрилансеру тут будет не комфортно?Для торопыг...
После недавнего принятия 8-го пакета санкций ЕС, в рамках которого был введён запрет на пользование крипто кошельками и другими услугами криптосервисов для россиян, по криптосообществам прокатила...
Совершенный алгоритм. Алгоритмы для NP-трудных задач - четвертая и заключительная часть лекций от Тима Рафгардена.Для NP-трудных задач мы снова имеем треугольник, в котором дл...
Длительное время работая в IT рекрутменте не могла не заметить довольно яркую тенденцию - желание многих соискателей релоцироваться за границу. Я задалась вопросом, почему же такое происх...
Наша компания постепенно расширяется, у нас работает всё больше инженеров. А когда их много, надо как-то распределять права и доступы. Почему это важно? У нас есть большо...