Говорим с выпускником GeekUniversity Артемом Сухаренко, который сменил профессию в 36 лет.
— Артем, как долго ты в IT? Какие впечатления остались от работы инженером ЦОД? И когда ты решил перейти в разработку?
— В IT я уже девять лет. Заниматься разработкой хотел c далекой юности, но в силу обстоятельств, в том числе и личных сомнений, не решался. Уже в 15 лет я пробовал программировать по мелочам и даже делал графический редактор на QBasic. Периодически возвращался к кодингу, «щупал» разные ЯП, но без карьерных планов.
Программирование — это магия: ты пишешь буквы и на экране оживает нечто! В школьные годы меня пугали, что на профессиональном уровне это капец как трудно и, если ты не гений, ничего не выйдет. Так сложилось, что связанных с IT людей в моем окружении не было.
Позже к препятствиям добавились бытовые проблемы: ипотека, например. Начинать с нуля, когда висит кредит по ипотеке, было страшновато. Да и личные опасения не последнюю роль играли: одно дело крутить провода за деньги, почти не используя мозг, совсем другое — постоянно учиться новому и аккуратно внедрять это, чтобы не поломать уже готовое.
А мечта тем временем скреблась и просилась на волю! Однажды понял: сейчас или никогда — и принял твердое решение. Это примерно совпало с поступлением в GeekUniversity.
Я собрал все силы, плюнул на даунгрейд по зарплате и двинулся мечте навстречу. Пока не жалею.
— Почему изо всех направлений ты выбрал Python? И какое применение этого универсального языка тебе интереснее?
— Вот именно за универсальность и простоту я Python и выбрал. Сейчас на рынке мне открыто в первую очередь веб-направление, потому что для Machine Learning я недостаточно силен в математике.
«Для души» использую Python везде: пишу мелкие игрушки и десктопные приложения, автоматизирую свои повседневные задачи, ну и веб-сервисы пилю, куда ж без них.
— Почему ты решил пойти на курсы? Какие были критерии и требования, когда ты выбирал место учебы?
— В моем окружении не было разработчиков, поэтому на курсах я надеялся найти в первую очередь сообщество — профессиональную среду. И нашел.
Требования были простыми: мне нужно было углубить приобретенные самостоятельно базовые знания Python и сопутствующих технологий, получить руководство и помощь более опытных людей.
— Много ли времени приходилось каждый день выделять на учебу? И совмещал ли ты ее с работой на прежнем месте? Насколько хватало времени на остальную жизнь?
— В день я старался уделять занятиям хотя бы два часа. Теорию читал и продолжаю читать в пути от дома до работы и обратно. Практиковался поначалу только вечерами. Остальную жизнь, конечно, пришлось потеснить. Но я всегда оставляю вторую половину субботы для прогулок.
— Где сейчас трудишься и над какими задачами?
— Сейчас работаю в компании «Код безопасности». Есть готовый продукт — программно-аппаратный комплекс для защиты сетевой инфраструктуры и создания VPN-сетей. Его нужно поддерживать. Я занимаюсь в основном исправлением багов и рефакторингом. Намечается еще задача: планируем весь legacy-код проекта перенести на Python 3+.
— Сколько предложений работы ты получил после обучения? Как выбирал работодателя?
— За время учебы и после нее мне поступило три оффера. Еще пара наклевывалась, но потребность в них отпала сама собой. Вакансии я выбирал по двум критериям: что за проект и сколько ехать до офиса. На нынешнем месте остановился в том числе потому, что знал будущего начальника по его выступлениям в подкастах и на митапах.
— Может, поделишься советами, как проходить собеседования?
— На самом деле, тут все банально. Откройте вакансии, посмотрите, какие технологии интересуют работодателя, пощупайте это руками — изучите хотя бы на 70 % — и после этого смело начинайте ходить по собеседованиям.
Как получить работу? Обязательно знать Rest и еще какой-нибудь Rest-фреймворк. Если с этим все в порядке — считайте, что оффер ваш. 🙂
Мое скромное мнение: лучше не врать, что все знаете и просто что-то подзабыли. Говорите или пишите о том, чем действительно владеете, только обязательно уточняйте, что еще готовы освоить или уже изучаете. Все задают примерно одинаковые вопросы, но некоторые интервьюеры (HR или руководители) в силу своих личностных качеств любят предложить что-нибудь с подковыркой. А вы все равно не бойтесь! 🙂
— Какие проекты ты сделал за время учебы в GeekUniversity? Расскажи немного о каждом, пожалуйста.
— Самым сложным (это отмечали и многие мои сокурсники) было создание чата. Это очень интересный проект с точки зрения обучения. Как прикладное решение он вряд ли представляет ценность, а вот поковыряться под капотом популярных Python-библиотек было очень полезно и любопытно.
На командной разработке мы делали коммерческий проект GLOLiving, который просуществовал недолго, но дал нам уйму практического опыта. Я писал backend, а еще выступал в роли fullstack-разработчика при создании админки сервиса и деплоил все на сервер.
Мы обсуждали проект на встречах через Google Hangouts, а code review был коллективным.
— Как считаешь, почему проект «не взлетел»? Что пошло не так?
— У меня и остальных членов команды не было опыта, поэтому ошибок было не избежать. Многое, что я делал в начале, пришлось переписывать, а что-то и вовсе осталось кучей некрасивого кода.
Нужно было добавлять новые фичи, но наш стартап сам не знал, чего хочет, и работал по «динамическому» ТЗ. Что я точно помню, это сложности в организационных вопросах: не было четкого разделения обязанностей и ясных задач. Так мы получили горький, но полезный опыт участия в псевдокоманде! 🙂
Впоследствии, когда проект вышел за рамки учебного, стало еще интереснее — появилось финансовое подкрепление. И, безусловно, с технической точки зрения мы бы вытащили проект, но коммерческие перспективы резко оборвались.
Почему GLOLiving не взлетел — это скорее вопрос к владельцу бизнеса. В какой-то момент он просто пропал с моих радаров.
Сейчас я понимаю: там было что переписать, мягко говоря. Это были «учебные» [проекты] — мы кодили, как могли!
Именно тогда я попробовал технологии, о которых раньше только читал: требовалось сделать P2P-чат на веб-сокетах. Это было очень интересно и даже работало.
Вообще, сайтик был не самый простой в реализации: помимо чата были очереди задач, и даже пресловутую админку пришлось переписывать под нужды и хотелки стартапа. Я стремился одновременно улучшить внешний вид (юзабилити) админки и кодовую базу. И хотя не все было идеально, эту часть я сегодня оставил бы без изменений… На самом деле, я бы все переделал, хе-хе!
Кстати, благодаря этому опыту я почти полностью переписал собственный проект, который на добровольных началах затеял на предыдущей работе «непрограммистом». Это была система мониторинга и взаимодействия с операторами ЦОД. Но и это я бы сегодня переписал! (Смеется.)
— Как быстро удалось найти работу? Насколько сложными были тестовые задания и технические вопросы на интервью?
— Так совпало, что новую работу я нашел чуть ли не день в день с окончанием учебы. До этого проходил несколько собеседований. Тестовые задания были не слишком сложными, но в то же время заставляли помозговать и попробовать разные варианты.
Наиболее сложными из тестовых мне показались задачи, связанные с асинхронными фреймворками, такими как AioHTTP и Sanec. В этом деле мне не хватало практического опыта.
— Как проходит адаптация на новой работе? И хватает ли времени на самообразование?
— Адаптация проходит интенсивно и интересно. Я уже в принципе представлял, как выглядит коммерческая разработка, поэтому огромным сюрпризом это не стало.
Но понадобилось вникнуть в новые темы: в основном это сети и криптография. Со временем пока очень туго, однако по-прежнему выручает длинная дорога от дома до работы и обратно.
— Ты уже наметил себе цели в профессии на ближайшую перспективу?
— На сегодняшний день цель одна — стать хорошим разработчиком, а не только мечтать об этом! В выбранной мною сфере можно перестать развиваться только в двух случаях: по причине смерти или ухода из профессии. Других уважительных причин быть не может. 🙂