Третий модуль профессии «PHP-разработчик» состоит из 9 курсов и одного финального проекта.
Я начал его 3 декабря, на волне эйфории после успешного сданного накануне, наконец, проекта предыдущего модуля (под «успешно сданным» я имею ввиду успешное прохождение автотестов, поскольку обучаюсь на базовом тарифе и код-ревью мне недоступны).
Два месяца, потраченные на прохождение третьего модуля, разделились на два учебных периода с различным характером загрузки. Первый месяц я был окружен семьей, и учитывая общий жизненный контекст, несмотря на безусловную приоритетность обучения профессии программиста для меня сейчас, общение с родными по приоритету все же стояло выше.
Тем не менее, удавалось заниматься регулярно, в среднем по полтора часа в день, обычно поздним вечером. Были пройдены за этот период два первых курса модуля - «PHP: Введение в ООП» и «PHP: Объектно-ориентированный дизайн», и полупройден третий.
В начале января, после отъезда семьи и возвращения в уютный алматинский хостел, я врубил горелку на полную. По сути я оказался в ситуации идеальных условий для самообучения. Отсутствие необходимости отвлекаться на решение бытовых вопросов, как и в принципе каких-либо других дел, «прогретость» и «разогнанность» мозга системными занятиями в предыдущие 3 месяца и даже чувство голода по хардкорному многочасовому обучению, а не урывками, как в декабре.
Чтобы еще немного добавить дров в этот костер энтузиазма, решил попробовать коворкинг в качестве площадки для занятий. Поскольку все же в хостеле для этого не самые подходящие условия, много отвлекающих и вызывающих легкий дискомфорт факторов, которые необременительны при занятиях 3-4 часа в день, но на более длинном забеге начинают сказываться.
Коворкинг за 6.6$ в день показал себя великолепно. Удобнейшее компьютерное кресло, огромные окна и прекрасное освещение в темное время суток, множество профессионалов из IT, работающих рядом — помогает сохранять нужный тонус весь день. Оборудованная кухня и даже темное помещение где на матах можно покемарить после обеда. Это важная опция для меня, поскольку пик продуктивности наступает ближе к ночи, но при условии отдыха днем. Кстати, ввиду этого обстоятельства обычно в дни посещения коворкинга я засиживался там далеко за полночь, и ложился спать в итоге в 4 часа утра. Следующий день обычно был более лайтовый, в коворикинг я уже не ходил и занимался в хостеле.
Нововведение этого образовательного цикла — использование секундомера (на телефоне) для отсчета времени занятий. Показалось мне, что это наиболее объективный показатель того, насколько усердно я занимаюсь. Потому что баллы на Хекслете это круто и я, конечно, тоже регулярно посматриваю в рейтинг там, но они слишком усреднены и даются в одинаковом количестве и за простые и за сложные топики и упражнения. А за проекты вообще практически не даются (что нонсенс — предлагаю за каждый успешно сданный проект 100 баллов сразу и пурпурный квадратик в ленте активности). Но осенью, помню, бывало, зависнешь над каким-то особо сложным заданием на несколько часов, вперемешку с отвлечением на какие-то разговоры с окружающими в хостеле, и потом сидишь нервничаешь, квадратик дневной активности еле зеленый — ощущение что день тратится впустую!
А теперь все четко. Нужно ответить на телефонный звонок или сходить в туалет, просто перезагрузиться партией в буллет на личесс — ставишь часы на паузу. Дневную планку главное для себя поставить чистого времени потраченного на обучение — и все, появляется моральная удовлетворенность от постепенного приближения к этой цифре и не паришься даже если много времени тратишь на разбор одной локальной проблемы, не влияющей глобально на общий прогресс прохождения профессии. В дни посещения коворкинга задача-минимум (ни разу не сфэйлил) была 8 часов, в остальные дни получалось в среднем по 5.
Также я перевел конспектирование теоретического материала (и наиболее понравившихся упражнений) из ленивого в режим full gas. Прям по старинке, ручкой, мелким почерком в ежедневник A5. И это тоже весьма мощный буст, как с точки зрения изначального понимания темы, так и с позиции возвращения к ней спустя какое-то время. В Evernote тоже частенько добавлял какие-то понравившиеся моменты, расширяющие основной стержень знаний, заносимый в ежедневник.
Разброс тем в курсах третьего модуля очень большой. Начали с ООП, потом протокол HTTP, фреймворк Slim, базы данных, регулярный выражения, тестирование, CSS! Вот это американские горки! Такая селедка под шубой получилась хорошая, что к моменту начала проекта непросто было вынимать из нее нижние слои. Но на самом деле это нормально :)
Ключевой курс модуля «Веб-разработка на PHP» — блестящий курс, пожалуй лучший из всех на Хекслете, которые я прошел. Разжевывает основы современного сайтостроения через написание обработчиков и CRUD-операций во фреймворке. Главное — обязательно выполнять все самостоятельные упражнения, даваемые в этом курсе в конце каждого урока. По сути это как второе практическое задание к уроку получается, на самоконтроле. Но после этого финальный проект модуля не покажется вам таким уж страшным (как это было на первом и втором модулях).
Закончил прохождение всех курсов и приступил к проекту я 26 января.
Финальный проект «Анализатор страниц» в итоге непосредственно писал я всего неделю. Проект достойный, интересный. Наверное, даже мог бы быть несколько посложнее :) Ну тесты уж наверняка можно было бы добавить в него.
После написания и деплоя проекта, после того, как убедился, что он работает, правда, долгое время не мог его сдать из-за разных технических моментов, на которые мне сложно повлиять. На данный момент осталось две проблемы, опишу их здесь:
Код подключения к базе данных PostgreSQL с помощью модуля PDO, который я взял из статьи на Хекслете (рекомендуемой в проекте), содержит строчки на которые ругаются автотесты проекта. Переадресовал эту ругань в комментарии к статье, надеюсь что авторы ответят. Моей квалификации не хватает чтоб самому пофиксить.
Подключаемая в проект для извлечения и парсинга HTML библиотека DiDOM давно не обновлялась и перестала дружить с последней версией PHP (8.2), вышедшей недавно. Автотесты, соответсвенно, ругаются. Мне даже удалось связаться с автором DiDOM (он русскоязычный) и сообщить ему о проблеме — он их признал но оперативно решить не обещал.
В общем, я уже нормально так по четвертому модулю дальше прошел, пока сдача третьего проекта зависла. Вообще конечно хочется третью галочку :)