company_banner

Мобильная разработка hh.ru и где она обитает

    В далеком 2000 году, когда hh.ru был совсем маленьким и ласково назывался “National Job Club”, а доступ к интернету получили всего 3% россиян, у нас, разумеется, не было никакой мобильной разработки. Тогда и смартфоны, в нынешнем их виде, были лишь далекой мечтой. Шли годы, технологии не стояли на месте, HeadHunter рос и развивался. Мы всегда стремились шагать в авангарде и использовать самые свежие методы и решения в процессах разработки.



    Сегодня hh.ru — не просто сайт с вакансиями и резюме. Мы создаем и используем топовые технологии, разрабатываем крутые проекты в cфере HR-tech и всеми силами пытаемся упростить жизнь миллионам людей. Для этого нам просто необходимы высокотехнологичные мобильные приложения, и в hh их четыре. Два на Android и два на iOS, отдельно для работодателей и соискателей. Мобильные разработчики — супергерои нашего времени и кавалерия технологий. Эта статья расскажет (и покажет), как живут и работают члены команды hh Mobile.




    #трудовыебудни


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

    Как мы работаем?


    Мы руководствуемся принципами Agile и Kanban: у нас нет жестких дедлайнов, а сама разработка представлена как непрерывный поток. Это позволило ощутимо повысить производительность: к примеру, когда мы использовали scrum, релизы случались раз в месяц, а с переходом на новую модель — еженедельно. Много внимания уделяем автоматизации рутинных процессов, мы не любим лишние телодвижения.

    30% времени каждая команда тратит на “Технический налог” — ускорение процессов разработки, удаление старого кода и внедрение новых технологий. У каждого сотрудника есть собственный план развития, таблица скиллов и постоянная поддержка команды. Любой из нас может поделиться впечатлениями, идеями и высказать замечания. Разработка новых фичей обсуждается уже на ранних этапах, и то, какими они будут, решают сами разработчики. Жизненный цикл фичи включает в себя пять этапов: идея, планирование, разработка, демонстрация и фидбэк. В процессе разработки используем Slack, как основное средство коммуникации, Jira помогает контролировать задачи, а для их понятного отображения у нас есть kanban-доски.



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

    Над чем мы работаем?


    iOS: Для платформы iOS у нас разработано и постоянно совершенствуются два приложения: для соискателей и для работодателей, общие компоненты выделены во фреймворки. 75% кода написано на Swift, 25% на Objective-C. С 2016 года новый функционал пишем только на языке Swift и архитектуре VIPER. В сервисном слое придерживаемся подхода SOA. Следуем принципам SOLID, пишем unit-тесты. Под оба языка есть Code Style, в работе используем статические анализаторы и линтеры. На каждый пул реквест прогоняются тесты и проверки, сборка и выкладка приложений автоматизированы через CI сервер + fastlane. В кооперации с QA пишем UI-тесты, используя XCUITest. Используем кодогенерацию, шаблоны для Xcode.



    Android: Для этой платформы также разработаны два приложения. Последние два года разработка ведется на языке Kotlin, на котором написано более 70% кода. Команда разработки Аndroid работает с современным технологическим стеком, который регулярно подвергается принудительным улучшениям. Сейчас под капотом RxJava 2, Toothpick, Moxy, Cicerone. В разработке приложений мы всегда используем многомодульную архитектуру. Модули реализованы по принципам Clean Architecture и SOLID. Мы за удобство, поэтому стараемся максимально автоматизировать процессы, пишем и используем шаблоны, плагины для кодогенерации и применяем в работе Практически все основные сценарии покрыты UI тестами. При их написании мы используем высокоуровневые фреймворки Kakao, Kaspresso и DSL для фикстур (подробнее тут). Тесты запускаются при помощи Marathon на эмуляторах в кластере Kubernetes. Для приложений разработан уникальный стайл-гайд.



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

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

    Где мы работаем?


    Офис hh.ru находится в Москве, между станциями метро Алексеевская и ВДНХ. Многие в детстве мечтали попасть в открытый космос, и мечты частично исполнились — в нашем офисе 5 этажей зонированных open space. Команда мобильной разработки входит в Технический департамент, занимающий целый этаж.

    Разработка разделена на 23 команды, и 4 из них занимаются только мобильными приложениями. В hh Mobile сегодня 25 бойцов, а до конца года мы планируем расширить штат до отметки в 35. У каждой команды есть внутренний заказчик — Product Owner, его задача сделать так, чтобы никто не скучал без проекта. При этом мы готовы реализовать любую идею наших сотрудников, если она окажется интересной.

    Не признаем никаких барьеров: команды сидят вместе — так удобнее работать и обсуждать возникающие вопросы.



    Большой open space разделен на командные зоны стеллажами и полками с книгами и растениями. При желании можно спрятаться за пальму.



    Мы стараемся всегда быть на одной волне. В нашем бунгало доска найдется для каждого.



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



    Лампово!



    Экология – это важно. Мы за экологию, поэтому поддерживаем и продвигаем полезные инициативы: собираем “Добрые крышечки” (от бутылок), “Добрые вещи”, макулатуру, электроприборы, батарейки и пластик для утилизации, а еще используем стаканчики из переработанной бумаги.



    На первом этаже расположен спортзал, потому что спорт, как известно – мир, а мы крайне мирные ребята. На экране загрузки в DOOM сказано: “Непрерывно двигайся, ад пожирает праздных”. Двигаемся мы здесь:



    Разрабочее пространство


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

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

    • MacBook Pro, дополнительные мониторы, дополнительная зарядка для ноутбука



    • потрясные кресла Herman Miller Aeron, послушные и чуткие к изгибам сидящего (совсем как у доктора Хауса!)



    • столы-трансформеры Kinnarps и Soft effect c регулируемой высотой. Легким движением офисный стол превращается в элегантную барную стойку.



    Для того, чтобы контролировать эффективность приложений на всех возможных мобильных устройствах мы завели модный шкаф с сокровищами: там хранятся самые популярные устройства iOS и Android, а также парочка устаревших моделей. Это очень умный шкаф: каждое утро он сам заряжает все смартфоны и планшеты, а раз в несколько дней устраивает экстерминатус ультрафиолетом, уничтожая микробов.

    Если нужно протестировать приложение или отдельную фичу, можно взять необходимую вундервафлю с полки, а потом вернуть на место.



    Сколько мы работаем?


    В hh.ru 8-часовой рабочий день и свободный час, который каждый может проводить как заблагорассудится. Мы гибкие, для нас главное — результат. Чтобы не отставать от трендов и не проигрывать в коммуникации, необходимо успевать на утренний стендап и находиться в офисе с 12:00 до 18:00. В разных командах стендап начинается в разное время, в среднем с 10:30 до 12:30. В крайнем случае всегда можно поработать удаленно по VPN.



    Как мы отдыхаем?


    Кто умеет хорошо отдыхать, тот и работает отлично. А отдыхаем мы профессионально: проводим корпоративные турниры по настольному теннису, гребле, футболу, собираемся после работы посмотреть фильмы. У нас есть свой спикер-клуб, где каждый может поупражняться в ораторском мастерстве (и для этого совсем не обязательно набирать полный рот камней), потрясная массажная комната, и два раза в неделю проводятся занятия йогой. Ещё мы устраиваем крутые ивенты. Да что уж там, некоторые коллеги даже в отпуск летают вместе!

    Вот так мы покоряли Казбек:







    Как мы учимся?


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

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

    А ещё! Каждый год мы проводим Школу программистов — это полугодовое обучение программированию и смежным темам. Там читают лекции наши топовые специалисты, а также проводят практикумы и тренинги по выступлениям для лекторов Школы и докладчиков на конференциях.

    Часть команды, часть корабля


    Мы активно развиваемся, у нас зарождаются новые мобильные команды, и в связи с этим мы постоянно ищем новых бойцов!

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

    Мы рады классным специалистам, правда. Делитесь инфой, рекомендуйте нас и приходите сами.
    HeadHunter
    112,56
    HR Digital
    Поделиться публикацией

    Похожие публикации

    Комментарии 23

      +1
      Как мы учимся?

      У вас есть какие-нибудь программы развития джунов? Курсы, тесты, что-то иное?
        +1
        Последние 10 лет мы ежегодно проводим Школу программистов . Прямо сейчас в неё идет набор. По Android наши ребята проводят абсолютно бесплатные лекции в Android Academy Msk
        Первая лекция была вчера, следующая 15 августа. Приходите, будем рады Вас видеть!
          +1
          У нас в компании на текущий момент работает 38 выпускников Школы программистов и 2 Android Academy Msk. Считаю это отличным результатом
        +1
        Прям захотелось у Вас работать. =)
          0
          Приходите!:)
            0
            К сожалению, моё резюме отклонили. =(
            Хотя, подозреваю, потому что мой стек достаточно специфичен )
              0

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


              Там кстати тестовое интересное должно быть.

          0
          Так вот кто эти люди, которые считают, что для поиска нужно обязательно указывать Срану/Город/Регион.
            0
            А ещё они сделали карту же )
            0
            Вот эти замечательные ребята, которые считают, что нормально складывать временные этапы работы, если есть наложение по датам (т.е. если работал 3 года на фирме, из них 2 года фрилансил или на пол ставке на другой фирме, это будет засчитано за 5 лет)
              +2

              Ты же в две смены пахал, где здесь неправда? Рабочий день 8 часов, а не 24 и твои проблемы.

              +1
              Понравилась олимпийка на спинке кресла с надписью «hh и в продакшен»
                +1
                Очень даже ничего :), зачОтно
                  0
                  Многие в детстве мечтали попасть в открытый космос, и мечты частично исполнились — в нашем офисе 5 этажей зонированных open space.

                  Такую рекламу опенспейса я еще не видел :D
                    0
                    После прохождения «Школы программистов» в Android команду приглашаете выпускников?
                      0
                      Школа программистов у нас на Java и JavaScript, частично — на Python.

                      Если вы рассматриваете вакансию Android стажера, то рекомендую посещать абсолютно открытую и бесплатную Android Academy Msk, которую проводят в том числе и наши ребята. Кстати у нас уже работают два выпускника с прошлых курсов Fundamentals
                        0
                        Спасибо за ответ, уже посещаю. После Advanced планируете набирать в команду?
                          0

                          Да, мы планируем расти, думаю скоро откроем вакансию, может и не одну.

                      0
                      1.
                      необходимо успевать на утренний стендап и находиться в офисе с 12:00 до 18:00.
                      А если пришел в 8 утра, то нужно всё равно сидеть до 6 вечера?)

                      2.
                      Интересно почитать детально, про особенность стека Android:
                      Почему Moxy, сами его допиливаете, как дружите с androidx его?
                      Почему Toothpick, а не Dagger 2 или Koin?
                      Пробовали ли Navigation Architecture Component, вместо Cicerone?
                      Судя по описанию, у вас MVP. Пробовали MVVM или другие MV* — шаблоны?
                      Почему за два года ещё не довели до 99% кода на Kotlin'e, в чём возникла сложность или другие обстоятельства?

                      3.
                      Розетки под ногами, это забавно -)
                        +1
                        1) Обычно команда договаривается, во сколько они будут работать. Есть команды, у которых время посещения смещено ближе к утру.
                        Однако, межкомандные встречи теоретически могут быть до 18.

                        2) Moxy брали как инструмент, который точно работает и не подведет. Тем более сейчас в нём инкрементальная компиляция. По поводу Moxy — старый репозиторий на гитхабе скоро будет задеприкейчен, новую версия допиливаем его вместе с ребятами из комьюнити. Там уже и AndroidX и Ktx.

                        Toothpick взяли потому что для разделения на модули это был идеальный инструмент.

                        Navigation Architecture Component нам не очень подходит, Cicerone допилили, сидим на своем форке.

                        Пробовали MVVM, ресечили в стейт машины различные (очень помогает разделение на модули — не заражает всю кодовую базу). Пока не остановились ни на чём конкретном. Лично мне импонирует подход со стейт машинами. Будем дальше копать

                        У нас осталось еще много сетевых моделей на Java и немного старых экранов. Мы не ставим во главе цель избавиться от Java как можно быстрее. Код на Java сам уходит с довольно хорошей динамикой.

                        3) Осенью наш этаж будет ремонтироваться, думаю о розетках и проводах не забудут)
                          0
                          Спасибо за ответ, плюсы к сожалению не могу ставить.
                        +1
                        А с А/В-тестированием как дела?
                          +1
                          Последнее время мы крепко на него подсели. Обычно все новые фичи выходят под А/Б и уже по тому, какие метрики прокрасились, продакт принимает решение.

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

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое