Как пройти собеседование в GitLab, попасть в команду разработчиков Vue и стать Staff-engineer

7_cfnnbw-lookyymnev887x3y0a.png

В конце мая в нашем инстаграм-аккаунте выступала Наталья Теплухина — Vue.js core team member, GoogleDevExpret и фронтенд-разработчица. Мы анонсировали ее как Senoir, но за неделю до прямого эфира ее повысили и она стала первым Staff Frontend Engineer в Gitlab.

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

Делимся расшифровкой и записью эфира.

***

Меня зовут Наташа Теплухина, я одна из участников код-темы фреймворка VueJS; в частности, занимаюсь документацией, в данный момент для Vue 3. Работаю в компании GitLab, недавно меня повысили от senior до staff. Выступаю на конференциях. Больше всего интересуюсь Javascript, Vue и GraphQL.

Что значит знать Javascript на уровне middle для frontend?


Обязанности middle — не только знать Javascript, они выходят за пределы hard skills. Они ограничиваются скорее не техническим знанием Javascript, а спектром задач.

Допустим, junior должен уметь решать задачи с небольшой помощью и задавать вопросы, собственно, задавать вопросы должны уметь все. Middle, в отличие от него, должен решать свои задачи с совсем небольшой помощью и подсказками, причем это должны быть задачи среднего спектра. Senior берет гораздо более масштабные вещи, но middle работает в пределах своего проекта и команды.

Из какой вы школы?


Обычная средняя школа. У меня был физмат-класс два последних года.

Расскажи о собеседовании в GitLab?


Все процессы GitLab описаны в вакансиях и в handbook. Если вы собираетесь подаваться на что-либо, весь процесс описан пошагово.

При подаче на frontend-разработчика вы получите assessment — не технические задачи, а вопросы, к которым нужны развернутые ответы. У меня первый вопрос был «Зачем нужны frontend-фреймворки?» Ответ на него не очевиден, кстати. У меня он занял три листа А4 с примерами.

После успешного assessment вам пишет HR и приглашает на screening-интервью — это 40–45 минут разговора с HR. Обстановка неформальная, проверяются ваши soft skills и соответствие культуре GitLab: знание английского и общая адекватность.

Только после этого следует техническое интервью. Оно очень приближено к реальной работе, в отличие от «whiteboard» в Google. Часть процесса — не кодинг, а code review для реального кода (не для алгоритмической задачи).

После технического интервью идет behavior-интервью, здесь смотрят на то, как вы решаете задачи не на техническом, а на архитектурном уровне, проверяют, насколько вы понимаете, что такое performance, security, насколько вы подходите компании. Тут будут вопросы из серии «любимая/нелюбимая задача».

Опционально может быть еще один шаг — у меня это было интервью с VP of Engineering. У меня весь процесс занял семь дней; мне говорили, что это очень быстро. Может занимать до двух месяцев.

Как попасть в команду разработчиков Vue, какие знания необходимы?


Для этого безразлично, какие знания у вас есть сейчас. Требуются систематические contributions. Не нужен вариант «вы начали делать contributions сверхактивно, сделали за неделю огромное количество, тысячу DIF». Нужно долго делать contributions — минимум полгода — и коммуницировать с командой, быть предсказуемым.

Если вы хотите над чем-то работать — озвучьте это: на GitHub, в Discord, любыми способами. Еще вы должны понимать, зачем вам это: ведь с этого вам не будет финансовой выгоды. Это длинный занудный процесс, в ходе которого вас часто будут ругать. Представьте, что вы долго делали красивую, как вам кажется, библиотеку, а потом кто-то приходит и говорит: ваша библиотека… не очень. И вы сами… не очень. И такого будет много. Хвалить вас будут редко, потому что хорошее воспринимается как нечто само собой разумеющееся.

Дайте советы по вариантам удаленного первого трудоустройства junior?


Я не очень рекомендую идти на первую работу juniorом на удаленке. Я была тем самым junior, которому доступна только удаленка, работала удаленно на своей первой работе по frontend, и это требует немалой степени концентрации, сильной мотивации и некоторого time management. И, опять же, нужно не стесняться задавать вопросы.

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

Но если другого варианта нет, пытайтесь подаваться на различные remote-вакансии. Если все хорошо с английским, старайтесь не подаваться на удаленные вакансии в СНГ. У меня первая, короткая, удаленка была в польской аутсорс-конторе, она дала мне многое; мне кажется, с культурой удаленной работы там лучше.

С чего начать обучение, если ты гуманитарий?


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

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

Есть ли предвзятое отношение к девушкам в разработке?


У нас в GitLab нет. В последнее время повсюду меньше, скорее — неосознанное отношение, чем осознанная дискриминация.

Коснулась ли вас фашистская политика GitLab?


Начнем с той самой статьи на хабре — пишут, что «GitLab прекращает набор сотрудников из России и Китая».

В таких случаях всегда нужно поискать первоисточник. На самом деле, компания обсуждала, а не приняла решение о прекращении набора сотрудников всего на две должности из всех — для site reliability engineering. Эти должности имеют доступ к персональным данным клиентов, и были сомнения по этому поводу.

Решение о прекращении набора так и не было принято. Особенно забавно упоминание Китая: на тот момент мы в принципе не вели набора сотрудников в Китае. В country hiring guidelines, кстати, также нет Испании и Франции, из-за сложной налоговой политики. Наверно, французам тоже очень обидно. Но волна в русскоязычных пабликах из-за статьи получилась сказочная.

Задумывались ли о реализации частичной гидратации? Будет ли переход на fine-grained архитектуру и tagged templates?


О частичной гидратации задумывались, обсуждали этот вопрос в рамках команды Create, которая занимается issues с [18:53]ыми дискуссиями. Никакой имплементации пока не было, в ближайшие шесть месяцев точно не будет. Насчет перехода на fine grained-архитектуру — я считаю, что на frontend у нас уже есть такая архитектура, насчет backend не могу сказать. Tech templates мы используем.

Как освоить Vue, если сложно дается документация?


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

Я освоила Vue по документации, но, если она не идет, можно попробовать взять какой-нибудь из курсов. Например, Vue Master или Vue School, но мне кажется, что это будет, в основном, пересказ документации. Обязательно присоединяйтесь к Discord и к Telegram-каналам Vue, их есть два российских. В одном из них я — админ, попробую вам ответить.

Сколько задач с leetcode вы решили перед тем, как подать заявку на работу?


Ни одной. Меня несколько месяцев уговаривали подать заявку, причем это делала сотрудница GitLab. Я была уверена, что я не пройду, что это слишком долго, что 5 интервью это слишком много, и вообще «это не Google», но, в конце концов, решила попробовать. Алгоритмических задач в процессе подготовки не решала совсем.

Где брать таски для contribution по Vue?


Мы стараемся маркировать практически все, что можно взять как первое task, как first issue. Так как сейчас бета, можно брать практически любые tasks. Если хочется сделать важные contribution, не следует фокусироваться на core repository; там будут небольшие фиксы, и их могут мерджить неделями. Посмотрите в сторону Vue Test Utils; как только мы опубликуем документацию, tasks будет очень много.

Правда ли, что по Vue все решает Эван?


Решения принимаются и обсуждаются командно, особенно по чему-либо важному. То, что вы видите в репозиториях RFC, чаще всего проходит стадию внутренней дискуссии и внутреннего решения — для этого есть репозиторий Internal Discussions. Это не означает, что решение останется незыблемым, и что после публичного RFC не может быть изменений. Например, предварительное решение по attribute fallthrough менялось 4 раза, каждый раз — под влиянием сообщества.

На что можно рассчитывать в IT, не зная английского языка?


Честно скажу: учите английский. Проще сделать это и рассчитывать на что-то большее. Например, украинский IT-сектор работает в основном на аутсорс, с англоязычными клиентами.

Пишешь на других фреймворках?


Моим первым был AngularJS, как у многих, наверно. От 2 до 6, потом уже Vue.

Как ты учила английский?


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

Как уйти во frontend после тридцати?


Как я уже говорила, первый шаг — найти что-то, что интересно вам. Я до этого работала админом БД, и это не было интересно. Я переключилась во frontend довольно поздно, но мне действительно нравилось работать с Javascript и с CSS. Это давало мотивацию сидеть по 8–10 часов и учиться. Эта же мотивация поможет и в трудоустройстве. Если вы идете в первую junior-вакансию после 30-ти, то нужно учитывать, что оплата, вероятно (за исключением крайних случаев), будет в несколько раз меньше, чем на вашей предыдущей работе. И свободного времени тоже, скорее всего, будет меньше, так как учиться придется постоянно. К каждодневной учебе тоже нужно будет привыкать. Если все это вас не пугает, то — идите во frontend.

Расскажи о своем режиме дня?


Ох, вам не понравится. Мой день обычно начинается в 5.30–6 часов утра, не по будильнику (я жаворонок). Первые полчаса я стараюсь не касаться телефона и компьютера, чтобы спокойно проснуться.

Рабочий день начинается в 7.30–8 часов, в GitLab он не лимитирован. Понятия обязательных к отработке часов у нас нет, можно работать, когда угодно, и, в принципе, сколько угодно. Если вы закрываете все свои tasks за день за два часа — все нормально.

Я обычно начинаю с почты и закрытия todo в GitLab: tasks прилетают круглосуточно, так как сотрудники сидят по всему миру. Из того, что я проверила утром, я делаю небольшой список из маленьких tasks. Те, кто читал «Джедайские техники», в курсе: задачи должны быть простыми, понятными, выраженными в виде действия «сделать что-либо» и небольшими, то есть, я всё разбиваю на маленькие удобоваримые кусочки, которые вношу в список Notion.

Дальше работаю по списку. Обычно я стараюсь наработать по 4–5 продуктивных часов в GitLab — то есть у меня открыты только IDE, localhost, сам GitLab, терминал, GitHub. Как только эти часы наработаны, я стараюсь закончить работу на день.

Время я отслеживаю не для работодателя, а для себя, чтобы не переработать. Дальше я делаю перерыв на 1.5–2 часа и перехожу к contributions во Vue.

На какое время планировать миграцию на Vue 3?


Я не могу сказать, когда релиз. Будет зависеть от проекта.

Оцени состояние рынка аутсорс под влиянием коронакризиса?


Я сейчас не работаю в аутсорс, поэтому для меня это сложно. У меня есть только небольшая выборка знакомых, которые там работают; из них процентов 10 ушло в резерв (без проектов, но с зарплатой), но никого не уволили.

Как выбрать направление в программировании, которому будешь учиться с удовольствием?


Пробуйте. Просто пытайтесь попробовать как можно больше направлений.

Как начать выступать на технических конференциях, что это дает?


Я могу только рассказать о том, как я сама начала выступать на конференциях.

У меня был фактор везения. Я начала выступать потому, что меня пригласили на конференцию. Я проводила бесплатный воркшоп на бесплатной конференции, которая называлась VueJS Roadtrip.

Она проходила в Париже. Я летела проводить воркшоп, я до этого никогда не выступала как спикер, даже на митапах. У ребят пропал спикер, и мне предложили его заменить. Сначала было, конечно, очень страшно, было страшно даже согласиться, но я решила, что в любом случае ничего не теряю: не получится — значит, это не для меня; получится — почему бы и нет. Я сделала доклад по Vue + RxJS. Как ни странно, мой доклад понравился, и меня позвали еще на две конференции.

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

Выступления на технических конференциях развивают «персональный бренд». Вас будут узнавать.

Собственно, в GitLab меня позвали после одной конференции. Я на ней не выступала, просто участвовала в обсуждении и меня спросили о сложном task. Я оценила, насколько смогла, рассказала, что я бы делала в этой ситуации. Мы разговорились, начали общаться, и, в конце концов, мне сказали: «Почему бы тебе не податься в GitLab?» То есть, бонус не совсем прямой, но работает.

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

Кто помогает с ребенком, пока ты работаешь?


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

Какие книги и видеоуроки рекомендуете?


«Чистый код» рекомендую почитать в любом случае, для развития (хотя считается, что он устарел и неинтересный). Видеоуроки — смотря по какой технологии.

Task, который развил тебя очень сильно?


Я думаю, такие task касались в основном не технических скиллов, а soft skills и коммуникаций. Самая сложная вещь в работе — это не код, а люди.

Что, если пропала мотивация к работе на текущей роли и не знаешь, куда дальше подаваться?


Если не знаете, куда дальше подаваться, не стоит сразу менять работу. Это скорее приведет к череде смен работ. Попытайтесь сначала найти что-то, что нравится.

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


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

К вопросу о том, как стать успешным: нужно вначале определить, что вы подразумеваете под успехом. Допустим, для меня «работать в Google» — не успех, но для кого-то — успех; кому-то нужна популярность. Определите для себя успех и действуйте, исходя их этого. Пиар действительно забирает много времени и сил — то есть, если вы целенаправленно хотите пиарить себя, это будет тяжелая работа.

Знаешь ли ты людей, которые на год уходили из разработки, но потом возвращались?


Знаю таких людей. Это была ruby-разработка, уровень тимлида; человек ушел на полтора года, потому что выгорел. Устроил своеобразный долгосрочный отпуск. Возвращаться было тяжело, человек сменил профиль — не в плане стека, он остался разработчиком, но перестал быть тимлидом: сказал, что ему интереснее писать код, чем руководить командой. Он вернулся в качестве senior, а сейчас он architect.

Использовали ли «чистую архитектуру» для приложения Vue?


Я — нет.

Принимались ли решения во Vue без участия Эвана?


Если брать core, то там все решения согласовываются с Эваном — если мы говорим об архитектурных решениях. Если брать экосистему, то, например, по Router и VueX он не принимает решений; за тем, как мы пишем доки, он тоже не следит.

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

Оставите Options?


Мы изначально планировали оставить Options API как основной.

Насколько важны soft skills? Почему при приеме в GitLab на них смотрят в первую очередь?


GitLab это полностью удаленная команда. В такой команде коммуникация — это самая важная вещь. Здесь нет возможности улавливать эмоции, когда человек разговаривает, и очень легко что-то понять неправильно.

При приеме смотрят на коммуникации потому, что, если взять человека, который плохо коммуницирует и обладает плохими soft skills, это будет создавать ненужные проблемы в будущем. Когда мы набираем разработчиков во frontend, мы не требуем знания Vue — это просто хорошее дополнение, так как мы набираем frontend-javascript-разработчиков. Soft skills здесь гораздо важнее, чем знание Vue.

Почему ты ушла из Angular во Vue?


Мне просто больше нравится Vue. Вторые Vue и Angular выходили осенью 2016 года, и я оба пробовала в бете. Я тогда и решила перейти на новую версию Vue вместо Angular.

Сталкивалась ли ты с гендерной дискриминацией?


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

Почему люди постоянно используют VueX для хранения бизнес-логики?


Они используют VueX для хранения локального состояния приложений чаще всего, так что не знаю.

Почему вакансий на Vue так мало, и почему доминирует React?


Поставьте себя на место работодателей. Вот ваша компания, ей нужно нанять разработчиков и не важно, outsource или product. За React стоит Facebook, и этот фреймворк развивается в первую очередь под нужды Facebook — хотя мало кто задумывается об этой оборотной стороне. Кроме того, на рынке больше людей с опытом работы в React, поэтому компании ориентируются на React, чтобы облегчить поиск разработчиков. Хотя в последнее время это меняется, и вакансий для Vue стало гораздо больше, тренды сложно переламывать в силу привычки людей.

Scoped или Module стили для компонентов?


Ни то, ни другое. В GitLab — CSS, он не коррелирует с компонентами.

Есть ли в GitLab дискриминация по возрасту 40+, или разумный подход и смотрят по скиллам?


У нас нет дискриминации фактически ни по какому признаку. Нам нужны скиллы.

Многие ругают PHP за лапшакод, а React с JSX — это не тот ли PHP в профиль?


Не знаю. Лапшакод можно написать в чем угодно.

Можно ли где-нибудь найти стайл GitLab?


Можно открыть наш репозиторий и посмотреть. У нас есть дизайн системы для тех компонентов, которые называются GitLab UI, плюс стили в GitLab.

Расскажи про staff-позицию


Staff — это следующая позиция после senior. Senior может стать инженером-менеджером, если ему нравится менеджмент — по сути, это тимлид.

Это руководство командой, планирование, распределение tasks, обсуждение их с командой, коммуникации с другими командами и отделами. Если нет желания руководить людьми, то можно стать staff-инженером. Такой инженер работает не на уровне своего продукта, команды или приложения, и даже не на уровне stage, а на уровне всего frontend. Кроме того, он выполняет функцию наставника. У него есть какая-либо экспертиза, важная для компании, и ему должно нравиться делиться этими знаниями.

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

В моем случае экспертизой был GraphQL Apollo. То есть, я была разработчиком, который работал с первым более-менее цельным приложением frontend, которое использовало наш GraphQL API. У нас по frontend-команде есть люди, знакомые с GraphQL, но их немного, при том, что у нас есть идеология «GraphQL First» — то есть, все новые фичи должны писаться с его использованием.

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

RXJS vs Redux, что лучше для контроля состояния?


RXJS — это не про контроль состояния, здесь нужен NJRX. RXJS это эффективное функциональное программирование. Но мне лучше VueX. Альтернатив более двух: можно использовать NJRX с React, например.

Почему выбрали GraphQL?


Чтобы сэкономить время: мы с Ильей Климовым делали доклад в прошлом году на GraphQL Summit. Там есть подробный ответ на вопрос о том, почему мы (то есть, не мы лично, а компания GitLab — тогда мы еще не работали в GitLab) выбрали GraphQL.

Чем отличается русскоязычное сообщество разработчиков от англоязычного, и к чему это ведет?


Все нижесказанное это только мой личный опыт.

Допустим, в разработке я вижу ревью от человека из стран СНГ и от человека из Западной Европы или США, и они принципиально отличаются. Просто все мы учились в постсоветских школах, где работал «синдром красной ручки» — то есть, все, что делается хорошо (красиво, элегантно, оптимально) это само собой разумеется, и остается за кадром.

В ревью будет только красная ручка — то есть, напишут только о том, что вы сделали плохо (и хорошо, если напишут корректно). При этом ревьюер будет считать, что он старался и находил недостатки, и его ревью нельзя быть недовольным.

Если ваш pull request / merge request ревьюит человек из Западной Европы, то там чаще всего будет одобрение (или принцип бутерброда: 30% похвалы, потом тоненькое «а здесь можно доработать», а потом снова похвала). Это воспринимается куда лучше.

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

Будущее Vite?


Не берусь предсказывать, но это точно не замена стандартным сборщикам и Vue CLI — Эван сам об этом открыто говорит. Хотя сложно предугадать, во что выльется работа Эвана — он написал Vitepress спустя три дня после Vite.

Через сколько имеет смысл устраиваться на позицию junior?


Зависит от темпов обучения. Насколько быстро усваиваете информацию, насколько чувствуете себя готовым.

А что дальше?


Следующий прямой эфир пройдет в ближайший вторник, 9 июня в 20:00.
CTO Okko Алексей Голубев будет отвечать на ваши вопросы в прямом эфире.
Эфир пройдет в нашем инстаграм-аккаунте.

Задать ему вопрос можно в комментариях к этому посту


Что было ранее


1. Илона Папава, Senior Software Engineer в Facebook — как попасть на стажировку, получить оффер и все о работе в компании
2. Борис Янгель, ML-инженер Яндекса — как не пополнить ряды стремных специалистов, если ты Data Scientist
3. Александр Калошин, СEO LastBackend — как запустить стартап, выйти на рынок Китая и получить 15 млн инвестиций.

guabcgmwuqoopx1ar80sjpz6keq.png

th52embsjtpv4z8oy94vsykmjgy.png

© Habrahabr.ru