Две работы и учёба: сколько можно успевать, если не лениться

Две работы и учёба: сколько можно успевать, если не лениться

Python-разработчик и студент GeekBrains Роман Смирнов делится опытом перехода из космической отрасли в IT
8 минут17335

По специальности я инженер-испытатель в аэрокосмической отрасли. После института устроился на одно из предприятий Роскосмоса, где обещали большие перспективы. Отработал полгода: первое время было очень интересно, но из-за ошибки подрядчика у нашей конторы сорвался пуск с космодрома «Восточный» и начались внутренние проблемы. Я перешёл в другую организацию, тоже в составе Роскосмоса. График сутки через трое оставлял много времени для учёбы, и я решил осваивать программирование.

Почему программирование и Python

Во-первых, на IT-рынке кадровый голод. На фоне избытка стажёров компаниям остро не хватает специалистов высокого класса: мидлов и старших разработчиков. Во-вторых, и это очень важно для меня, программирование — работа, где виден результат и его можно однозначно оценить. В-третьих, IT-сообщество является международным, и ты не привязан территориально. Наконец, в этой сфере можно хорошо зарабатывать. Для меня выбор был очевиден.

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

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

Почему разработка не даётся с наскока

Когда начинаешь с нуля, даже очень простые и очевидные вещи могут быть непонятны, если рядом нет человека, который всё объяснит. Можно читать форумы, но там на вопросы отвечают зачастую с большой задержкой или вовсе игнорируют.

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

Я осваиваю Python на курсах, а не самостоятельно, потому что общение с преподавателем и группой однокурсников в режиме реального времени незаменимо. Допустим, ты не понимаешь текущую тему, но думаешь, что нормально усвоил предыдущую. Твой одногруппник что-то недопонял в теме прошлого урока и задаёт вопрос преподавателю. Ты вникаешь в ответ и вдруг осознаёшь, что сам знаешь пройденный материал не до конца, потому и столкнулся с трудностями дальше. Вот так у тебя в голове выстраивается вся цепочка и, даже не задав вопроса, ты решаешь проблему.

Считаю, если ты решил стать программистом, надо сразу настраиваться не просто запоминать приёмы или рецепты, а последовательно выстраивать систему знаний.

Космос, банки и GeekBrains

Из Роскосмоса я до сих пор не уволился, но параллельно с работой там и учёбой в GeekBrains уже успел побывать на трёх должностях в IT. Сначала устроился верстальщиком в стартап, где удалённо трудился один-два полных рабочих дня в неделю. Затем у меня был экстремальный опыт работы в Севергазбанке. Сейчас я программист в компании Genplace, которая занимается аутсорсингом. После Нового года успешно прошёл оценочное тестирование, так что через месяц полностью переключусь на программирование и попрощаюсь с аэрокосмической отраслью. Но обо всём по порядку.

Начало работы в IT

Я приступил к учёбе на курсах в мае 2018 года. К августу, когда мы дошли до разработки мессенджера, я понял, что не успеваю выполнять учебные задачи и не справляюсь с ними. Решил перепройти курс. За пару недель до повторного обучения я устроился верстальщиком в команду, которая делала приложение типа BlaBlaCar. На тот момент я даже JavaScript не знал — только разметку HTML и CSS.

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

В марте 2019-го я устроился в дочернюю компанию одной из «дочек» Газпромбанка — Севергазбанк. «Внучку» Газпромбанка, получается :) Они делали сервис для оформления услуг факторинга, банковских продуктов и гарантий. Решением пользовались фирмы — конечные потребители услуг — и внешние агенты, которые подыскивали банкам клиентов. То есть мы предоставляли агентам площадку, куда они приводили клиентов, чтобы заключать с ними договоры от имени кредитной организации. Сервис был интегрирован с несколькими банками.

Работа оказалась ужасной: куча legacy-кода, огромная текучка кадров, маленькая зарплата — чуть ниже средней для питониста-стажёра в Москве. Разработчики убегали целыми командами. Оставался только один тимлид, и то не представляю, что его там держало.

Как джун я рассчитывал начать с простых задач, однако на третьей неделе работы мне сказали: «Вот есть основной сервис, сделай так, чтоб люди могли брать кредиты». У меня сразу паника, страх: «Вы что, с ума сошли?! Я несколько месяцев назад написал свой первый интернет-магазин — плохо, не до конца. А тут система выдачи кредитов, где нужно обеспечить безопасность и всё остальное!»

Однако именно на этой экстремальной работе я познакомился с Django REST Framework, углубил знания View.js и получил опыт быстрого погружения в сложные задачи. Всё это сняло обычные страхи начинающего разработчика и вселило уверенность, что по ходу дела я могу освоить любой необходимый инструмент. Но каша в голове ещё оставалась :) 

Жизнь становилась всё веселее: 5/2 в офисе, где мы писали дрянной код без нормальной работы менеджмента и учёта современных технологий, затем — сутки-трое в Роскосмосе плюс учёба. Я быстро понял, что дальше развиваться как программист в таких условиях не смогу, и снова начал искать работу.

Начинать заново — обычное дело

Я обновил резюме, указал более высокую зарплату и стал отправлять письма в интересные компании, уже без криков «Возьмите за еду». Вскоре я получил два приглашения, но собеседования завалил, потому что от волнения не мог вспомнить простых вещей. Дальше я прошёл за неделю ещё шесть собеседований, на некоторых был близок к трудоустройству, но находились более сильные кандидаты.

Был я и на собеседовании в Mail.ru Group. Прошёл дистанционное интервью, но в офисе тимлид меня просто уничтожил — стало ясно, как многому ещё предстоит научиться. Вакансия была уровня Strong Junior / Middle, и я никак не вписывался, потому что не был знаком с асинхронным программированием, Docker-контейнерами и виртуализацией. Я и сейчас ещё вникаю в это.

Но оставаться в неинтересном проекте отчаянно не хотелось. Я повысил желаемую зарплату в резюме на hh.ru с 65 000 до 75 000 рублей, продолжил поиск и вскоре получил предложение с нынешней работы. Интересно, что кандидатов с зарплатными ожиданиями ниже 70 000 они не рассматривали.

Тимлид в то время болел и провёл собеседование в Skype, где к нам присоединился менеджер проекта. Сначала было стандартное интервью, затем мне дали участок кода и задание на час — обработать два массива данных. Тут мне пригодились опыт предыдущей работы и знание библиотеки Functools, которую мы дополнительно изучали на курсах Python в GeekBrains.

Дальше, в ожидании результатов, я сделал то, что — везде пишут — делать нельзя: позвонил тимлиду и спросил о его впечатлениях от собеседования. Очень уж хотелось получить эту работу. Тимлид сказал, что всё хорошо, и если с задачей я справился нормально, он скажет менеджеру меня брать. Четыре дня спустя я получил письмо с первым официальным оффером и был счастлив.

Работа, где можно развиваться

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

Сейчас ни один сервис не живёт своей основной функцией. Посмотрите на Яндекс.Драйв: он был просто каршерингом, а теперь он интегрирован с проектом «Яндекс.Авто», предлагающим дополнительные сервисы и бортовые компьютеры для автомобилей.

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

У многих небольших банков сейчас нет средств или желания создавать свои IT-продукты. В лучшем случае у них есть API для интеграции с внешним сервисом. Из-за этого они не могут соревноваться с лидерами рынка. Но тут появляемся мы и предлагаем доступную альтернативу.

Если говорить о стеке технологий, мы используем Django REST framework, Vanilla JS, набор стилей на базе Bootstrap, мультипроцессорность и многопоточность для выполнения фоновых backend-задач и чата, а ещё, конечно, Docker. Поскольку команда у нас небольшая и тестировщика нет, тесты пишем сами.

Памятка начинающему разработчику

Вот несколько главных выводов, которые я сделал из личного опыта и которыми могу поделиться с теми, кто делает первые шаги в Python-разработке.

1. В свободное время читайте книги и статьи по профессии. Это не бег на короткую дистанцию, а марафон – надо заниматься этим постоянно. Лично я предпочитаю бумажные книги, с ними мне проще воспринимать текст. Плюс заметки мне приятнее делать на полях, чем в электронных документах.

2. Постоянно мониторьте рынок. Ищите правильно оформленные заявки на вакансии в России и за рубежом, отслеживайте стек технологий и составляйте себе карту обучения.

3. Выучите фреймворк Django REST и основные библиотеки к нему как «Отче наш». Кто умеет быстро что-то создавать на этой основе — без труда найдёт работу. Страшные для каждого джуна слова Strong (!) knowledge of Django REST сейчас есть в требованиях ко многим вакансиям на рынке. Медицинским (и не только) стартапам нужны отраслевые IoT-решения — следовательно, надо писать API, а пишут их чаще всего на Django REST. Не только, конечно, но свой основной фреймворк надо знать хорошо.

4. Не ленитесь! Это главное. Во время учёбы на курсах будьте готовы к тому, что из тридцати человек в вашей группе через несколько месяцев домашнее задание будут сдавать семь, а закончат обучение и устроятся на работу — четверо. Это обычная история, потому что человек ленив. Если поставили цель, не сходите с дистанции.

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

Хотите узнать больше о выпускниках Python-факультета GeekUniversity? Вот их истории:

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