Я поняла, что учусь эффективнее, если периодически отклоняюсь от программы, чтобы осмотреться в смежных темах. Это помогает лучше увязывать новые знания с жизнью.
Последовательность vs. работа на опережение
Например, мне очень нравится Хекслет в связке с Codewars. На Хекслете все очень подробно, последовательно и системно, и это просто дофаминовый рай. Задания в рамках курсов и испытаний всегда учитывают, что студент знает на данный момент, а что нет. И каждая решенная задача приносит чистое удовольствие: вот я не умела и уже умею.
На Сodewars все по-другому. Там, конечно, есть возможность выбирать задачи по теме и по уровню сложности, но я использую метод по умолчанию — автоматический рандом с легкой поправкой на уровень уже решенных задач, естественно в сторону усложнения. Практика показала, что даже базовых знаний Python (в рамках первого блока на Хекслете) для решения задач достаточно. Просто приходится много выкручиваться или, наоборот, решать слишком уж в лоб.
Поэтому сервис иногда сам просит меня оптимизировать решение, но чаще всего мне просто становится стыдно, когда я сравниваю свое решение с лучшими решениями этой задачи от других людей. И вот за это я Codewars люблю. Не то, чтобы мне очень нравилось страдать после каждой решенной задачки, просто это задает перспективу и идет работа на опережение: у меня создается ощущение нехватки определенных знаний. После такой встряски нежная и последовательная подача этих знаний на Хекслете воспринимается с ещё большей благодарностью.
Теория переводит навыки на следующий уровень
Например, как это работает. Именно Codewars заставил меня обратить внимание на то, что не всякое решение — это хорошее решение. И я поняла, что совершенно ничего не знаю о вездесущих алгоритмах, их сложности и оптимизации. И тут выручил Хекслет.
Я люблю просматривать списки доступных курсов, и недавно нашла в Песочнице курс по «Введению в алгоритмы для Python». Он помечен как устаревший и больше не поддерживается, но для меня оказался очень полезным. Этот курс наглядно показывает, в чем суть оптимизации и почему одни алгоритмы лучше других. Курс теоретический, и мои знания Python от него не улучшились (поэтому Codewars пока на том же уровне), изменилось другое. Уже после половины курса я чувствую, как много непонятных моментов по работе уложилось в систему и разрешилось.
Как аналитик, я часто работаю с базами данных. И, например, раньше я не понимала, зачем оптимизировать SQL-запросы, чем так плохо использование команд сортировки в них и когда вообще их можно применять, а когда нет. Теперь же я, как минимум, знаю, что для обычных полей в базе данных сортировка происходит линейным методом, что очень затратно при больших массивах данных. Зато для проиндексированных полей сортировка происходит двоичным методом и не требует практически никаких дополнительных ресурсов. (Про индексацию я знала, про её эффекты не задумывалась.) Кроме того, теперь я понимаю, что поля с часто интересующими меня показателями и нужно индексировать, а это уже оптимизация всей БД.
Итог
В общем, Codewars помог мне увидеть проблему, а Хекслет помог решить её быстро и легко. Тот же курс по алгоритмам и оценке их сложности оказался мне полезен в текущей работе. Плюс в будущем, благодаря нему, я уверена, мне будет сильно интереснее разбираться в более сложных структурах данных и алгоритмах Python уже на практике.
Но, конечно, такие отклонения от программы полезны, только когда эта программа есть, иначе можно годами «исследовать мир», никуда толком не продвигаясь.