О КОМПАНИИ Небольшая продуктовая компания, выпускаем по 1 приложению в квартал Приложения входят в TOP-100 в Health & Fitness Наши приложения фичерит Apple Команда меньше 10 человек, довольно много и глубоко погружаемся в рабочие задачи Нет овертаймов, но мы усердно работаем в рабочее время Вакансия: Middle/ Senior iOS Developer Базовые требования: Хорошие знания Swift 5 (мы работаем на 5.8) Базовые знания ФП-фреймворков (мы работаем на RxSwift, но знание ReactiveSwift или Combine не является проблемой) Мобильные паттерны проектирования – MVC-MVP-MVVM, Session/Environment, Fabric/Fabric method, Singleton, Adapter, Delegate/Closure, etc. KISS Умение написания алгоритмов, оценочной сложности, умение оценивать свои и не свои алгоритмы Git Бонусами будут: Опыт работы с Firebase Опыт работы с Lottie Опыт написание кастомных контролов различной сложности Использование SpriteKit как в играх, так и врезок в обычные приложения Инди, фан, пет, возможно коммерческий опыт геймдева Условия: Официальное трудоустройство в компанию в Грузии Зарплата 3000 – 5000 $ (Net) по результатам собеседования Идеально, если вы тоже в Тбилиси Мы не против удаленной работы, но будем рады видеть вас в офисе в Тбилиси 1-2 раза в неделю Вакансия: Designer/ Illustraror Обязанности: Разработка дизайн-концепции мобильных приложений “с нуля” Создание визуальных элементов и графического контента для мобильных приложений, включая UI/ UX. Это работа над продуктом целиком – от интерфейса до иллюстраций/ анимаций Требования: Опыт работы графическим дизайнером от 3 лет Знания Adobe Illustrator, Photoshop, After Effects, Sketch Понимание основных принципов дизайна, композиции, цвета Самостоятельность, желание рисовать (в том числе желание рисовать разное, не только в своем стиле) Развитое воображение, креативность, увлеченность своим делом Опыт работы с мобильными приложениями и знание принципов UI/ UX будет большим плюсом Условия: Официальное трудоустройство в компанию в Грузии Достойная зарплата по результатам собеседования Идеально, если вы тоже в Тбилиси, но если нет, то нет) Мы не против удаленной работы, но будем рады видеть вас в офисе в Тбилиси 1-2 раза в неделю
ПодробнееКРАТКОЕ ОПИСАНИЕ ВАКАНСИИ
Базовые требования:
- Хорошие знания Swift 5 (мы работаем на 5.8)
- Базовые знания ФП-фреймворков (мы работаем на RxSwift, но знание ReactiveSwift или Combine не является проблемой)
- Мобильные паттерны проектирования – MVC-MVP-MVVM, Session/Environment, Fabric/Fabric method, Singleton, Adapter, Delegate/Closure, etc. KISS
- Умение написания алгоритмов, оценочной сложности, умение оценивать свои и не свои алгоритмы
- Git
Бонусами будут:
- Опыт работы с Firebase
- Опыт работы с Lottie
- Опыт написание кастомных контролов различной сложности
- Использование SpriteKit как в играх, так и врезок в обычные приложения
- Инди, фан, пет, возможно коммерческий опыт геймдева
Условия:
- Официальное трудоустройство в компанию в Грузии
- Зарплата 3000 – 5000 $ (Net) по результатам собеседования
- Идеально, если вы тоже в Тбилиси
- Мы не против удаленной работы, но будем рады видеть вас в офисе в Тбилиси 1-2 раза в неделю
ПОДРОБНОЕ ОПИСАНИЕ ВАКАНСИИ
Мы не ищем полного совпадения кандидата по стеку технологий – это редко когда возможно. Главные требования – хорошие знания Swift, понимание ФП, основных паттернов и алгоритмов, опыт и желание работать с графикой, анимациями, получать удовольствие от изучения нового и решения невозможных задач.
Ниже представлен полный список технологий, используемых на данный момент в семействе наших проектов, чтобы представлять чем мы занимаемся, и с чем придется иметь дело.
- Swift 5.8 и всегда последний, который идет вместе с последней стабильной версией xCode.
- RxSwift/RxCocoa 6.5 и всегда последний, pod update всех подов каждые 2 месяца. Если нет опыта с RxSwift, но есть опыт с ReactiveSwift, Combine, любым другим ФП фрэймворком – это не является проблемой, главное понимать ФП-парадигму и уметь на базовом уровне работать с основными ФП-операторами (distinct, combineLatest, throttle, flatMap, etc.)
- верстка сделана на SnapKit, но можно использовать любой любимый фрэймворк, главное требование – без StoryBoard и, по возможности, без xib. SwiftUI пока нет, большую часть нашего UI на нем просто невозможно сделать без мешанины с UIKit, но возражений против его использования тоже нет
- главный паттерн – KISS, т.к. проекты технически сложные, и over-architectured, характерный для многих энтерпрайз-решений, сильно снизит темп
- архитектура – четкий Flow (не RxFlow по некоторым причинам), высокая модульность, Session/Environment с четкими сроками жизни объектов, связки MVVM/MVP where applicable (в некоторых местах хорошо ложится на MVVM, в других – лучше на MVP из-за специфики приложений). Никаких синглтонов без очевидной необходимости, но если срок жизни объекта равен сроку приложения – религиозных запретов на использование синглтонов и прочей статики тоже нет. I из SOLID, O из SOLID, S из SOLID – самые уважаемые буквы.
- TDD где удобнее начинать с тестов, тесты на критический функционал. Но без фанатизма, никаких энтерпрайзных code coverage нет и никогда не будет.
- скрипты валидации ресурсов, конвертации ресурсов – на swift, CD – на shell через xcodebuild, CI отсутствует (пока).
- всегда минимум memory ликов, периодический профайлинг как Allocations, так и CPU/GPU. Хорошим плюсом будет дружба с Instruments, умение находить лики, глитчи, боттлнеки по пефомансу.
- в проектах есть и будет написано много кастомных контролов. Опыт написания простых и сложных кастомных контролов категорически приветствуется.
- UIKit – работа с draw(in rect:), CALayer, понимание render tree, responder chain, CADisplayLink будет хорошим плюсом.
- в некоторых проектах используется SpriteKit, Fragment Shaders, иногда напрямую Metal, физический движок soft body JelloSwift, возможно будем использовать какой-нибудь rigid body типа box2d. Связанные и свободные, из кода и из редактора эмиттеры частиц. Опыт в разработке инди-игр по фану, либо работа в коммерческом геймдеве в любом виде и роли, любовь к играм с точки зрения графики – большой плюс.
- Lottie и BodyMovin для нас является не только подом “векторных гифок” для красивых кнопок, но и важной частью движка приложения, т.к. на нем завязано большое количество функционала как фитнес, так и релакс-приложений. Присутствует fork Lottie на основе Lottie 4.0 с впиливанием нужных фич (профайлинга рендеринга, фишек для динамической кастомизации и т.п.) – раз в год переходим на последнюю версию Lottie.
- Firebase всегда последней версии (на текущий момент 10.9.0) – используется как основной бэкэнд, поэтому используются почти все имеющиеся фичи. Storage, Crashlytics, RemoteConfig, Auth, RTDB, Analytics, Functions на CoffeeScript когда чего-то не хватает. Опыт работы с Firebase будет хорошим плюсом.
- Git – по возможности, стандартный GitFlow, на данный момент несколько упрощенный (но с ростом команды будет все ближе к полноценному GitFlow).
- SwiftLint последней версии с почти стандартным конфигом, на данный момент в проекте 0 Warning-ов, и в деве/мастере это правило.
- deployment target – (actualiOSVersion – 2) == 14, раз в год после нового года автоинкрементится. Хотя поды все свежие, и использование хороших подов против велосипедов поощряется – поды с количеством звезд <1000, или заброшенные годы назад – отвергаются к использованию за редкими исключениями.
- trello а не jira, никакого тайм-трекинга, никаких бесполезных коллов по 3 часа, никакой лишней бюрократии. ПМ (и проджект и продакт) один – это фаундер компании, все вопросы решаются быстро и напрямую.
- алгоритмы – т.к. требуется достаточно часто их и писать, и понимать для высокопроизводительной графики. Не надо знать на память 10 видов сортировок, надо понимать что такое ассимптотическая сложность. Не надо знать 5 видов хэш-функций, надо знать что такое хэш.
Мы – продуктовая компания, время на рефакторинг/апдейт есть всегда, для этого между спринтами выделяются чисто технические спринты по мере накопления чисто технических задач в бэклоге. Стандартные аргументы вида: “зальем в прод как есть, потом само пофиксится” не принимаются. Мы быстро растем – и именно поэтому качество всегда важнее количества.
Время на изучение нового есть всегда. Прикручивать какой-то фрэймворк, не понимая до конца, как он работает – не нужно, мы не оффшорный аутсорс. Нет супер жестких дедлайнов, но о них нужно помнить.
Сфера деятельности:
Интернет-компания (поисковики, платежные системы, соц.сети, информационно-познавательные и развлекательные ресурсы, продвижение сайтов и прочее), Разработка программного обеспечения
Чтобы откликнуться на эту работу, пожалуйста, посетите hh.ru.