on
SMART, Ruby и Docker
Что теперь делать то?
Я определился с инструментами которые на мой взгляд, мне потребуются как программисту. А где брать материал? Как определить, что вот если я могу сделать “a” и “b” значит я освоил этот инструмент на достаточном уровне.
Для того чтобы это понять я стал ходить на собеседования и брать отовсюду тестовые задания. Оказалось что практически везде помимо самого языка/технологии/феймворка меня спрашивают как работать с БД, как проектировать структуру и как строить запросы сквозь несколько таблиц. В целом задания достаточно типичные - сделать блог или простой сервис, но везде есть свои нюансы:
- Срок - как правило работадатель оценивает такие задачи примерно в 8 рабочего времени. Однаком мне для чтения документации, просмотра видео-метариалов, построения типовые примеров, добавления работы с базой данных может потребоваться целый месяц!!! И это какая то грусть…
- Инcтрументы - кто то просит блог на Yii, кто то на чистом PHP, кому то надо распарсить HTML страницу или написать что то на Java и все это для меня разные вещи, для освоения которых нужно время.
- Технологии которые использует компания - тут уже моя предвзятость - можно пойти стажером на 1С-Битрикс, попытаться писать на Angular или писать на старой версии PHP - но почему то мне этого не хочется, может я и не прав и первичный опыт нужно получать в любом месте и не важно на чем.
- ЗП - тут все просто, я понимаю что при переходе на новую деятельность просадка по деньгам неизбежна, но на падение зп в 2 раза и увеличения транспортных расходов сложно решиться.
Для того чтобы понять как все таки делаются эти типовые задания я прошел Базовый гайд по рельсам и в довесок к нему курс на хекслете по Ruby чтобы познакомиться с синтаксисом. Курс достаточно поверхностный, но он дает первичное представление о языке. Немного смутили блочные конструкции, однако в целом язык порадовал немногословностью и практически отсутствием пунктуации. При прохождении я испытал двоякое чувство, с одной стороны в рельсах все как то просто - вот моделька, вот контроллер, вот вьюха, вот так просто подключается бд. С другой стороны я не знаю что происходит под капотом и все это выглядит для меня достаточно “магично”. Теперь я примерно понимаю почему на такие тестовые задания дается пару дней (по крайней мере на рельсах) - все делается быстро и просто (осталось самое “простое” - научиться). Тут же я с болью вспоминаю как я пытался консольную утилиту на NodeJs заставить писать в базу через ORM Sequelize…
Так же я уcпел пройти JS: HTTP Server, курс достаточно простой на первый взгляд и содержит не много практики, там строится свой простой веб-сервер - приложение отвечающее на запросы. Так же уделяется внимание иструментам - CURL, nodemon. В планах выложить это на github чтобы информация лучше усвоилась.
Ещё я успел познакомиться с Docker - интересный инструмент по сути позволяющий запускать процессы в изолированном окружении с ограниченными ресурсами. Тут мне в этом помогли:
- Первые 2 раздела Курса по распределенным вычисления от Stepik
- Видео от Кирилла Введение в Docker
- Ещё есть статья от Рахима C нуля до кластера на AWS - но не смог её пройти - возникли проблемы с подтверждением своего аккаунта на Амазоне
Нужно будет ещё дополнить знания по docker-compose.
В итоге я “докеризировал” первый проект по NodeJs - Brain games - теперь чтобы просто его запустить нужно поставить Docker и выполнить :
docker run -it --rm rende11/brainjs
Эта команда скачивает образ из удаленного хранилища (если его нет) и запускает из него контейнер с “игрой”, после завершении игры контейнер удаляется
Как понять достиг ты цели или ещё нет?
Для каждого человека этот критерий индивидуален и зависит от его уровня и требований которые он применяет к конечному результату.
Тут я воспользуюсь советом от b0noI - ваши цели должны соответствовать SMART, быть конкретизированными, реальными, с понятным критерием достижения и ограничением по времени (последнего мне явно не хватает) - что это такое описано тут:
Дальнейшие планы такие:
- Сделать 2 тестовых на PHP - до состояния когда их можно отдать на проверку работадателю
- Преодолеть свой страх и все таки начать 3й проект на NodeJS
- Прикрутить Bootstrap к какому нибудь проекту (скорее всего это будет вышеупомянутый блог на ror)
- Пройти раздел Functional Programming -> Introduction на Clojure