Привет, я Дмитрий Канаев, Backend NodeJS разработчик, представляю IT сообщество Работяги. В этом сообществе ты можешь поделиться своими проблемами в разработке и найти ответы на интересующие тебя вопросы из сферы IT. Ссылки на наши другие ресурсы вы можете найти в профиле нашего канала или в конце этой статьи.
Множество копий было сломано в холиварных битвах на тему «Нужно ли все-таки разработчику решать алгоритмические задачи», сгенерированы сотни статей и выдвинуты тысячи точек зрения на этот вопрос. Но он все равно с завидной регулярностью посещает как меня, так и моих товарищей. В этой статье я попробую ответить на вопрос, нужно ли решать алгоритмические задачки на известных площадках, если нужно – то, кому, а также немного поделюсь своим опытом в этом и расскажу о своем пути.
Итак, алгоритмические задачи. Кто-то считает их бесполезной тратой времени, кто-то топит за то что они должны быть единственным и самым верным способом определения уровня разработчика. Я придерживаюсь в этом вопросе позиции примерно посередине. Если вы спросите: «Нужно ли решать алгоритмические задачки разработчику» - я отвечу однозначно «Да». При этом важным уточнением которое я считаю необходимым отметить - для получения максимального эффекта делать это нужно уже обладая некоторым багажом опыта в промышленной разработке. То есть, на мой взгляд, человеку, который только начал изучать основы программирования, решение подобных задач принесет больше вреда, чем пользы, отвлекая его внимание от изучения базовых конструкций в сторону поиска не всегда очевидных решений.
Сам я пришел к решению алгоритмических задачек спустя лишь полтора года после начала моей работы на текущем стеке (Backend NodeJS). Это было не столько вынужденным решением для подготовки к собеседованиям, сколько способом сохранять ежедневный тонус мозга, в условиях когда основная масса рабочих задач превратилась в рутину.
Начинал я естественно с самой раскрученной платформы, LeetCode. Но со временем понял, что мне не очень нравятся задачки, которые там приведены. Они как будто бы рафинировано-алгоритмические, т.е. нацелены именно на развития умения решать определенный класс задач, а в прикладной области эти знания мало применимы.
После этого я перешел на площадку Codewars. Хочу сказать, что хотя я и поймал на ней ограничения, связанные с политическими мотивами, но задачи, которые публикуются на ней – мне ближе по духу, так как они более прикладные. Особенно, это касается задач самого легкого уровня - 7-8 кю. В отличие от LeetCode задачи этого уровня можно смело рекомендовать в качестве удобного тренажера по стандартной библиотеке того или иного языка для начинающих разработчиков. Задачи этого уровня реализованы таким образом, что они скорее не требуют придумать оригинальный алгоритм или модификацию существующего, а направлены на использование максимально стандартных средств языка в немного нестандартных условиях.
Однако это не значит, что этот уровень будет бесполезным для уже опытных разработчиков. Например, я, решая задачи этого уровня, сконцентрировался на получении максимально короткого решения. Это очень интересно и хорошо прокачивает изучение стандартной библиотеки языка. Я поймал себя на мысли что в повседневной работе мой код также стал лучше, в связи с тем, что я перестал бездумно тащить в него зависимости, а стал внимательнее изучать возможность решения той или иной задачи стандартными методами языка.
Резюмируя все вышесказанное можно подвести краткий итог – решать алгоритмические задачки нужно, но подходить к этому надо осознанно и желательно имея некоторый практический опыт разработки – в таком случае это может дать ощутимый буст вашим навыкам написания кода. Новичкам и начинающим же это можно рекомендовать только в случае реально сильного интереса к теме и наличие некоторой языковой базы, в противном случае дополнительная нагрузка будет отвлекать от изучения базовых концепций языка и инструментов работы с ним.
Ссылки на наши ресурсы – ниже:
https://www.youtube.com/@Rabot9gi