Hexlet projects. part 1.

О чем это

На моем любимом портале по изучению программирования hexlet появился новый тарифный план включающий в себя “проекты” в рамках одной из профессий Бэкенд JS-программист.
Недолго поразмыслив я решил перейти на этот тарифный план (120$ в месяц), так как мне нужен реальный опыт разработки проектов + это формирует портфолио, так как весь код идет на github.
Проекты состоят из 5 уровней, каждый из которых будет доступен по прохождению части курсов, перерывы между проектами 2 недели. Сам проект с дедлайном и длится 7 дней. Вчера закрыл 1 уровень и решил написать отзыв.

Окружение

Первые несколько этапов состояли из корректной настройки окружения, а также формирования корректной структуры проекта. Это были действительно очень полезные знания, специфика разработки на JS не так проста, поэтому приобретенные навыки я думаю пригодиться мне везде в дальнейшем пути и на будущей работе.
Во время подготовки к проекту разобрался с Vagrant (на виртуалке которого собственно вначале тестил этот блог). Очень хочется еще разобраться с Ansible для написания playbook-ов с конфигурациями, но так как в целом мое локальное окружение (OS X) позволяло мне адекватно работать и без виртуалок решил отложить, чуть позже пройду курс на том же hexlet.
В рамках первых частей проекта я изучил:

  • git – я думал что знаю что то про git, но когда начинаешь сталкиваться с реальной работой оказывается знаний недостаточно, так что неплохо разобрался в разных мелких проблемах возникающих при стандартных операциях работы с git. Парочка полезных статей, которые пригодились: раз и два
  • npm – так как npm сейчас является стандартом де факто в JS и в бекэнд и во фронтэнд разработке при работе с модулями, то эти знания тоже очень полезны, наконец то научился работать с package.json (раньше всегда в ручную ставил пакеты) – оказался очень функциональный файл. А так же опубликовал свой первый пакет в npm. Полезные статьи для работы с npm: раз и два. Еще очень полезным было понимание разницы между devDependencies и dependencies.
  • Make – совершенным открытием стало использование утилиты Make для различных действий, которые никак не связаны с компиляцией, очень мощный инструмент. Если бы раньше знал о нем, много вещей упростил во время работы в администрировании. Вот видео раскрывающее тайны :)
  • Travis – шикарный инструмент для автоматизации тестирования и деплоя вашего кода, работает непосредственно с гитхаб, а всю статистику можно увидеть прямо в браузере. В рамках проекта мы цепляли к нему только eslint, но в любом случае знакомство состоялось.
  • babel – инструмент без которого в js никуда, тоже раньше не работал с ним, научился настраивать и подключать его к коду. Babel это транспайлер современного EСMA в понятный для текущей версии интерпретатора синтаксис (node.js или например браузер)
  • eslint – eslint я уже пользовался, но кое что новое все же узнал, например о .eslintignore, настройкой путем YAML файла конфигурации, а так же совместной работой с babel.
  • code climate – интересный инструмент, проводящий автоматизированные код-ревью (работает с github репозиториями)
  • Flow – очень мощный инструмент, с которым до конца еще не разобрался, занимается проверкой типизации вашего кода, умеет либо просто находить ошибки типов или работать в более расширенном режиме flowtyped где вы вручную можете указывать типы данным.

Точка входа

После знакомства с инструментарием и настройкой окружения мы приступили непосредственно к написанию кода. Можно было задавать вопросы в специальных формах в разделе проектов на сайте (как приватные вопросы ментору по каждому шагу так и общие, на которые могут ответить другие участники проектов), а так же активное общение шло в нашем слаке. Ментор на проект только один, в данном случае это был создатель проекта Кирилл, очень старался помогать всем и со всем, но возможно не всегда хватало времени и возможности ответить всем, так как потом вопросов и пул реквестов валился очень большой. С одной стороны в начале не хватало какого то личного наставника с которым например по скайпу или в привате общаешься, но немного подумав позже я понял что это скорее плюс нежели минус, потому что умение разбираться с проблемами самому – очень нужный навык, особенно для разработчика.
Сами задачи на первый взгляд были не очень сложными (ведь все это я уже делал, думал я), но когда ты начинаешь делать это не в рамках курсов, а просто с нуля сам, это совсем другие ощущения, так как “навыков проектирования” (не уверен в верной формулировке, но для себя это назвал так) нету совсем в итоге сидишь и думаешь с какого конца подступиться.

Кочки и камни

В итоге первый блин кода был конечно же комом, так как я утыкал все условными конструкциями и циклами, что конечно даже я понимал ужасно. Ментор развернул меня и направил мой взор в сторону функций, тут уже пошло получше. Цель была написать простенькую игру с заданными условиями. После выполнения задачи начался второй этап, где нужно было написать похожую игру но с другими условиями и необходимо было выделить каркас игры отдельно в index.js файл, а сами игры должны были быть отдельными модулями, которые формировали свои условия. Вот тут начался полный тупняк. Так еще сложилось что я писал все это сидя на чемоданах в Лиссбоне в Cтарбаксе, почти целый день у меня ушел на переписывания моей первой части и доведения до ума всей этой концепции единого каркаса. Дальше еще три игры я дописывал в аэропорту, в самолете и на временной квартире в Москве – ощущения незабываемые :)
Но зато в голове стойко закрепились мысли о том где нужно делать определения функций, а где вызовы, что нельзя городить кучу внутренних вложений функций, а определять их плоско в рамках модуля, о бинарниках, которые совершенно не должны касаться кода, а лишь являются исполняемыми файлами с необходимым импортом, и еще много полезных дырок в основах, закрытых в рамках разбирательств.

to be continued

В итоге у меня получился вот такой репозиторий c 57 коммитами и 15 пулреквестами. Мой код еще очень далек от идеала, но он точно намного лучше чем то что я написал вначале, огромное спасибо hexlet и конкретно Кириллу за это. Буду с нетерпением ждать 2 уровня проектов (который начинается 23 января) и отпишу новый отзыв по нему. Единственное что немного пугает во 2 уровне, что вроде как проверка уже будет автоматизированной, а не ручной и боюсь не увидеть много своих ошибок, надеюсь этот вопрос будет как то решен.

Share
Send
2017   hexlet   it   programming   study
Your comment
won’t be published

HTML will not work

Ctrl + Enter