Александр Сычев
Руководитель отдела
Один день из жизни
iOS-разработчика
iOS department
Александр Сычев
a.sychev@rambler-co.ru
@asychev89
iOS department
iOS department
2014 год
RAMBLER&Co
iOS department
iOS department
CTO
Проектное
управление
Тестирование Разработка Дизайн
iOS department
Департамент
разработки
Отдел Ruby &
Python
разработки
Отдел Frontend
разработки
Отдел iOS
разработки
Отдел C#
разработки
Отдел Android
разработки
Руководители
групп
Руководители
групп
Руководители
групп
Инженеры-
разработчики
Инженеры-
разработчики
Инженеры-
разработчики
Инженеры-
разработчики
Инженеры-
разработчики
iOS department
Проектный
менеджер
iOS
разработчик
iOS
разработчик
Android
разработчик
Android
разработчик
Backend
разработчик
Backend
разработчик
Тестировщик Дизайнер
iOS department
Проектный
менеджер
RDS Заказчик
Продуктовый
менеджер
Бизнес-лидер
iOS department
Функциональный
руководитель
Проектный
менеджер #1
iOS
разработчик
Проектный
менеджер #2
iOS
разработчик
Матричная
структура
Функциональный
руководитель
Backend
разработчик
Backend
разработчик
Функциональный
руководитель
Android
разработчик
Android
разработчик
Проектный
менеджер #3
iOS
разработчик
Backend
разработчик
Android
разработчик
iOS department
iOS department
Стандартизация
iOS department
Стандартизация
• Минимизация «человеческого фактора»
• Повышение степени обучаемости
персонала
• Повышение качества коммуникаций
• Формирование базы знаний
• Автоматизация процесса
iOS department
Стандартизация
• Минимизация «человеческого фактора»
• Повышение степени обучаемости
персонала
• Повышение качества коммуникаций
• Формирование базы знаний
• Автоматизация процесса
iOS department
Стандартизация
• Минимизация «человеческого фактора»
• Повышение степени обучаемости
персонала
• Повышение качества коммуникаций
• Формирование базы знаний
• Автоматизация процесса
iOS department
Один день из жизни
разработчика !
iOS department
"
iOS department
" 🖼
iOS department
От дизайнеров - iOS разработчикам
• Карта экранов приложения
• Карта цветов, используемых в приложении
• Список шрифтов, используемых в приложении
• Размеченные состояния каждого из экранов
• Нарезка элементов для всех экранов
• Видео/gif со всеми нестандартными анимациями
• Иконки приложения
iOS department
От дизайнеров - iOS разработчикам
iOS department
От дизайнеров - iOS разработчикам
$
iOS department
От дизайнеров - iOS разработчикам
https://habrahabr.ru/company/rambler-co/blog/256397/
iOS department
Пишем код
$
iOS department
Пишем код
$
• «Горячие» клавиши
• Code snippets
• Behaviors
• Git blame
iOS department
«Горячие» клавиши
iOS department
Code snippets
iOS department
Code snippets
iOS department
Code snippets
<#[TOKEN NAME]#>
iOS department
Code snippets
<#[TOKEN NAME]#>
iOS department
Behaviors
iOS department
Behaviors
iOS department
Git Blame
iOS department
Open source
Open Source Transformation Engine
Platforms State of the Union - WWDC 2017
iOS department
Open source
Open Source Transformation Engine
Platforms State of the Union - WWDC 2017
$
iOS department
Стандарты
$
• Code Style
• Архитектура
• 3rd party libraries
iOS department
Стандарты
$
• Code Style
• Архитектура
• 3rd party libraries
iOS department
Стандарты
$
• Code Style
• Архитектура
• 3rd party libraries
iOS department
Стандарты
• SOLID
• DRY
• KISS
• YAGNI
iOS department
SOLID
MBLTdev 16: Кто кого SOLID. Сергей Крапивенский
iOS department
Стандарты
$
• Code Style
• Архитектура
• 3rd party libraries
iOS department
3rd party libraries
❓$
iOS department
Тесты
$
iOS department
Тесты
$
Maintainability 🛠
iOS department
https://twitter.com/noahsussman
iOS department
• Понимание требований
• Стабильность при рефакторинге
• Документация
• Хороший API
• Меньше ошибок
Преимущества
iOS department
• Понимание требований
• Стабильность при рефакторинге
• Документация
• Хороший API
• Меньше ошибок
Преимущества
iOS department
• Понимание требований
• Стабильность при рефакторинге
• Документация
• Хороший API
• Меньше ошибок
Преимущества
iOS department
• Понимание требований
• Стабильность при рефакторинге
• Документация
• Хороший API
• Меньше ошибок
Преимущества
iOS department
• Понимание требований
• Стабильность при рефакторинге
• Документация
• Хороший API
• Меньше ошибок
Преимущества
iOS department
Инструменты 🔨
$
iOS department
xUnit
iOS department
- (void)testThatObjectsWithEqualTitleAreEqual {
// given
RubricsObject *object1 = [[RubricsObject alloc] initWithTagID:@"tagID1"
title:@"Title"];
RubricsObject *object2 = [[RubricsObject alloc] initWithTagID:@"tagID2"
title:@"Title"];
// when
BOOL equal = [object1 isEqual:object2];
// then
XCTAssertTrue(equal);
}
iOS department
- (void)testThatObjectsWithEqualTitleAreEqual {
// given
RubricsObject *object1 = [[RubricsObject alloc] initWithTagID:@"tagID1"
title:@"Title"];
RubricsObject *object2 = [[RubricsObject alloc] initWithTagID:@"tagID2"
title:@"Title"];
// when
BOOL equal = [object1 isEqual:object2];
// then
XCTAssertTrue(equal);
}
// given
// when
// then
iOS department
- (void)testThatObjectsWithEqualTitleAreEqual {
// given
RubricsObject *object1 = [[RubricsObject alloc] initWithTagID:@"tagID1"
title:@"Title"];
RubricsObject *object2 = [[RubricsObject alloc] initWithTagID:@"tagID2"
title:@"Title"];
// when
BOOL equal = [object1 isEqual:object2];
// then
XCTAssertTrue(equal);
}
// given
// when
// then
iOS department
- (void)testThatObjectsWithEqualTitleAreEqual {
// given
RubricsObject *object1 = [[RubricsObject alloc] initWithTagID:@"tagID1"
title:@"Title"];
RubricsObject *object2 = [[RubricsObject alloc] initWithTagID:@"tagID2"
title:@"Title"];
// when
BOOL equal = [object1 isEqual:object2];
// then
XCTAssertTrue(equal);
}
// given
// when
// then
iOS department
- (void)testThatObjectsWithEqualTitleAreEqual {
// given
RubricsObject *object1 = [[RubricsObject alloc] initWithTagID:@"tagID1"
title:@"Title"];
RubricsObject *object2 = [[RubricsObject alloc] initWithTagID:@"tagID2"
title:@"Title"];
// when
BOOL equal = [object1 isEqual:object2];
// then
XCTAssertTrue(equal);
}
// given
// when
// then
iOS department
What makes a clean test? Three things.
Readability, readability, and readability.
Robert C. Martin
iOS department
• Предметно-ориентированный язык
• Нет лишнего контекста
• Проверка одной истины
Чистый тест
iOS department
https://youtu.be/VQscQ-glpwI
Чистые тесты
iOS department
Version Control System
$
iOS department
Commits
$
Атомарные
iOS department
Сообщения
Начинать
Commits
iOS department
Git hooks
$
• Размер коммита
• Описание коммита
iOS department
Code review
$
iOS department
Правила
• Объем кода
• Актуальность
iOS department
Объем кода
iOS department
Актуальность
iOS department
Ревью - по расписанию
iOS department
$
iOS department
$
Code review
👍
iOS department
😡
Code review
👎
iOS department
Review
• Self review
• Architectural review
• Design review
iOS department
Self review
iOS department
Architectural review
$
iOS department
Design review
$
iOS department
Code review
https://habrahabr.ru/company/avito/blog/330846/
iOS department
JIRA
$
iOS department
Шаг 1/12
Смотрим
доску проекта
JIRA
$
iOS department
Шаг 2/12
Выбираем
себе задачу
JIRA
$
iOS department
Шаг 3/12
Знакомимся
с задачей
JIRA
$
iOS department
Шаг 4/12
Стартуем
работу над
задачей
JIRA
$
iOS department
Шаг 5/12
Создаем
feature-ветку.
Git
$
iOS department
Шаг 6/12
Пишем атомарные
коммиты на
русском языке с
номерами задач.

Гоняем тесты.

Соблюдаем code
style.
Code
$
iOS department
Шаг 7/12
Создаем
code-review
Code review
$
iOS department
Шаг 8/12
Дожидаемся
аппрува code
review
Code review
$
iOS department
Шаг 9/12
Мержим ветку
в develop
Git
$
iOS department
Шаг 10/12
Обновляем
статус на
"Ready"
JIRA
$
iOS department
Шаг 11/12
Проверяем
тесты на CI
CI
$
iOS department
Шаг 12/12
Собираем
сборку
CD
$
iOS department
• Artifactory (enterprise)
• Fabric
• TestFlight
CD
$
iOS department
1. Берем задачу в Jira
2. Работаем в feature-ветке
3. Сливаем в develop после review
4. Заливаем сборку через CD
$
iOS department
Gitlab CI
CI/CD for mobile done right, Tomasz Grynfelder
iOS department
Ramb-n-roll
fastlane
iOS department
Open source
¯_(ツ)_/¯
iOS department
Dashramba
https://github.com/rambler-digital-solutions/dashramba
iOS department
Dashramba
iOS department
Dashramba
iOS department
Dashramba
iOS department
Dashramba
https://news.realm.io/news/wwdc-2017-swift-panel/
iOS department
🛌
💤
iOS department
a.sychev@rambler-co.ru
@asychev89
fastlane

Один день из жизни iOs разработчика, Александр Сычёв Rambler&Co