В марте на Хабр Карьере проходила карьерная неделя фронтенда. Карьерная неделя — это что-то вроде дня открытых дверей, который длится всю неделю. На этот раз за специалистов боролись Альфа-Банк, Домклик, МойОфис и МТС.
В конце недели специалисты задают вопросы представителям компаний-работодателей, а мы выбираем самые интересные из тех, что не успели обсудить и отправляем спикерам. Вопросов всегда приходит много, поэтому разбиваем ответы на две части, и эта — вторая. В этой части обсуждали старт карьеры, наем джунов и технологии в компаниях.
Кто отвечал на вопросы
Кирилл Павлик
ведущий frontend-разработчик в Альфа-Банке
Денис Красновский
руководитель направления разработки в Домклик
Роман Животягин
руководитель группы разработки в МойОфис
Софья Жукова
ведущий рекрутер в МТС Диджитал
Инесса Костюк
ведущий рекрутер в МТС Диджитал
Алексей Охрименко
технический руководитель, IT-кластер «МТС-Медиа»
О старте карьеры и найме джунов
Насколько сложно сейчас войти в IT? Насколько высокий уровень знаний должен быть?
Кирилл Павлик: Зависит от проекта, его потребностей и сферы деятельности самой компании. В продуктовой разработке есть программы стажировок. Здесь необязателен коммерческий опыт. Но чем «круче» продукт, тем больше спрос у кандидатов в стажёры. Получается, сами кандидаты задают планку по уровню знаний.
Аутсорсеры, по сути, перепродают разработчиков, поэтому могут заложить какое-то время и средства на закрытие пробелов нового сотрудника. Главное, зарекомендовать себя своими усвоенными знаниями и их качеством.
Денис Красновский: Для того чтобы войти в IT, нужны базовые знания: css, html, js и, например, любой фреймворк или библиотека React, что душе ближе. Также помогает опрятность, дружелюбие и желание работать.
Роман Животягин: Сегодня обилие курсов и программ обучения, при желании всегда можно найти работу джуном. Для джунов обычно требования не очень высокие, надо иметь базовые представления о том, чем вы начали и планируете заниматься, ну и хотя бы какой-то минимальный опыт, например свой домашний проект. IT — широкое понятие, здесь не только разработчики, но и дизайнеры, тестировщики, DevOps-инженеры, аналитики и много других направлений деятельности. Главное — заниматься тем, что нравится.
МТС: К сожалению, довольно сложно. Будьте к этому готовы.
Как вы относитесь к тому, что джун будет работать удаленно, а не в офисе?
Кирилл Павлик: Для команды важно вовлечение. Если расстояние между коллегами незаметно в процессе работы, то формат взаимодействия не важен. Но нужно учитывать процесс адаптации. Заочно он проходит сложнее.
Денис Красновский: Для того чтобы войти в IT, нужны базовые знания: css, html, js и, например, любой фреймворк или библиотека React, что душе ближе. Также помогает опрятность, дружелюбие и желание работать.
Роман Животягин: Мы придерживаемся точки зрения, что гибридный формат работы наиболее оптимален.
МТС: Мы положительно относимся к удаленной работе для джунов, так как она может быть эффективной при наличии хорошей коммуникации и поддержки со стороны опытных коллег. Однако для максимальной эффективности стажерам и джунам может потребоваться некоторое время адаптации к новому формату работы и активное взаимодействие с командой.
Стоит ли junior-frontend разработчику изучать бэкенд для полного понимания процессов, происходящих в проекте?
Кирилл Павлик: Зная основные понятия и принципы, будет проще изъясняться с коллегами. Сами технологии бэкенда тоже будут подспорьем, но уже опционально.
Денис Красновский: Junior-frontend разработчику стоит прокачивать навыки до senior-frontend разработчика, а после уже смотреть на другие стеки.
Роман Животягин: Да, однозначно.
МТС: Да, изучение бэкенда может быть полезным для junior-frontend разработчиков, так как это поможет:
Лучше понять общую архитектуру проекта и взаимодействие между клиентской и серверной частями.
Облегчить коммуникацию с бэкенд-разработчиками и позволит быстрее решать возникающие проблемы.
Расширить навыки и возможности для участия в различных проектах и улучшения карьерного роста.
Однако стоит учесть, что изучение бэкенда может занять много времени и усилий, поэтому рекомендуется сначала освоить фронтенд-разработку и закрепить навыки, а затем постепенно изучать серверную часть.
Есть ли стажёрские программы на направление фронтенд?
Кирилл Павлик: Будут в мае.
Денис Красновский: У нас раньше были, на текущий момент нет.
Роман Животягин: В нашей компании я о таких не слышал, однако у нас развита практика менторства: каждый новый сотрудник всегда получает наставника, помогающего ему освоиться.
МТС: Да, вакансии периодически обновляются. Их можно смотреть на нашем сайте.
Почему в тестах на стажировку/джуна любят задавать вопросы на знание специфических методов и тегов, а не то, что может действительно встретиться в работе джуна? Как к этому подготовиться?
Кирилл Павлик: Собеседование — проверка кандидата на соответствие не только по уровню знаний, но и по софтовым качествам. Возможно, вопрос задавался с целью посмотреть на реакцию кандидата, как он поведёт себя в тупиковой ситуации. А возможно, такое действительно встречается в проекте и важно выяснить, какие у джуна есть пробелы на данный момент, сколько времени понадобится на их закрытие. Лучшая подготовка — сами собеседования. Можно смотреть записи на ютубе, но лучше всего это собственный опыт. Не стесняйся идти на собеседование. У всех разное отношение к собственным знаниям. У проектов — разные требования. Вдруг именно тебя им сейчас не хватает?
Денис Красновский: Вам задали вопрос, на который вы не смогли ответить;
Запомните вопрос;
Изучите материал, чтобы в следующий раз на него ответить;
Идите снова на собеседование, специфические вопросы рано или поздно закончатся.
Роман Животягин: Думаю, это связано с проверкой опыта. Если человек, будучи джуном, не сталкивался или даже не слышал, например, про методы массива reduce или map, то, возможно, это совсем начинающий джун. Хотя, опять же, это индивидуально и зависит от опыта. На мой взгляд, более важным является базовое понимание языка программирования. Подготовиться — читать учебники и практиковаться, желательно на реальных задачах.
МТС: Это нужно, чтобы понять, насколько ты глубоко погружался в тему, насколько не боишься нестандартно мыслить. Конечно, это помогает в первую очередь понять ход мысли при появление сложных задач. Как подготовиться? Глубоко погружаться в теорию разработки и обладать нескончаемым любопытством.
Являются ли проекты из научной деятельности и хакатоны аналогом коммерческой разработки?
Кирилл Павлик: Почему бы и нет? Главное, чтобы их можно было заранее посмотреть и оценить опыт кандидата, сложность решённых задач.
Денис Красновский: Больше нет, чем да. Хочу отметить, что всем известные курсы повышения квалификации так же не являются аналогом коммерческой разработки.
Роман Животягин: Мне кажется, нет, не совсем. Основная задача коммерческой деятельности — получение прибыли. А научная деятельность и хакатоны — это некий предварительный этап, научная деятельность в итоге часто выливается в коммерциализацию, например, открытие новых веществ, или физических законов, которые упрощают жизнь людям, но, на мой взгляд, в науке и хакатонах всё же больше творчества и вдохновения.
МТС: Это явно преимущество перед другими кандидатами, но аналогом коммерческой разработки это не является. В хакатоне или научной работе у тебя нет заказчиков и финансовой ответственности, в коммерции больше ограничений, в том числе продуктовых требований.
Существует ли негласная дискриминация по возрасту кандидатов?
Кирилл Павлик: Перед собеседованием, обращаем внимание на возраст, как на один из факторов. Кто-то в 21 претендует на сеньора. Кто-то в 40 — на джуна.
Подход разный к таким кандидатам, но если резюме попадает в ожидаемую вилку по скилам, то разговариваем со всеми.
Денис Красновский: В нашей компании такого нет, по крайней мере я такого не замечал.
Роман Животягин: Нет, во всяком случае, я об этом не слышал. Хотя, конечно, в IT в целом есть некоторая корреляция между возрастом и родом деятельности. Например, многие современные разработчики в среднем значительно моложе, чем 10-15 лет назад. Думаю, это связано с современной популярностью IT-сферы. Однако в моей практике собеседований встречались отличные кандидаты «за 40» и явно не дотягивающие даже до уровня джуна недавние студенты.
Алексей Охрименко: Если кандидат обладает актуальными навыками и опытом, а также готов учиться и развиваться, возраст не является препятствием для трудоустройства и карьерного роста.
О технологиях
Что думаете про влияние ИИ на веб-разработку? Что думаете насчёт создания ИИ на js и в частности, Tensor flow?
Кирилл Павлик: Не ощутил влияния настолько, что даже не знаю, что такое Tensor flow.
Роман Животягин: ИИ — крутая штука, которая не является интеллектом как таковым, в понимании «интеллект человека». ИИ в настоящий момент уже используется как помощник разработчика (ChatGPT, Copilot). Про Tensor flow только читал, не работал, но думаю, что в ближайшее время нас ждёт серьёзное изменение ландшафта разработки.
Алексей Охрименко: ИИ уже оказывает влияние на веб-разработку, помогая автоматизировать процессы, улучшать пользовательский опыт и создавать инновационные продукты. Использование JavaScript для создания ИИ, в частности с помощью TensorFlow.js, является интересным и перспективным подходом, поскольку JavaScript — один из самых популярных языков программирования и имеет широкую экосистему.
Имеет ли смысл писать фронтенд на Vanilla Typescript, без использования фреймворков?
Кирилл Павлик: Почему бы и нет? Написать всё самостоятельно — отличный путь, чтобы убедиться в отсутствии магии, а заодно понять, как всё работает внутри.
Денис Красновский: Если ваш продукт настолько простой, что вам не нужен фреймворк, то и typescript вам там тоже не нужен. Можно использовать шаблонизатор + ванильный js. В ином случае лучше сразу упаковаться в любой фреймворк, чтобы иметь возможность расширять тяжелой функциональностью ваш продукт.
Роман Животягин: Зависит от задачи, если это какой-то проект, требующий высокой безопасности и отсутствия сторонних зависимостей, то, думаю, да.
Алексей Охрименко: Писать фронтенд на Vanilla TypeScript без фреймворков имеет смысл в случаях, когда проект небольшой и не требует сложной архитектуры или когда требуется максимальная производительность и контроль над кодом. Однако для больших и сложных проектов использование фреймворков может существенно упростить разработку и обеспечить лучшие практики.
Что думаете на счет solidjs и его перспектив?
Кирилл Павлик: Попробовал бы в небольших проектах, не предусматривающих долгой поддержки. Для меня SolidJS — аналог Preact. Синтаксис плюс-минус тот же. Занять свою нишу SolidJS поможет пуш со стороны кого-то из гигантов в ближайшее время. Если оно им, конечно, нужно.
Алексей Охрименко: SolidJS — это относительно новый фреймворк. Он имеет потенциал стать популярным, но пока мне еще не удалось его изучить или поработать.
Легаси в моде?
Кирилл Павлик: За полгода обучения на одном курсе для фронтендеров я увидел, как одна версия популярной технологии в начале курса была в RC версии, а к концу — стала deprecated. Так что, легаси — неотъемлемая часть долгоживущего проекта. Нужно следить за балансом, как work/life.
Роман Животягин: Где-то да. Но по опыту собеседований могу сказать, что большая часть кандидатов всё же хочет современный стек. Хотя лично я люблю легаси.
Алексей Охрименко: Легаси-технологии не всегда считаются модными, но они часто используются в корпоративных и крупных проектах из-за существующей инфраструктуры и затрат на миграцию. Работа с легаси-системами может быть ценным опытом, так как это позволяет разработчикам учиться на примере старых решений и применять лучшие практики для современных разработок.
Зачем так много библиотек, фреймворков и нетрадиционного стека?
Кирилл Павлик: Разные задачи, разные команды, разное время. Какой-то проект стартанул сразу на функциональных компонентах реакта (или на третьем вью), а другой начался ещё в конце нулевых и вынужден поддерживать в проде высоконагруженное приложение, где теперь без зоопарка никуда.
Роман Животягин: На этот вопрос сложно ответить. Думаю, ни у кого никогда не было цели создать множество библиотек и фреймворков. Разработка — это мир свободы, люди решают задачи, оформляют их в виде кода и безвозмездно делятся с другими. По-моему, это прекрасно.
Алексей Охрименко: Большое количество библиотек, фреймворков и нетрадиционных стеков связано с быстрым развитием веб-технологий и разнообразием задач, стоящих перед разработчиками. Они предоставляют различные подходы и инструменты для решения определенных проблем, что позволяет разработчикам выбирать подходящие для их проектов и предпочтений.
Какой технологический стек выбран у вас в компании и почему именно он?
Кирилл Павлик: У нас простой стек: TS, React, Redux Toolkit, postCSS и свой UI-kit.
Денис Красновский: react, redux, saga/thunk, react-router, sass, typescript, nodejs, express, webpack, rollup. Годами проверенный стек и большое комьюнити.
Роман Животягин: В МойОфис множество продуктов и, соответственно, нет единого технологического стека. Могу сказать, что в нашем фронтенд-сегменте проекта Mailion мы поддерживаем в настоящий момент 2 стека: Polymer 2.0 и React/TypeScript. Это связано с тем, что, как я упоминал ранее, мы пошли по пути гибридного приложения и микрофронтендов.
Алексей Охрименко: У нас Angular. Несколько причин почему он:
1) Зрелость и стабильность: Angular — это зрелый и хорошо поддерживаемый фреймворк, разработанный и поддерживаемый Google. Это может обеспечить стабильность и долгосрочную поддержку для ваших проектов.
2) Охват функциональности: Angular предлагает широкий спектр инструментов и возможностей из коробки, таких как двусторонняя связь данных, зависимости, и модульность. Это может упростить разработку и ускорить процесс создания приложений.
3) Поддержка TypeScript: Angular полностью интегрирован с TypeScript, что позволяет разработчикам использовать строгую типизацию и современные возможности языка для написания более безопасного и поддерживаемого кода.
4) Интеграция с другими инструментами и сервисами: Angular хорошо интегрируется с различными библиотеками и инструментами, что может быть полезно для комплексных проектов и расширения возможностей приложения.
5) Широкое сообщество и ресурсы: Angular имеет большое и активное сообщество разработчиков, а также множество обучающих материалов и ресурсов, которые могут помочь вашей команде быстрее освоить технологию и решать возникающие проблемы.
Эти факторы могут объяснить выбор Angular для нашей компании, хотя выбор технологического стека зависит от специфических требований, целей и предпочтений команды.
Больше технический вопрос: компании крупные и скорее всего используют микрофронтенды. Собственно, вопрос: как в своих проектах они шарят стор для микрофронтов?
Кирилл Павлик: У нас довольно сложная инфраструктура. Фронт не ходит напрямую в бэк. Есть прослойка, которую мы называем «мидл». Это нам помогает обходиться изолированными приложениями. Каждому микрофронту достаточно своего стора. Некоторые приложения даже обходятся без стора вообще.
Денис Красновский: Мы не используем, у нас разные команды занимаются разными приложениями.
Роман Животягин: Думаю, все по-разному, но какой-то проблемы здесь не вижу. Во-первых, не всегда нужен шареный стор. Во-вторых, стором может выступать просто объект в глобальной области видимости. Для взаимодействия микрофронтендов можно реализовать некий «мост» обмена данными.
Алексей Охрименко: На моей практике для микрофронтендной архитектуры стараются избегать общего стора для приложений. Обычно синхронизация происходит через бэкенд. Зачастую это связано с тем, что наличие глобального стора приводит к связанности, от которой люди стараются уйти, переходя на микрофронтенды.
Что почитать
Список книг, ссылок, статей, подкастов, курсов и всего остального, что обязательно нужно прочитать фронтендеру.
Денис Красновский
JavaScript: сильные стороны | Дуглас Крокфорд;
Секреты CSS.Идеальные решения ежедневных задач | Леа Веру;
Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих | Бхаргава Адитья;
Роман Животягин
Современный учебник по JS — learn.javascript.ru;
Д. Фленаган “JavaScript. Полное руководство”;
Ресурс MDN;
Замечательный ресурс по HTML/CSS — htmlbook.ru.
МТС
"You Don't Know JS" (серия книг) от Kyle Simpson
Ссылка на GitHub."Eloquent JavaScript" от Marijn Haverbeke
Онлайн-версия
Подкасты:
Web-Standarts
Официальный сайтSyntax - Tasty Web Development Treats
Официальный сайтFront End Happy Hour
Официальный сайт
Статьи:
"How browsers work"
Ссылка на статью"A Complete Guide to Flexbox"
Ссылка на статью"A Complete Guide to Grid"
Ссылка на статью"Frontend Developer Roadmap"
Ссылка на статью