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

Содержание

Слайд 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

Архитектура

Слайд 16

? MVPVM?

?

MVPVM?

Слайд 17

? MVPVM?

?

MVPVM?

Слайд 18

?

?

Слайд 19

Слайд 20

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

Проблема №2

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

Слайд 21

Слайд 22

Слайд 23

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

Проблема №3

Рефакторинг

Слайд 24

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

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

Слайд 25

Слайд 26

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

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

Слайд 27

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

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

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

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

тонем в техдолге

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

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

Слайд 28

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

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

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

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

тонем в техдолге

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

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

Слайд 29

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

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

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

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

тонем в техдолге

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

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

Слайд 30

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

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

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

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

тонем в техдолге

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

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

Слайд 31

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

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

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

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

тонем в техдолге

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

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

Слайд 32

Слайд 33

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

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

Слайд 34

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

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

Слайд 35

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

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

Слайд 36

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

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

Слайд 37

Слайд 38

Слайд 39

Слайд 40

Слайд 41

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

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

Слайд 42

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

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

1 tech lead

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

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

1 команда =

4-5 человек
Слайд 43

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

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

1 tech lead

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

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

1 команда =

4-5 человек
Слайд 44

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

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

1 tech lead

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

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

1 команда =

4-5 человек
Слайд 45

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

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

1 tech lead

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

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

1 команда =

4-5 человек
Слайд 46

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

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

1 tech lead

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

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

1 команда =

4-5 человек
Слайд 47

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

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

Слайд 48

1 фича = 1 стикер ~ 5 месяцев Оценка на 1

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

~ 5 месяцев

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

M, L, XL),
участвует вся команда

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

Слайд 49

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

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

Слайд 50

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

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

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

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

Тестируется

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

UI, библиотек, платформы

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

Слайд 51

> Interactor InteractorImpl > Repository Entity RepositoryImpl > DataSource DataSourceImpl EntityConverter

<>
Interactor

InteractorImpl

<>
Repository

Entity

RepositoryImpl

<>
DataSource

DataSourceImpl

EntityConverter

Model

Presenter

<>
View

Activity

Fragment

<>
Router

RouterImpl

Слайд 52

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

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

Слайд 53

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

Грабли №1

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

Слайд 54

Слайд 55

Слайд 56

Слайд 57

Слайд 58

> Repository Entity

<>
Repository

Entity

Слайд 59

Слайд 60

Слайд 61

Слайд 62

Слайд 63

Слайд 64

Слайд 65

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

Грабли №2

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

Слайд 66

RepositoryImpl > DataSource DataSourceImpl EntityConverter Model

RepositoryImpl

<>
DataSource

DataSourceImpl

EntityConverter

Model

Слайд 67

Слайд 68

Слайд 69

Слайд 70

Слайд 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

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

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

Слайд 75

Слайд 76

Слайд 77

Dagger2 Room

Dagger2

Room

Слайд 78

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

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

Слайд 79

Проблема №1 Dagger2

Проблема №1

Dagger2

Слайд 80

Слайд 81

Слайд 82

Слайд 83

Слайд 84

Слайд 85

Слайд 86

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

Проблема №2

Rx Hell

Слайд 87

Rx Rx Rx

Rx

Rx

Rx

Слайд 88

Слайд 89

Слайд 90

Слайд 91

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

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

Слайд 92

Слайд 93

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

Правило

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

Слайд 94

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

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

Слайд 95

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

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

Слайд 96

Слайд 97

Слайд 98

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

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

Слайд 99

Слайд 100

Слайд 101

Слайд 102

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

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

Слайд 103

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

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

Слайд 104

Слайд 105

Даты

Даты

Слайд 106

Задачи

Задачи

Слайд 107

Слайд 108

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

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

Слайд 109

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

Эпилог

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

Слайд 110

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

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

Но для

этого…
Слайд 111

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

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

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

нужно ли?»

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

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

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

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

Слайд 112

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

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

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

нужно ли?»

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

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

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

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

Слайд 113

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

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

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

нужно ли?»

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

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

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

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

Слайд 114

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

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

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

нужно ли?»

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

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

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

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

Слайд 115

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

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

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

нужно ли?»

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

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

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

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

Слайд 116

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

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

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

нужно ли?»

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

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

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

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

Слайд 117

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

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