Как сменить стек и устроиться на работу мечты: разработчица из геймдева Нелли Хван
Как найти работу за две недели, что делать с синдромом самозванца и чем разработка для геймдева отличается от веб-разработки.
Иллюстрация: macrovector / Freepik / bearfotos / Дима Руденок для Skillbox Media
Нелли Хван
Создаёт бэкенд на Node.js и фронтенд на Vue.js в студии по разработке игр Bohemia Interactive. Продукты студии — Arma, DayZ, Ylands, собственный движок Enfusion Engine. Любит собак, особенно шелти.
Мой путь в IT был достаточно тривиальным. Я из тех айтишников, которые отучились в университете и потом пошли работать по специальности. Две мои двоюродные сестры — тоже программистки, так же как их родители — мои дядя с тётей. Поэтому было достаточно предсказуемо, что и я поеду учиться на программиста в Томский политех.
Я училась на кафедре «Прикладная информатика в экономике», у нас в группе было достаточно много девчонок, но разработчицами в итоге стали только две — я и моя подруга. Другие предпочли вкатываться в «1С:Бухгалтерию» или экономику.
Первая работа за две недели
Мне было очень важно работать именно программистом, и я очень волновалась: опыта никакого, только лабы и практические работы в университете — даже при кафедре поработать не удалось.
Я отправила своё сырое резюме на позицию Junior web-разработчика, а мне предложили писать на Python. В качестве тестового дали админку. В тот же день я купила книжки по Python и Django и выполнила задачу настолько хорошо, насколько смогла. До сих пор обидно, что мне сначала ответили, что хотят посмотреть и других кандидатов, а потом и вовсе перестали выходить на связь — даже не соизволили прислать отказ.
Из-за этой ситуации я даже впала в отчаяние, хотя и ненадолго. В итоге в Python я так и не вкатилась, потому что язык мне не понравился ещё на этапе тестового. Однако «не понравился» — субъективное мнение, у меня было не так много времени, чтобы разобраться в нём глубже. Оттолкнула меня необходимость строгого форматирования: все эти отступы, точки, запятые. Помню, как у меня не запускался код, потому что я забыла поставить точку с запятой — а тестовое я писала в обычном текстовом редакторе, который не умел подчёркивать такие ошибки.
Однако Томск хорош тем, что там легко вкатиться в IT. Это очень многолюдный студенческий город, и найти работу джуну довольно легко. Всего спустя две недели поисков я встретила своих первых работодателей. И надо сказать, что две недели поисков — это очень недолго.
Вообще, мне удаётся очень быстро получать новые офферы — я не особо избирательна. Обычно принимаю первое же подходящее предложение, потому что до сих пор не преодолела синдром самозванца или я просто не шарю.
На первой работе мне сказали, что всему научат, и предложили писать на PHP. Я обрадовалась, так как выпускную квалификационную работу писала как раз на нём. Меня попросили прочесть книгу Learning PHP, MySQL & JavaScript, и так я начала получать 10 тысяч рублей в месяц в далёком 2013 году.
Книгу надо было читать главами, а мой лид ежедневно гонял меня по материалу и объяснял, как всё работает. Где-то не соглашался с теорией книги, где-то показывал примеры.
Переход из веба и PHP в геймдев и JavaScript
Я всё время что-то изучаю, чтобы в собственных глазах быть достаточно квалифицированной для лейбла «программист». Сейчас я больше сфокусирована на том, чтобы углубиться в основы, — поняла, что остались базовые вещи, которые я не дотянула ещё в университете. Например, разбираюсь со структурами данных и алгоритмами, решаю задачи на LeetCode и HackerRank.
Изучать новую технологию я начинаю с документации. Если мне чего-то не хватает, гуглю и пишу учебный проект. Обычно мне сложно придумать собственную идею для проектов, поэтому, как правило, я беру готовые проекты и учусь на них. В локальном репозитории у меня часто лежит один и тот же проект, выполненный несколькими способами с помощью разных технологий.
Я долгое время писала на PHP. На JavaScript и Node.js перешла совсем недавно. В какой-то момент просто захотелось попробовать писать API на чём-то другом, и я решила попробовать Node.js и разделить полностью бэкенд и фронтенд.
Мне нравится писать на JS — он странненький и немного уродливенький. И хотя у них с PHP совсем разные функции, я не чувствую отторжения ни к одному из них.
Проработав три года в российской компании, я захотела релоцироваться, чтобы получить новый опыт. Сначала искала работу в Германии, но оффера так и не получила. Когда прорабатывала эту тему с психотерапевтом, выяснилось, что я отправила слишком мало резюме. Потом решила уехать в Чехию, и уже на третье моё письмо мне предложили работу.
Я рада полученному опыту и возможности работать на англоязычном проекте. А именно за новым опытом и возможностью подтянуть знание английского я и ехала. Но сейчас я думаю, что, возможно, Чехия была не лучшим решением, что я в принципе мало обдумывала свой переезд. Сейчас задумываемся о Нидерландах или Канаде, но пока это просто мысли.
На текущую работу в Чехии я попала так: сначала собеседовалась на другую позицию, для которой нужен был чешский язык. А его я знаю не очень хорошо. В результате мне предложили пройти ещё одно интервью — уже на другую вакансию. Я пришла на собеседование, думая, что меня будут гонять по PHP, а меня начали спрашивать по JavaScript, в котором я «плавала». Но каким-то образом я всё-таки прошла интервью, и меня пригласили на тестовый рабочий день. Я взяла полдня отпуска на предыдущей работе и пришла.
Не делайте так, это неправильно — правда, поняла я это только сейчас.
Меня попросили переписать код со старого фреймворка Express на Koa и запушить то, что успею. Результат команду устроил, мне прислали оффер, и я с радостью уволилась, чтобы выйти на новую работу.
Правда, на предыдущей работе я передавала дела в течение двух месяцев, а за это время в моей новой компании ушли четыре программиста — и ни один из них не мог сопровождать проект бэк-офиса на PHP. И эту работу предложили делать мне — то есть поменяли оффер.
Когда живёшь в стране по трудовой визе, отказать страшно — и я согласилась работать на PHP дальше, хотя очень хотела сменить стек. Спустя год и девять месяцев у меня получилось: полгода мне искали замену, в итоге нашли двух ребят, а мне после внутреннего собеседования позволили перейти в геймдев.
Сначала я две недели провела на другом игровом проекте компании — просто чтобы показать, что я могу, ведь у меня не было коммерческого опыта ни с Node.js, ни с бэкендом на JavaScript. Без этой внутренней стажировки команда не могла сказать, подойду я или нет для игрового бекэнда. Я усиленно стажировалась, и в конце концов меня взяли в геймдев. Я очень рада, что это удалось, потому что изначально хотела работать в этой сфере. Правда, ожидание в год и девять месяцев немного притупило радость от достижения цели.
Для меня работа в геймдеве — это совсем другая предметная область. По факту я делаю то же самое, что и разработчики в других сферах — создаю методы и классы. Специфика именно в самой индустрии: в геймдеве совершенно другие сущности. У нас есть игрок, внутриигровые процессы — с ними мы и работаем. Тот же профиль игрока, например, сильно отличается от профилей пользователей веб-приложений, которые я писала на PHP.
Писать бэкенд для игр мне сложнее, чем для веба. У нас в компании есть игровые программисты, которые пилят логику игры, есть API, а на последнем этапе мы — бэкендеры — должны всё объединить. Мне эта работа кажется сложнее и масштабнее, чем при работе над веб-приложениями.
Я люблю писать код. Я тот человек, которого называют кодером, а не разработчиком или программистом. В результате я поднимаю достаточно крутые задачи — и каждую из них могу делать очень долго, потому что декомпозирую её сама, без ЦУ в Jira и спринтов. Например, одна из моих задач — полностью написать бекенд для игры.
Тем, кто хочет вкатиться в бэкенд, я бы рекомендовала начать с азов: перечитать, как работают компьютер и браузер, как передаются запросы. Также нужно знать алгоритмы и структуры данных. Для этого можно попробовать пройти курсы, не обязательно платные.
Многим советуют книгу Кнута «Искусство программирования». Мне кажется, почти все её начинают, но не все дочитывают. Мне не особо понравилась подача информации: её много, и она сложно структурирована, поэтому я её не советую, но это имхо.
В будущем хочу развиваться как программист и углублять свои знания — я пока не вижу себя в роли менеджера, так как слишком люблю писать код и не хочу от этого уходить.