Введение
В сообществе программистов постоянно происходят споры по поводу алгоритмов. Половина людей утверждает, что их не надо учить, потому что в работе их явно никто не использует, а другая часть говорит, что алгоритмы необходимы. В последнее время я начал придерживаться второй точки зрения. Так давайте разбирать, чем алгоритмы так полезны и почему стоит хоть изредка порешивать подобные задачи.
Чему нас учат алгоритмы?
Умение мыслить алгоритмически
Разработчики, как ни странно, пишут алгоритмы каждый день. Это не какие-то академические задачи, а всем понятные бизнес-кейсы. Логика обработки запроса пользователя - это же тоже некий алгоритм, поэтому навык мыслить не просто словами, а именно алгоритмами пригодится каждый день. Решая задачи на leetcode, вы неявно вырабатываете в себе этот навык. Вы начинаете быстрее находить подходы к задачам, видеть паттерны. Это может ускорить вашу работу над задачами на работе.
Чтение и понимание кода "на глаз"
Вы можете сказать, почему я не могу просто запустить дебаггер и пройтись по коду с его помощью. Зачем мне тратить время на то, чтобы самому строчка за строчкой проходиться по коду и его отлаживать?
Да, все современные IDE имеют такой прекрасный инструментарий, но если ваш проект очень большой и его запуск занимает хотя бы 2 минуты, то ради отладки новой строчки, вы каждый раз будете ждать. А можно просто пробежаться глазами по коду, всё понять и быстро его поправить. Ваше рабочее время сэкономлено и вы можете успеть сделать больше задач за день.
Анализ краевых случаев
Довольно часто задачки не проходят проверки по причини отсутствия обработки пустого массива или нулевого указателя. После парочки таких недочётов, вы станете их предвидеть и мыслить шире. Это будет полезно на работе, ведь количество ошибок и багов уменьшится, что снизит время на их нахождение.
Ваши программы станут действительно эффективнее
Довольно часто разработчики выделяют дополнительную память, хотя можно обойтись и без этого. Такое потребление ресурсов стоит денег, ведь большинство компаний арендуют сервера, где каждый гигабайт оперативки стоит денег. Да даже если свой собственный сервер, то увеличение памяти не происходит бесплатно. Таким образом, эффективный по памяти и времени алгоритм не только проходит все тесты на leetcode, но и экономит деньги компании. То есть ваши навыки могут приносить ещё больше прибыли.
Пройти собеседование в топовую компанию
Несмотря на все неявные преимущества знания алгоритмов, большинство разработчиков начинают прокачивать себя в этой сфере только ради того, чтобы пройти собеседование. Но ведь не зря большие команды устраивают такой отбор. Разработчик без знания алгоритмов будет приносить меньше прибыли, чем с их знанием. Ну а ещё им же нужно как-то отсеять всех желающих и набрать себе только самых лучших.
Итог
Решать задачки на алгоритмы не только полезно, но и весело. Существует огромное множество олимпиад, на которых вы можете вместе с друзьями посоревноваться с другими энтузиастами. Кроме того, это очень сильно прокачает ваш мозг, вы сможете открыть новые вычислительные ресурсы в нём.
Не бойтесь решать задачи, ведь что нас не убивает, добавляет ещё одну строчку в резюме.