И несмотря на то, что какую-то часть инструментов мы уже заменили на современные аналоги (Storybook вместо витрины, Webpack вместо самописного сборщика), сама методология для декомпозиции интерфейсов всё ещё остаётся актуальной и используется нами в современном React‑стеке.
Поэтому у нас давно есть отдельная команда, которая создаёт и поддерживает общую библиотеку компонентов для всех используемых фреймворков. Причём её существенная часть лежит в открытом доступе как open source решение.
Но справедливо будет заметить, что не все сервисы используют одну общую библиотеку — они могут делать выбор самостоятельно, и иногда это приводит к частным решениям.
Поэтому мы написали собственную систему контроля версий Arc и интерфейс к ней — Arcanum. Впрочем, некоторые команды используют GitHub Enterprise или даже приватные репозитории в публичном GitHub.
Например, мы первопроходцы в визуальном тестировании — инструментов не было, поэтому мы сделали свой под названием Hermione. Он умеет параллельно запускать UI‑тесты в самых разных браузерах с помощью Selenium и использовать сравнение скриншотов.
Кроме автоматического тестирования широко используем краудтестинг с помощью нашей же Толоки. В наш конвейер качества встроен этап, в котором, по аналогии с автотестами в Selenuim Grid, мы запускаем «краудтестинг в облаке» среди исполнителей в Толоке.
Инструментов для создания A/B‑тестов, управления ими, одновременного запуска и сбора аналитики не было, мы написали свою платформу для запуска и анализа экспериментов и до сих пор не нашли решения, способного её заменить.
Это наш собственный инструмент, который собирает логику отправки запросов в разные микросервисы, позволяет оптимизировать их и настроить обработку ошибок. Ещё с его помощью мы фиксируем графы запросов и расположение сервисов — это позволяет нам быстрее вводить в курс дела новых разработчиков, а также снижать расходы на поддержание и масштабирование системы.
Доступность
Для этого у нас есть инструменты тестирования доступности, тестировщики с ограниченными возможностями, которые отлавливают пропущенные проблемы, а также обучающие материалы для разработчиков.
Конвейер
В этом нам помогает конвейер — система сборки, тестирования, деплоймента в разные окружения (dev/test/prod), которая работает без участия разработчика, автоматически по коммиту.
Максимальная кросс‑платформенность
Поощряем добычу и распространение знаний в индустрии
Творческая свобода
Сергей Бережной
В Яндексе — 16 лет
Михаил Трошев
В Яндексе — 10 лет
Сергей Мелюков
В Яндексе — год
Андрей Морозов
В Яндексе — 8 лет
Также можно сразу пойти на собеседование в ту команду, в которую вы хотите попасть. Вы можете подробнее почитать о том, как мы нанимаем фронтенд‑разработчиков. Открытые вакансии можно посмотреть здесь.
Сергей Бережной
В Яндексе — 16 лет
Одной из первых более или менее сложных функциональностей в поиске Яндекса были поисковые подсказки — выпадающий список, в который по мере набора текста с сервера подгружаются предположения о наиболее полезных окончаниях поискового запроса. Сейчас это звучит совершенно обыденно и просто, но в то время приходилось решать и проблемы с кроссбраузерностью, и с производительностью асинхронных запросов на сервер, и с позиционированием блока подсказок, — чтобы он отображался аккуратно рядом с полем ввода, которое ещё не везде полностью стилизовалось, — и ещё с кучей мелочей. Так совпало, что в это же время мы начали использовать jQuery вместо самописного фреймворка и делали первые версии общепортальной библиотеки готовых блоков. Блок поисковых подсказок, или, как мы его называем, саджест, стал одним из первых больших и сложных. А функциональность поисковых подсказок очень заметно улучшила пользовательские метрики и стала неотъемлемой частью поиска на долгие годы.
И вот недавно я словил головокружительное ощущение: я помню некоторые детали реализации того кода, в частности, там использовалась особенность keyCode клавиш „вверх“ (38) и „вниз“ (40), которая позволяла отнять 39 и получить корректное смещение по списку вариантов (-1 или 1). И вот я задумался, а сколько раз исполнился этот фрагмент кода с возможно странной „оптимизацией“? Дневная аудитория поиска составляла миллионы пользователей, а мои строчки работали в продакшене несколько лет — получается, что эти строчки исполнились несколько миллиардов раз, у самых разных пользователей, на самых разных устройствах и в самых разных ситуациях… Лично мне сложно уместить это в голове и это неожиданно очень впечатлило!».
Михаил Трошев
В Яндексе — 10 лет
Сергей Мелюков
В Яндексе — год
Андрей Морозов
В Яндексе — 8 лет
«Во время работы в Яндексе я много занимался оптимизацией производительности работы Яндекс.Карт (удалось ускорить загрузку в несколько раз), а также инфраструктурой и DX, благодаря чему мы существенно снизили time to market.
А последние годы все мои достижения в основном связаны с успехами команд в запусках разных проектов и сервисов. Например, совсем недавно мы в Яндекс.Лавке запустили веб-версию — продукт, которого нет у наших конкурентов на рынке очень быстрых доставок.