Как переписать приложение с нуля и не потерпеть фиаско

Содержание

Слайд 2

О себе

7 лет в Android-разработке

В ЦФТ с 2013 г.

Разработал более десятка проектов

О себе 7 лет в Android-разработке В ЦФТ с 2013 г. Разработал более десятка проектов

Слайд 3

О чем буду говорить

1. С чего все начиналось

2. Как набирали команду и

О чем буду говорить 1. С чего все начиналось 2. Как набирали
решали задачи

3. Оцениваем масштаб разработки

4. Проблемы с архитектурой и технологиями

5. Какая польза от Unit-тестов и других инструментов

6. Не успевали к срокам, что делать

Слайд 4

О чем буду говорить

1. С чего все начиналось

2. Как набирали команду и

О чем буду говорить 1. С чего все начиналось 2. Как набирали
решали задачи

3. Оцениваем масштаб разработки

4. Проблемы с архитектурой и технологиями

5. Какая польза от Unit-тестов и других инструментов

6. Не успевали к срокам, что делать

Слайд 5

О чем буду говорить

1. С чего все начиналось

2. Как набирали команду и

О чем буду говорить 1. С чего все начиналось 2. Как набирали
решали задачи

3. Оцениваем масштаб разработки

4. Проблемы с архитектурой и технологиями

5. Какая польза от Unit-тестов и других инструментов

6. Не успевали к срокам, что делать

Слайд 6

О чем буду говорить

1. С чего все начиналось

2. Как набирали команду и

О чем буду говорить 1. С чего все начиналось 2. Как набирали
решали задачи

3. Оцениваем масштаб разработки

4. Проблемы с архитектурой и технологиями

5. Какая польза от Unit-тестов и других инструментов

6. Не успевали к срокам, что делать

Слайд 7

О чем буду говорить

1. С чего все начиналось

2. Как набирали команду и

О чем буду говорить 1. С чего все начиналось 2. Как набирали
решали задачи

3. Оцениваем масштаб разработки

4. Проблемы с архитектурой и технологиями

5. Какая польза от Unit-тестов и других инструментов

6. Не успевали к срокам, что делать

Слайд 8

О чем буду говорить

1. С чего все начиналось

2. Как набирали команду и

О чем буду говорить 1. С чего все начиналось 2. Как набирали
решали задачи

3. Оцениваем масштаб разработки

4. Проблемы с архитектурой и технологиями

5. Какая польза от Unit-тестов и других инструментов

6. Не успевали к срокам, что делать

Слайд 9

С чего все началось?

С чего все началось?

Слайд 10

Бизнес поставил задачу

Новый дизайн

Масштабироваться

Увеличить скорость разработки фич

Улучшить стабильность

Бизнес поставил задачу Новый дизайн Масштабироваться Увеличить скорость разработки фич Улучшить стабильность

Слайд 11

Бизнес поставил задачу

Новый дизайн

Масштабироваться

Увеличить скорость разработки фич

Улучшить стабильность

Бизнес поставил задачу Новый дизайн Масштабироваться Увеличить скорость разработки фич Улучшить стабильность

Слайд 12

Бизнес поставил задачу

Новый дизайн

Масштабироваться

Увеличить скорость разработки фич

Улучшить стабильность

Бизнес поставил задачу Новый дизайн Масштабироваться Увеличить скорость разработки фич Улучшить стабильность

Слайд 13

Бизнес поставил задачу

Новый дизайн

Масштабироваться

Увеличить скорость разработки фич

Улучшить стабильность

Бизнес поставил задачу Новый дизайн Масштабироваться Увеличить скорость разработки фич Улучшить стабильность

Слайд 14

Но не все так просто…

Но не все так просто…

Слайд 15

Проблема №1

Архитектура

Проблема №1 Архитектура

Слайд 20

Проблема №2

Ресурсы и стили

Проблема №2 Ресурсы и стили

Слайд 23

Проблема №3

Рефакторинг

Проблема №3 Рефакторинг

Слайд 24

Смотрим покрытие тестами

Смотрим покрытие тестами

Слайд 26

В результате получили

В результате получили

Слайд 27

Монолитный проект – сложно масштабироваться

Нет архитектуры – кругом спагетти-код

Долгий рефакторинг – тонем

Монолитный проект – сложно масштабироваться Нет архитектуры – кругом спагетти-код Долгий рефакторинг
в техдолге

Нет тестов – делаем одно, ломаем другое

Невозможен – «просто» редизайн

Слайд 28

Монолитный проект – сложно масштабироваться

Нет архитектуры – кругом спагетти-код

Долгий рефакторинг – тонем

Монолитный проект – сложно масштабироваться Нет архитектуры – кругом спагетти-код Долгий рефакторинг
в техдолге

Нет тестов – делаем одно, ломаем другое

Невозможен – «просто» редизайн

Слайд 29

Монолитный проект – сложно масштабироваться

Нет архитектуры – кругом спагетти-код

Долгий рефакторинг – тонем

Монолитный проект – сложно масштабироваться Нет архитектуры – кругом спагетти-код Долгий рефакторинг
в техдолге

Нет тестов – делаем одно, ломаем другое

Невозможен – «просто» редизайн

Слайд 30

Монолитный проект – сложно масштабироваться

Нет архитектуры – кругом спагетти-код

Долгий рефакторинг – тонем

Монолитный проект – сложно масштабироваться Нет архитектуры – кругом спагетти-код Долгий рефакторинг
в техдолге

Нет тестов – делаем одно, ломаем другое

Невозможен – «просто» редизайн

Слайд 31

Монолитный проект – сложно масштабироваться

Нет архитектуры – кругом спагетти-код

Долгий рефакторинг – тонем

Монолитный проект – сложно масштабироваться Нет архитектуры – кругом спагетти-код Долгий рефакторинг
в техдолге

Нет тестов – делаем одно, ломаем другое

Невозможен – «просто» редизайн

Слайд 33

Набираем команду, решаем задачи

Набираем команду, решаем задачи

Слайд 34

Какая структура проекта будет?

Какая структура проекта будет?

Слайд 35

Паттерн проектирования?

Паттерн проектирования?

Слайд 36

Прошло много часов, ни одного решения

Прошло много часов, ни одного решения

Слайд 41

Критерии эффективной команды

Критерии эффективной команды

Слайд 42

Единомышленники

1 tech lead

Прагматичный выбор технологий

Уровень знаний не ниже среднего

1 команда = 4-5

Единомышленники 1 tech lead Прагматичный выбор технологий Уровень знаний не ниже среднего
человек

Слайд 43

Единомышленники

1 tech lead

Прагматичный выбор технологий

Уровень знаний не ниже среднего

1 команда = 4-5

Единомышленники 1 tech lead Прагматичный выбор технологий Уровень знаний не ниже среднего
человек

Слайд 44

Единомышленники

1 tech lead

Прагматичный выбор технологий

Уровень знаний не ниже среднего

1 команда = 4-5

Единомышленники 1 tech lead Прагматичный выбор технологий Уровень знаний не ниже среднего
человек

Слайд 45

Единомышленники

1 tech lead

Прагматичный выбор технологий

Уровень знаний не ниже среднего

1 команда = 4-5

Единомышленники 1 tech lead Прагматичный выбор технологий Уровень знаний не ниже среднего
человек

Слайд 46

Единомышленники

1 tech lead

Прагматичный выбор технологий

Уровень знаний не ниже среднего

1 команда = 4-5

Единомышленники 1 tech lead Прагматичный выбор технологий Уровень знаний не ниже среднего
человек

Слайд 47

Разбираем приложение по кирпичикам

Разбираем приложение по кирпичикам

Слайд 48

1 фича = 1 стикер

~ 5 месяцев

Оценка на 1 чел (S, M,

1 фича = 1 стикер ~ 5 месяцев Оценка на 1 чел
L, XL),
участвует вся команда

Считаем, отдаем бизнесу

Слайд 49

Строим архитектуру

Строим архитектуру

Слайд 50

Требования к архитектуре

Масштабируется

Бизнес-логика отделена от представления и данных

Тестируется

Не зависит от реализации: UI,

Требования к архитектуре Масштабируется Бизнес-логика отделена от представления и данных Тестируется Не
библиотек, платформы

Простая в понимании и применении

Слайд 51

<>
Interactor

InteractorImpl

<>
Repository

Entity

RepositoryImpl

<>
DataSource

DataSourceImpl

EntityConverter

Model

Presenter

<>
View

Activity

Fragment

<>
Router

RouterImpl

> Interactor InteractorImpl > Repository Entity RepositoryImpl > DataSource DataSourceImpl EntityConverter Model

Слайд 52

Но мы наступили на грабли :(

Но мы наступили на грабли :(

Слайд 53

Грабли №1

Бизнес-логика == представлению

Грабли №1 Бизнес-логика == представлению

Слайд 58

<>
Repository

Entity

> Repository Entity

Слайд 65

Грабли №2

Бойлерплейт с конвертерами

Грабли №2 Бойлерплейт с конвертерами

Слайд 66

RepositoryImpl

<>
DataSource

DataSourceImpl

EntityConverter

Model

RepositoryImpl > DataSource DataSourceImpl EntityConverter Model

Слайд 71

Entity

RepositoryImpl

<>
DataSource

DataSourceImpl

EntityConverter

Model

Entity RepositoryImpl > DataSource DataSourceImpl EntityConverter Model

Слайд 72

Entity

RepositoryImpl

<>
DataSource

DataSourceImpl

<>
Repository

Entity RepositoryImpl > DataSource DataSourceImpl > Repository

Слайд 73

Выбираем технологии

Выбираем технологии

Слайд 74

Не тратить время на изобретение велосипедов

Не тратить время на изобретение велосипедов

Слайд 77

Dagger2

Room

Dagger2 Room

Слайд 78

“Если хочешь рассмешить Бога, расскажи ему о своих планах”

“Если хочешь рассмешить Бога, расскажи ему о своих планах”

Слайд 79

Проблема №1

Dagger2

Проблема №1 Dagger2

Слайд 86

Проблема №2

Rx Hell

Проблема №2 Rx Hell

Слайд 91

Еще один пример

Еще один пример

Слайд 93

Правило

«Логика использования технологии
не должна быть сложнее
логики решения задачи»

Правило «Логика использования технологии не должна быть сложнее логики решения задачи»

Слайд 94

Тесты нам помогают

Тесты нам помогают

Слайд 95

Не принимаем код без Unit-тестов

Не принимаем код без Unit-тестов

Слайд 98

В одной упряжке с дизайнерами

В одной упряжке с дизайнерами

Слайд 102

Не попадаем в дедлайн

Не попадаем в дедлайн

Слайд 103

Строим итеративный
план спринтов

Строим итеративный план спринтов

Слайд 106

Задачи

Задачи

Слайд 108

Но команде прозрачно и бизнесу спокойно

Но команде прозрачно и бизнесу спокойно

Слайд 109

Эпилог

“Если головоломка не сложилась,
и тебе уже не собрать пазлы
— начни сначала”© Death Note

Эпилог “Если головоломка не сложилась, и тебе уже не собрать пазлы — начни сначала”© Death Note

Слайд 110

Переписать приложение с нуля
и не потерпеть фиаско – можно!

Но для этого…

Переписать приложение с нуля и не потерпеть фиаско – можно! Но для этого…

Слайд 111

Дизайнеры могут помочь, для этого есть все инструменты

Задать вопрос – «А нужно

Дизайнеры могут помочь, для этого есть все инструменты Задать вопрос – «А
ли?»

Собрать команду единомышленников и оценить масштаб

Построить архитектуру решающую задачи бизнеса

Выбрать технологии, основываясь на опыте команды

Использовать Unit-тесты, они сэкономят время на отладке

Слайд 112

Дизайнеры могут помочь, для этого есть все инструменты

Задать вопрос – «А нужно

Дизайнеры могут помочь, для этого есть все инструменты Задать вопрос – «А
ли?»

Собрать команду единомышленников и оценить масштаб

Построить архитектуру решающую задачи бизнеса

Выбрать технологии, основываясь на опыте команды

Использовать Unit-тесты, они сэкономят время на отладке

Слайд 113

Дизайнеры могут помочь, для этого есть все инструменты

Задать вопрос – «А нужно

Дизайнеры могут помочь, для этого есть все инструменты Задать вопрос – «А
ли?»

Собрать команду единомышленников и оценить масштаб

Построить архитектуру решающую задачи бизнеса

Выбрать технологии, основываясь на опыте команды

Использовать Unit-тесты, они сэкономят время на отладке

Слайд 114

Дизайнеры могут помочь, для этого есть все инструменты

Задать вопрос – «А нужно

Дизайнеры могут помочь, для этого есть все инструменты Задать вопрос – «А
ли?»

Собрать команду единомышленников и оценить масштаб

Построить архитектуру решающую задачи бизнеса

Выбрать технологии, основываясь на опыте команды

Использовать Unit-тесты, они сэкономят время на отладке

Слайд 115

Дизайнеры могут помочь, для этого есть все инструменты

Задать вопрос – «А нужно

Дизайнеры могут помочь, для этого есть все инструменты Задать вопрос – «А
ли?»

Собрать команду единомышленников и оценить масштаб

Построить архитектуру решающую задачи бизнеса

Выбрать технологии, основываясь на опыте команды

Использовать Unit-тесты, они сэкономят время на отладке

Слайд 116

Дизайнеры могут помочь, для этого есть все инструменты

Задать вопрос – «А нужно

Дизайнеры могут помочь, для этого есть все инструменты Задать вопрос – «А
ли?»

Собрать команду единомышленников и оценить масштаб

Построить архитектуру решающую задачи бизнеса

Выбрать технологии, основываясь на опыте команды

Использовать Unit-тесты, они сэкономят время на отладке

Слайд 117

Нам это удалось, чего и вам желаем!

Нам это удалось, чего и вам желаем!