Как опытный IT-специалист изучал Python в GB

Впечатления, первые проекты, советы начинающим, расширение кругозора.
6 минут7118

Константин Ложкин — Magento-разработчик, т.е. специалист, который пишет интернет-магазины на PHP-движке Magento. Уже три года как Константин живет и работает в Германии. Он скоро поделится со СМИ историей своего переезда и трудоустройства, а главное — подробными рекомендациями для тех, кто хотел бы работать в ЕС. Этот рассказ впереди.

А пока мы решили расспросить Константина о его тринадцати годах в IT, об учебе в GeekBrains и о преимуществах написания бэкенда на PHP и Python. Также обсудим, зачем веб-разработчику разбираться в информационной безопасности.

— Константин, сколько вы уже занимаетесь программированием профессионально?

— Впервые коммерческую программу я написал в 2006 году, когда учился на первом курсе университета. Это было решение для автоматизации производства пенопласта. Программу внедрили и использовали на промышленном предприятии минимум пару лет. Были за время учебы и другие подработки: создание небольших сайтов, верстка. В 2010 году я окончил университет и остался работать в сфере образования. В этот период написал на PHP систему для дистанционного тестирования студентов. Ее в университете использовали до 2015 года. В этот период я также работал по совместительству в технической поддержке Яндекса.

Первый опыт работы в команде программистов я приобрел в 2014 году. Заграничная компания, чтобы удешевить разработку, открыла аутсорсинговый филиал на Украине, достаточно быстро расширялась и искала новых разработчиков в команду. По воле случая мне повезло попасть к опытным коллегам. 

Хочу порекомендовать новичкам: когда у вас уже есть базовые знания для позиции программиста, переходите к работе в команде. Это ускорит ваше обучение. Два года командной разработки дали мне в разы больше, чем все предыдущие годы кодинга в одиночку. Например, я изучил на практике Docker и Vagrant, узнал про автоматическое тестирование с помощью PHPUnit-тестов и с их помощью нашел вагон багов в чужом коде. Это технологии, которые используются только в больших проектах, — на маленьких, над которыми работаешь один, это бессмысленно. 

А еще мне повезло: примерно через девять месяцев работы над проектом мне предложили перейти в другую команду и изучить с нуля перспективную Magento CMS, под которую не могли найти дополнительного разработчика. Естественно, я согласился, и это впоследствии сыграло ключевую роль при поиске работы за границей. Классно, когда работодатель поощряет сотрудников в изучении новых технологий в рабочее время.

Еще один совет разработчикам: не делайте больших перерывов в обучении и работе — без регулярного применения знания быстро устаревают и выветриваются. Если вы год не программировали, придется тратить время и заново входить в курс дела.

— Когда вы поняли, что вам нужен Python, и какие перспективы для себя увидели в этом направлении?

— До 2014 года я работал в Яндексе, в технической поддержке сервиса «Почта для домена». Там я узнал, что почти все проекты Яндекса написаны на Python и что этот язык хорошо заточен под работу со строками, поэтому идеален для крупной поисковой системы. 

Больше я тогда ничего не знал о Python, и, конечно же, заинтересовался им. Хотел переквалифицироваться из сотрудника техподдержки в Python-программиста

Обстоятельства распорядились иначе, и я погрузился в более знакомую мне сферу PHP, а затем переехал на работу в Германию. Но от идеи изучить Python не отказался, потому что понял, насколько он перспективен.

— Вы окончили вуз по специальности «системное программирование» — это хорошая теоретическая база. Дальше получили опыт PHP-разработки. Почему вы решили изучать Python на курсах, а не самостоятельно, по книгам и документации?

— Профильное высшее образование дало мне теоретическую подготовку, без которой было бы сложно развиваться дальше. Но одних знаний недостаточно. Я убедился, как тяжело начинающему программисту без опыта найти работу, даже если на руках красный диплом вуза.

Сначала я пытался самостоятельно освоить Python по статьям в интернете, затем попробовал бесплатный образовательный видеокурс. Есть ряд ресурсов такого плана: edX, Udemy, бесплатные уроки на GeekBrains. Если пользоваться бесплатными инструментами, то получаешь, как правило, точечные знания. Такое обучение малоэффективно. Так можно стать кодером, но не программистом. 

Недостаточно чтения статей в интернете и попыток писать программки. Нужны уроки, где вам последовательно, шаг за шагом покажут стек технологий, которым пользуются современные программисты. Еще лучше, если у вас будет возможность в любой момент задать вопрос преподавателю. Его ответы помогут избавиться от каши в голове.

Нужны практические задания для самостоятельной работы, которые составляет и проверяет опытный специалист. Это особенно важно в начале обучения, когда закладывается фундамент знаний и опыта. Поэтому я решил изучать Python на курсах.

После изучения основ языка нужен проект, в работе над которым вы получите реальный опыт. Проект должен быть таким, чтоб его не стыдно было добавить в портфолио, когда будете искать первую работу. С этим пунктом начинающему программисту сложнее всего.

— Почему вы остановили выбор на курсах GeekBrains? Насколько оправдались ожидания от учебы?

— Больше всего мне понравилась идея стажировки: возможность получить опыт разработки реального проекта. На других курсах я такого не нашел, и ясно, что просмотр видеоуроков на YouTube этого не даст. 

Еще мне было важно, чтобы кто-то контролировал качество моего кода и высказывал пожелания или замечания по практическим работам. Например, я поначалу писал Python-программы в стиле языка PHP. Преподаватель помог мне увидеть, что в Python для тех же целей есть более удобные инструменты. Особенно это касается циклов и функций работы со строками.

Еще один аргумент в пользу онлайн-обучения — его легче совмещать с полной занятостью на работе.

Ожидания от учебы в GeekBrains в основном оправдались. Не все идеально — многое зависит от преподавателя и вообще от человеческого фактора. Например, у нас на потоке один студент во время занятий отправлял в чат столько сообщений, что преподаватель постоянно отвлекался и это мешало ему объяснять материал.

Но главное — хорошие преподаватели были. Именно они вдохновляли меня делать сложные практические задания и учиться дальше, несмотря на сложности.

— Расскажите о проектах, которые вы сделали за время учебы и стажировки.  Насколько было сложно? Есть ли перспективы реального применения или это были проекты ради опыта?

— В курсе по профессии «Программист Python» обучение языку разделено по уровням. На одном из них мы разрабатывали собственный мессенджер. Позже этот проект студенты продолжили доводить до ума на стажировке. А я попал в команду, которая делала другой проект, и разрабатывал backend-часть для программного HR-бота. Нужно было написать API, который отвечал бы за сохранение данных и взаимодействие всех частей бота между собой. Таких частей две: frontend-клиент и «паук», который собирает данные в интернете и передает API для обработки.

Backend я построил на основе Flask. Сейчас мы с командой вносим финальные правки, и совсем скоро проект будет внедрен реальным заказчиком. Ждать осталось совсем чуть-чуть :)

— Вы теперь можете сравнить написание backend’а на PHP и Python. В чем, на ваш взгляд, плюсы и минусы? Что бы вы предпочли делать с помощью PHP, а что — на Python? 

— Почему-то у PHP много хейтеров. На мой взгляд, он хорош для небольших сайтов или случаев, когда нужно минимизировать сложность разработки интернет-магазина средней величины. Под PHP есть ряд популярных CMS, на которых легко запустить сайт с нужными функциями: тот же блог на Wordpress. 

В немецкой компании, где я сейчас работаю, используют Magento CMS — большой и местами неповоротливый движок для интернет-магазина. Под Python нет готовых инструментов такого масштаба. Python — это скорее конструктор. С ним вы собираете что-то свое из множества небольших модулей. А у движков на PHP много лишнего «в нагрузку».

PHP старше, и иногда это играет с ним злую шутку, но все же он развивается: например, PHP 7 гораздо быстрее прошлых версий. Думаю, этот язык еще долго продержится в пятерке самых популярных.

Python незаменим для крупных веб-проектов, где важно быстродействие. А еще это универсальный язык, на котором можно писать что угодно, в том числе desktop-приложения. Его используют для сложных научных вычислений, построения нейросетей и даже для программирования умного дома на базе Raspberry Pi. Думаю, PHP никогда не сможет предложить так много вариантов применения.

Есть еще эстетика. И хотя плохой код можно написать на любом языке, скажу честно: код на Python намного чище и читабельнее. Скажем так, Python требует от программиста дисциплины, в то время как PHP легче «мирится» с некрасивым кодом.

— Помимо Python вы изучали в GeekBrains информационную безопасность. На каком этапе сейчас обучение? Вы собираетесь применять эти знания в разработке? Или вам интересна возможность перейти с позиции разработчика к работе программиста-безопасника?

— Работать в сфере ИБ не планирую, а курс прошел для общего развития — веб-разработчику полезно взглянуть на свой код глазами хакера, чтобы просчитать угрозы. Настоящим открытием для меня было разнообразие инструментов и методов взлома. 

Нас отправили на специализированный ресурс, где я узнал, сколько моих паролей «утекло» в интернет, и ужаснулся. :) Ничуть не жалею о времени, потраченном на лекции и практические задания, — поработал с инструментами. Большего мне пока не нужно, поэтому на стажировку записываться не стал. Но знания уже пригодились в работе: я выявил несколько уязвимостей на сайтах компании. Уверен, что и в будущем понимание азов безопасности пригодится.

история успехапрограммированиевеб разработкаwebpython
Нашли ошибку в тексте? Напишите нам.
Спасибо,
что читаете наш блог!