Первый проект в специальности «Python-разработчик» при самостоятельном обучении. Первый проект в жизни.
Предисловие
Проект «Игры разума» стал моим первым самостоятельным проектом в рамках обучения по профессии «Python разработчик». Да и вообще первым проектом, в котором я одновременно создавал код, настраивал окружение и размещал на GitHub.
Описание проекта
Моими глазами проект на старте выглядел так:
- Написать несложный код, описывающий логику пяти игр
- Отладить работу кода. Провести ручное тестирование
- Аккуратно оформить этот код по правилам и нормам
- Упаковать код в poetry и выгрузить на GitHub.
Ход выполнения проекта
Знакомство с описанием и предисловием к проекту. Тут первое представление о том, что все будет легко и понятно, быстро улетучивается. Уже на первом шагу проекта я столкнулся с тем, что мои ожидания ошибочны. Я приготовился писать исполнительный код программ, а тут сперва надо настроить окружение. Причем настройка окружения оказалась более сложной, чем это было описано в предшествовавшей теории. Я приуныл и на какое-то время отложил проект. Приуныл из-за того, что столкнулся с непонятным и сложным.
Поборов сомнения и прокрастинацию, я стал потихоньку перечитывать теорию и выполнять шаги с первого по третий. Сейчас, после завершения проекта, эти шаги кажутся простыми и проходимыми за пару часов. Но на них через преодоление себя пришлось потратить почти неделю (может и больше). Наконец стало казаться, что все работает корректно.
На четвертом шаге я плотно познакомился с CodeClimate и flake8. Эти инструменты произвели на меня сильное приятное впечатление. Оказалось, что часть тестирования кода (ту часть, которая про понятность и читаемость человеком) можно хотя бы частично регламентировать и доверить программе. Я и раньше слышал рассказы о подобных возможностях, но плотно столкнулся впервые.
И вот наконец-то на пятом шагу я создал первый работающий файл одной из игр. Сам код игры писал минут пять, а вот потом ещё час «игрался» с ним. Тестировал, проверял, запускал, прогонял через flake8 и так далее. Первое ощущение от того, что написал именно «целевую» часть проекта.
На шестом шаге я написал код второй игры. И, когда начал собирать эти игры внутри проекта, пришлось прилично переписать код первой игры. Чтобы «не повторять себя» и чтобы код был более универсальным. Сам код второй игры опять занял не много времени. А вот переделки, доделки и прогоны через flake8 заняли прилично времени. Стало понятнее, зачем нужно всё это окружение. Именно благодаря настройкам окружения «переделки» проходили достаточно быстро, а формирование нового пакета, его инсталляция и запуск превратились в постой запуск скрипта… В несколько десятков запусков скриптов…
Три последующих шага полетели быстро. Уе сформировалось в сознание понимание того, что и как нужно сделать. Написал код, отладил код, встроил в пакет, прогнал через CodeClimate и flake8, исправил. Ощущение, как будто на конвейере.
Перед тем, как запустить автоматическую проверку проекта еще раз все аккуратно проверил и вручную протестировал. Вытащил еще несколько ошибок, исправил их. С замиранием сердца отправил на автоматическую проверку. Томительные несколько минут ожидания.
После первой поверки система выдала мне протокол действий из почти двухсот строк. И проект не был принят. Уныние. Через пол часа собрался с силами и стал разбираться в протоколе. Совсем не сразу, но я понял, что практически все проверки я прошел, кроме одной. Запятая после последнего элемента списка. Мой локальный flake8 на это не ругался, а автоматическая система проверки проекта это заметила. Исправил, запустил. И ВСЁ!
Зелёная галочка в зелёном кружке в виде результата! Класс! С таким удовольствием я со школы не учился!
Впечатления от проекта
«Как будто сам сдал с первого раза матан на первом курсе!». А если более подробно, то вот так:
- Собственная неуверенность в начале мешает двигаться в проекте намного больше, чем отсутствие знаний и навыков.
- Как бы хорошо и аккуратно я не учился и не разбирался в курсе до проекта, все равно пришлось многократно возвращаться к пройденному материалу раз за разом, пока результат не начинал соответствовать сперва моим ожиданиям, а потом системе автоматической проверки.
- Для себя я с некоторым удивлением обнаружил, что объём «переделок» и «доработок» в проекте, как вызванных моими ошибками, так и заложенный шагами проекта, больше, чем сам объем итогового результата. Прям как в моей текущей работе.
- «Дорогу осилит идущий!». Если каждый день стараться делать хотя бы понемногу, то результат начинает появляться довольно быстро. Казалось бы банальность, но в очередной раз работает.
Мне очень понравилось. После того, как система автоматической проверки приняла у меня проект, я ощутил искреннюю радость, прямо даже восторг. Проект «прокачал» меня не только технически, но и добавил уверенность в том, что я смогу пройти весь путь по освоению специальности.
Выводы
- Проект это сложно, и требует не менее 20 часов чистого времени
- Чтобы все выполнить правильно, придётся вернуться и повторить предшествовавшую теорию, и не раз
- Именно проект позволил мне почувствовать, что я «что-то знаю и что-то умею»
- В процессе выполнения проекта у меня сформировались навыки и знания, которые в рамках предшествовавшего курса были только обозначены.
Спасибо за проект!