Так получилось, что на прошлой неделе у меня практически не было возможности нормально заняться учебой и похвалиться было особо даже нечем, по крайней мере, на полноценный пост материала точно не хватало. Поэтому я решил объединить две записи в одну и рассказать здесь о том, что я успел за все это время.
Как я уже говорил, в начале прошлой недели я собирался полностью погрузиться в прохождение курсов на Хекслете. Но для начала я решил, что неплохо было бы немного повторить уже изученный материал, поскольку с момента моей последней активности на сайте прошел почти целый месяц. Поэтому в свободное от работы время я начал потихоньку просматривать видеоуроки из курсов, которые уже успел пройти, а именно: JS: Составные данные
, JS: Последовательности
, JS: Программирование, управляемое данными
и JS: Коллекции
. После просмотра каждого урока я стал открывать задания и просматривать свои уже готовые решения, но тут меня ждал откровенный облом: внезапно я осознал, что вообще не в состоянии понять, как работает мой собственный код! Такое впечатление, будто я видел его впервые в жизни. Я просто не могу передать словами то, что творилось у меня в голове в тот момент. Задание за заданием я продолжал пребывать в полнейшем ступоре и чем дальше, тем больше я стал погружаться в отчаяние.
Для полноты картины стоит, наверное, добавить, что примерно в это же время мне пришлось перенести сложное удаление зуба. Примерно в течение часа живодер доктор пытался поломать его всевозможными приспособлениями, включая даже шило (о_0), а затем извлекал осколки один за другим, изрядно расковыряв там все, что можно. Как и следовало ожидать, на следующий день все это дело инфицировалось, воспалилось и заболело так, что мама дорогая! Чтобы хоть как-то продолжать жить и работать, я был вынужден закидываться просто неимоверным количеством всевозможных болеутоляющих средств. Подозреваю, что по большей мере именно из-за них мне было так сложно сосредоточиться на учёбе и что-либо понять. Все это время мое сознание было каким-то затуманенным и я был просто не в состоянии сконцентрировать свое внимание на чем-либо. В общем, ощущение не из приятных. Да и боль сама по себе отвлекает в немалой степени, заставляя все время думать только о ней, а не об учёбе. Сейчас уже, слава богу, чувствую себя получше, пью гораздо меньше таблеток и голова потихоньку проясняется.
В любом случае, время уходило и надо было срочно принимать решение, что предпринимать дальше. Я связался с Кириллом и он посоветовал пока что оставить курсы в покое и сосредоточиться на теме алгоритмов, поскольку данная тема является архиважной: как в дальнейшей работе, так и на собеседованиях. Никто не требует, чтобы я знал наизусть всего Кормена и был готов — разбуди меня посреди ночи — набросать на салфетке 5 видов сортировки. Но я должен хорошо ориентироваться хотя бы в базовых алгоритмах, иметь понятие о временной сложности и знать, как выбирать тот или иной алгоритм в зависимости от ситуации, уметь работать со списками и обрабатывать деревья.
Поэтому на данный момент я полностью погрузился именно в тему алгоритмов. Начал с книги Адитьи Бхаргавы “Грокаем алгоритмы”. Книга очень крутая и понятная, написана специально для новичков и представляет собой иллюстрированное пособие (автор является сторонником визуальной подачи информации). Несмотря на её кажущуюся простоту и относительно небольшой объем, книга охватывает огромное количество важных тем. Конечно, сильного углубления в каждую из тем не происходит, но ведь по сути, это лишь вводное пособие, вслед за которым уже можно углубляться в более серьёзную литературу.
Все примеры кода в книге даются на языке Python, однако на гитхабе автора имеется специальный репозиторий, где все те же примеры реализованы на многих других языках: таких, как Java, C#, PHP, Ruby и других. Ну и конечно же, на моём родном JS :) Посоветовавшись с учителем, я решил, что сейчас не стоит терять время, пытаясь вникнуть в код на пайтоне. Конечно же, очень важно знать и работать с как можно большим количеством языков, дабы избегать деформации в мышлении и Кирилл в дальнейшем планирует погружать меня в другие языки для общего развития, но пока что стоит сосредоточиться на главном, меньше отвлекаясь на детали. Поэтому я поступил следующим образом: форкнул себе репозиторий с кодом, клонировал его локально себе на комп и теперь разбираюсь в примерах сразу на джаваскрипте, попутно переписывая код со старого синтаксиса на более знакомый мне ES6. Если все получится хорошо — а у меня получится — то потом сделаю пул-реквест и предложу автору своё дополнение. Таким образом, у меня заодно ещё и есть шанс поучаствовать в реальном опенсорсном проекте :)
Кстати, для локальной работы с кодом я наконец-то нашёл время и худо-бедно настроил под себя редактор Atom
, которым до этого вообще практически не пользовался. Правда, полдня пришлось провозиться с линтером Eslint, чтобы заставить его, наконец работать и указывать на ошибки в реальном времени. Конечно, я еще не до конца разобрался в том, как работать с его конфигурационным файлом и осуществлять тонкую подстройку линтера под собственные нужды, но, по крайней мере, хоть как-то работает, — уже хорошо. В общем, потихоньку разбираюсь в работе редактора, нахожу каждый день какие-нибудь новые полезные фишки, упрощающие работу с кодом.
Ещё одной полезной находкой для меня стал сервис Coggle, позволяющий строить интеллект-карты в онлайн режиме и делиться ими с остальными. Инструмент очень продуманный содержит в себе много полезных плюшек: таких, как возможность совместного редактирования, историю изменений, а также код для вставки карты в страницу собственного сайта. В продвинутой версии присутствует намного больше возможностей, но мне для моих целей вполне хватает и того, что предлагает бесплатная версия.
Познакомившись поближе с Coggle, я понял, что это просто идеальный инструмент для конспектирования книг и мною было принято решение отныне создавать карту по каждой прочитанной книге, сохраняя в удобной форме все главные идеи, дабы в будущем всегда иметь возможность вернуться и быстро повторить пройденное. Надеюсь, это будет полезно не только мне, но и всем остальным.
Поделюсь тем, что я уже успел сделать на данный момент (комментарии приветствуются):
Карта еще не полная, но по мере прочтения книги буду добавлять сюда новую информацию.
Продолжаю слушать во время работы тематические подкасты. Прослушал уже все 48 выпусков RadioJS, имеющиеся на данный момент и теперь принялся за Веб-стандарты. Эти ребята более продуктивные: выходят четко каждую неделю и за полтора года успели записать уже 70 выпусков, так что мне хватит еще надолго). Хорошо бы было найти еще что-нибудь хорошее и несложное из подкастов на английском, чтобы учиться воспринимать речь на слух. Если можете что-нибудь посоветовать — пишите в комментариях к посту или в личку, буду вам за это очень благодарен.
На этом пока что, наверно, все. Успел не так уж и много, но с другой стороны, если учитывать обстоятельства и острую нехватку времени, то все довольно таки неплохо. Буду и дальше продвигаться в своём тихом темпе, стараясь прилагать максимум усилий, а терпение и труд, как говорится, все перетрут :)
А пока что, всем пока и до встречи на следующей неделе!