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


image


При этом некоторые работодатели всячески это приветствуют и считают чем-то вроде предохранителя от выгорания – человек сменит фокус внимания, сменит департамент или отдел, но не сменит саму работу в целом.


Меня зовут Костя, и я работаю в QIWI почти 4 года. Сегодня расскажу вам, как успешно перешел из frontend-разработки в backend.


Frontend


В QIWI я с конца 2014 года, начинал работать как разработчик iOS–приложений, и, в принципе, пару лет занимался разработкой QIWI-кошелька. При этом не могу сказать, что было скучно – задачи были довольно разные и в рамках одного приложения: мы занимались интеграцией кошелька с другими нашими сервисами, чинили баги, подтягивали анимацию. Кроме этого, был занятный опыт по созданию приложения для Apple Watch. Потом немного расширил фокус и поработал еще и над iOS-приложением для «Совести».


image


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


Но в бэкенде на то время было слишком мало разработчиков и слишком здоровенный бэклог, так что в итоге я все же переключился на бэкенд полностью. То, что я делаю сейчас, это классические задачи бэкендера – пишу код в наших микросервисах, чиню баги, занимаюсь рефакторингом, постигаю Kotlin. Есть возможность работать и над свежим продуктом компании – QIWI Инвестор.


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


Так что тут сложилась win-win ситуация – я хотел помочь команде и продукту (перевес в разработке был сильно не в сторону бэкендеров) и набраться новых знаний. Тимлиды все поняли и отпустили меня без каких-то претензий, продакт тоже.


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


Backend


image


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


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


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


Впечатления от бэкенда после фронтенда


Нет работы с UI. Вообще. Раньше приходилось убивать время на исправление багов в UI, сейчас – нет. Минусы такого положения – конечный пользователь не видит результатов конкретно моей работы, как это было с фронтом. Я пытался определить, что же сложнее – бэк или фронт, и понял, что (лично для меня) тяжелее всегда было работать с многопоточностью и сетевым стеком. И тут уже не так важно – за фронт ты или за бэк. На фронте я просто столкнулся с такими задачами впервые, без подготовки, а на бэкенде уже с каким-никаким опытом.


Набраться опыта и делать что-то крутое можно в любой области, было бы желание и усидчивость, здесь практики сходятся – сделать что-то (и сделать хорошо), и чтобы это работало надежно и легко поддерживалось. Причем для бэкендера не столь критично наличие или отсутствие опыта во фронте. Если разраб учитывает все мелочи, сам продумывает корнер-кейсы и в целом понимает, как будут использовать его API, то он и без фронт-знаний сделает все, как надо.


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


Что в итоге


Backend-разработка стала для меня еще одним хорошим опытом – я научился писать код и проводить ревью, продумывать архитектуру. Это на самом деле интересно.


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


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

Комментарии (16)


  1. argonavtt
    25.06.2018 15:25

    Нет работы с UI. Вообще. Раньше приходилось убивать время на исправление багов в UI, сейчас – нет.

    Было бы странно если бы вы в back end правили ui.


    1. IgnatBeresnev
      25.06.2018 15:30

      Добро пожаловать в GWT


      1. argonavtt
        25.06.2018 15:31

        Спасибо, я уж лучше воздержусь)


      1. AstarothAst
        26.06.2018 10:35

        Это не бекенд — это страдание.


  1. dark_ruby
    25.06.2018 15:30
    +1

    Я когда начинал карьеру, хотел быть профессиональным "девелопером окошек About для виндовс-программ". С тех пор я переходил из виндовс в веб, потом бекенд, потом mobile, теперь вот фронтенд. На мой взгляд переходить из департамента в департамент можно и нужно, когда ты достиг определенного уровня профессионализма в своей сфере.


    1. reiser
      25.06.2018 16:30

      Это было внутри одной компании?
      Мне интересно, как удавалось из senior X developer'а стать senior Y developer'ом, минуя junior/middle Y-стадии.


      1. peresada
        25.06.2018 16:46
        +1

        Зависит от X и Y, в любом случае градация junior-senior имхо зависит от языков в меньшей степени, чем от знаний основ-механики-процессов-принципов, а они чаще всего во многом похожи даже в совсем разных сферах.


      1. aikixd
        26.06.2018 09:26

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


  1. peresada
    25.06.2018 16:32

    К сожалению или счастью, это работает только в крутых и крупных компаниях, где можно позволить себе горизонтальные изменения в карьере. Но когда работаешь в неплохих, но все-таки небольших командах с штатом в 30-50 человек, такая смена деятельности практически невозможна, а менять сферу через смену работодателя — дичайший стресс (по-крайней мере для меня)


    1. Alexufo
      25.06.2018 17:36

      (по-крайней мере для меня)

      А пинком? я с февраля отхожу от внезапного сокращения плюс подлость отношений внутри коллектива конторы в не больше 8 человек. Без работы сложно первые пол года, потом начинаешь философствовать о бытии. Меня пока вообще пугает нормированный рабочий день потому что быт сложился вокруг ненормированного.Просто нужны родные ноги и руки не в рабочие часы именно дома. Сейчас хоть ребенок детсад закончил. Все клянчит засранец дорогие фигурки немецкие купи да купи — ща сынок, на работу устроюсь, закупим тебе, ты главное в папку верь и в его ремонт до твоей школы.


      1. peresada
        25.06.2018 17:52

        Ваша ситуация неприятна, но я скорее про противоположную ситуацию. Дорабатываю последнюю неделю в компании с штатом 60 человек, в которой мне нравилось работать и коллектив хороший, но ухожу сам, потому что предложили более перспективную, интересную и серьезную работу в компании с штатом в 17 000 человек. Так вот эта неделя, что я уже отработал перед уходом далась мне крайне тяжело и физически и морально — я именно про подобный стресс


  1. S_Gonchar
    25.06.2018 19:56
    +1

    Я проработал frontend-разработчиком примерно 2.5 года и сейчас изучаю backend… примерно месяца 3.

    Должен признаться, что я до сих пор в небольшом шоке, от того стека новых технологий и инструментов, которые мне приходится осваивать разом (Linux, Bash, Docker, Go, Hyperledger и пр.)…
    Еще есть проблема в том, что уже 3 месяца я ощущаю себя совершенно бесполезным в компании. И это при том, что когда я уже смогу «встать на ноги» — еще не ясно.

    Короче, лично мне этот переход дается очень непросто… Возможно, не хватает хорошего наставника «над душой».


  1. dmitry_dvm
    25.06.2018 21:23
    +1

    Перешёл из мобайла в бэкенд со сменой конторы, причем на удаленке. Благо дотнет и язык менять не пришлось. Уже 4 месяца работаю, не пожалел ни разу. Больше всего радует отсутствие верстки. Очень нравится масштаб и серьезность задач. А опыт использования апи со стороны клиента даёт понимание как делать его хорошо.
    Если хочется сменить направление — надо менять.


  1. corr256
    26.06.2018 03:48

    Человек наконец-то начал программировать… Интересно, как попал в qiwi, видать на собеседовании спрашивали головоломки вместо умения решать задачи.


  1. MaxLich
    26.06.2018 13:10

    Интересный рассказ. Но Вы не рассказали про бэк. На какой язык перешли? Какие технологии/фреймворки/ПО используете?


    1. mixalich7b Автор
      26.06.2018 23:28
      +1

      У нас большая компания, много проектов, стек очень разнообразный. Но в основном используем JVM, а именно Java и Spring Framework. Сейчас активно изучаем Kotlin, новые сервисы уже пишутся на нём. Так же есть проекты на Scala, там используем Play и Akka.
      Кроме того, есть проекты на Node.js, на Go. И ещё есть такая страничка stackshare.io/qiwi/qiwi, где перечислено, что мы используем (но не всё, что-то могли не добавить).
      А ещё мы начинаем деплоить в kubernetes, о чём обязательно напишем.
      В целом, у разработчиков достаточно свободы, и если какое-то решение принесёт пользу и получит одобрение команды, то его довольно легко продвинуть в наш стек.