Всем привет! В этой статье я хочу поделиться своими впечатлениями о первом проекте в профессии Python-программист. Если вы проходите эту профессию и сомневаетесь "нужно ли проходить проекты", для экономии времени можете прочитать мои впечатления, которые опишу в конце.
Предыстория
Перед покупкой проекта я колебался: нужно ли тратить 97$ на написание приложения, которое заставит пользователя отвечать на вопросы в духе "Делится ли 21 на 2", "Сколько будет 12+51". Кажется, что это слишком простая задача, такой скрипт можно накидать за 5 минут, подобные программы обычно пишут на старте изучения языка. По программе курса это действительно так, но я начал выполнять этот проект когда уже прошел почти все курсы, остались только SQL и ООП. Проекты в итоге я приобрел целой пачкой, когда увидел новость о повышении цен. Я до конца не верил, что Игры разума принесут мне какую-то пользу, но выполнение этого проекта (на момент написания статьи я его еще не закончил) помогло открыть глаза на то, как нужно писать приложения на Python правильно. Я на практике реализую то, что знал только в теории (речь идет в основном о DRY).
Сложности на старте
Это будет самая короткая секция, потому что сложности возникли только с установкой Poetry т.к. по умолчанию он работает с Python 2.7. В этой статье Алексей описал установку Poetry для работы с Python 3.x, все в порядке, работаем :)
Начало работы
Установка Poetry это только первый шаг, но он занял достаточно времени. Далее нужно было собрать приложение, настроить конфиг, повторить уроки по модулям и пакетам, подключить линтер. Описание процесса заняло пару предложений, но по времени это длилось около шести часов из-за моей неуверенной работе в Ubuntu, один раз даже её пришлось переустановить. Наконец-то добрался до логики. В описании мне намекали, что скрипты отвечают только за запуск приложения, сама логика должна быть реализована в другом месте. В одном из следующих шагов мне еще раз повторили, что при добавлении новых модулей некоторый код может повторяться, и его лучше также вынести в отдельный модуль, к тому же еще codeclimat ругается (его также нужно было подключить по ходу выполнения шагов). В процессе я переписывал свое приложение, вынося повторяющиеся функции в отдельный модуль, и я был просто в восторге когда осознал, что могу добавить новые функции всего несколькими строками, которые после передам в "главный" модуль. Я осознанно описываю весь процесс в общих чертах чтобы не спойлерить тем, кто соберется проходить проект, но вся эта работа помогла понять как правильно создавать приложения на Python. Об этом я расскажу далее.
Мои первые впечатления
Я не могу подвести полный итог о выполнении проекта т.к. еще не завершил его, но я уже успел получить полезный опыт, который поможет мне создавать приложения в дальнейшем. Выделю самое главное:
Анализ кода (codeclimat, flake8), вынесение повторяющихся функций в отдельные модули (см. DRY).
Сборка и публикация пакета в репозиторий.
Такие очевидные вещи для меня были раньше не так очевидны, они существовали только где-то в теории, в мире идей. Я знал, что повторения в коде это плохо, повторяющийся код нужно выносить в отдельные функции, но, чтобы разбить приложение на модули, а уж тем более собрать и сконфигурировать пакет, до этого мне бы еще пришлось как-то дойти. Неизвестно сколько на это бы ушло времени если бы не Игры разума.
На этом пока все. Надеюсь эта статья поможет вам оценить важность прохождения проектов. На курсах много практики, но она нужна только для закрепления теории. Проекты же учат вас вещам, которые вы будете применять в дальнейшем в своей работе.