Наследование legacy-систем и
процессов,
или Первые 90 дней в роли CTO
Leon Fayer
@papa_fire
> 20+ лет опыта
решений проблем
> профессиональный
циник
@papa_fire
leon.fayer
LeonFayer1
lfayer@gmail.com
medium.com/fayerplay
@papa_fire
день
-30
@papa_fire
@papa_fire
- учебные программы для детей раннего возраста
- 40 лет компании
- 10 лет цифровой версии (SaaS)
- "новая" версия в 2017
@papa_fire
прогнозируемый циклический трафик
@papa_fire
прогнозируемый циклический трафик
первый день
@papa_fire
ColdFusion
SQL Server 2008
Ruby
MySQL
Postgres
Java
Go
Python
…..
@papa_fire
проблемы не только
технического свойства
@papa_fire
совет директоров
CTO
CPO
QA-директор
новый
@papa_fire
системы
процессы
люди
культура
legacy
@papa_fire
день
-2
@papa_fire
4s
@papa_fire
network latency
5ms network = 2s user
@papa_fire
день
1
@papa_fire
4s
@papa_fire
@papa_fire
“
иногда для изменения
технологии нужно
менять организацию
@papa_fire
@papa_fire
день
3
@papa_fire
стабилизация платформы
SHORT TERM
@papa_fire
1-3pm
@papa_fire
@papa_fire
“
нам нужно
больше серверов!
@papa_fire
“
мы не можем поддерживать
150 req/sec
нужно больше серверов!
@papa_fire
перед тем, как дать правильный ответ,
надо задать правильный вопрос
@papa_fire
“
17 frontend-серверов
@papa_fire
“
мы не можем поддерживать
100 req/sec
нужно больше серверов!
@papa_fire
var currentClass = classes.getCurrentClass();
return currentClass;
my_class()
из базы данных
@papa_fire
200+ запросов на каждой странице
@papa_fire
@papa_fire
if ( !isDefined("REQUEST.currentClass") ) {
var classes = new api.private.classes.base();
REQUEST.currentClass = classes.getCurrentClass();
}
return REQUEST.currentClass;
my_class()
@papa_fire
@papa_fire
другие оптимизации ++
@papa_fire
# t o d a y i l e a r n e d
redis
memcache
@papa_fire
# t o d a y i l e a r n e d
redis
memcache
mongoDB
SQL Server
@papa_fire
день
10
@papa_fire
@papa_fire
разработчиков
тестеров
менеджера
архитектора
команда
ceremony
18
8
3
2
1
1
@papa_fire
1 команда / линия продуктов
(разработчики, тестеры, ПМ)
@papa_fire
•сокращенные церемонии
•предметное знание продукта
•чувство собственности
@papa_fire
•сокращенные церемонии
•предметное знание продукта
•чувство собственности
•сотрудничество между группами
@papa_fire
• эффективность
• производительность
• качество
фокус на ...
@papa_fire
день
11
@papa_fire
Story Points
# t o d a y i l e a r n e d
@papa_fire
Story Points
• 1 SP = 1 день
• минимум 2 SP
(dev + QA)
@papa_fire
@papa_fire
@papa_fire
•пересматриваем систему оценки SP
•объединяем связанные тикеты для
разработки и тестирования
•работаем с разработчиками над
подходом к estimates
@papa_fire
день
20
@papa_fire
стабилизация платформы
LONG TERM
@papa_fire
долгосрочные цели
• управляемая платформа
• предсказуемые тенденции
• расширение платформы
поддержка роста компании
@papa_fire
“
мы все перепишем в […],
и оно будет работать лучше!
@papa_fire
•отражает миссию и цели проекта
•приоритезирует основные цели
•график доставки
roadmap
конкретная стратегия, иллюстрирующая
шаг за шагом, как будут достигнуты бизнес-цели
@papa_fire
нужны
правильные
показатели успеха
@papa_fire
KPI
индивидуальные
организационные
командные/групповые
командные/групповые
индивидуальные индивидуальные индивидуальные
@papa_fire
KPI
Увеличить долю рынка посредством новых продуктов
Сдвиг производительности с
дефектов на разработки новых
продуктов
Поддержка увеличения объема
транзакций
Устранить топ 5% драйверов
объема дефектов
Улучшить отзывчивость интерфейса
на 20%
@papa_fire
“
мы все перепишем в [...],
и оно будет
поддерживать…
рост организации
новые функции
набор персонала
@papa_fire
все тикеты должны
быть ориентированы
на 1+ KPIs
@papa_fire
день
28
@papa_fire
# t o d a y i l e a r n e d
@papa_fire
@papa_fire
версия n-1
@papa_fire
день
45
@papa_fire
value stream mapping
необходимые шаги,
которые нужно предпринять
от создания продукта
до доставки его потребителю
@papa_fire
@papa_fire
высокий процент
возврата тикетов
из QA
@papa_fire
PR review
@papa_fire
“
нельзя улучшить то,
что нельзя измерить
@papa_fire
@papa_fire
эффективность процесса
- производительность
- запланировано vs доставлено
качество процесса
- количество дефектов
- дефекты от QA
новые метрики
@papa_fire
день
50
@papa_fire
@papa_fire
надо создать
коллектив
@papa_fire
•оценить навыки команды
•добавить кадры
•заменить кадры
@papa_fire
@papa_fire
•старого и нового
•опыта
•carrot and a stick
баланс
@papa_fire
самая
труднорешаемая
проблема …
@papa_fire
день
51
@papa_fire
“
большинство проблем –
это проблемы с людьми
@papa_fire
•удовлетворенность текущим положением вещей
•отсутствие ответственности
•боязнь перемен
@papa_fire
•удовлетворенность текущим положением вещей
•отсутствие ответственности
•боязнь перемен
@papa_fire
перемены выводят
из
(и так маленькой)
зоны комфорта
@papa_fire
мы так
никогда не
делали
@papa_fire
нельзя стать
лучше, ничего не
меняя
@papa_fire
• удовлетворенность текущим положением вещей
•отсутствие ответственности
•боязнь перемен
@papa_fire
это лучше, чем
было
@papa_fire
•удовлетворенность текущим положением вещей
•отсутствие ответственности
•боязнь перемен
@papa_fire
тех. группа
@papa_fire
никто не установил
стандарты
@papa_fire
• 12 секунд загрузка
• 5-10 минут downtime каждый релиз
• устранение критических неполадок занимает
дни / недели
• отсутствие 24х7 / on-call
"приемлемо"
@papa_fire
•удовлетворенность текущим положением вещей
•отсутствие интереса к пониманию проблемы
•отсутствие ответственности
•боязнь перемен
•бонус: отсутствие опыта
@papa_fire
люди боятся …
… потерпеть неудачу
… показаться некомпетентными
@papa_fire
•не просят помощи
•завышают estimates
•излишне анализируют
@papa_fire
•не просят помощи
•завышают estimates
•излишне анализируют
•правило 30 минут
•исключить все, кроме сути
• (непрерывное обучение)
@papa_fire
день
60
@papa_fire
@papa_fire
# t o d a y i l e a r n e d
FTP
@papa_fire
AWS
$$
разработчики
@papa_fire
• неограниченный доступ к
серверам и сервисам
• желание построить крутую
систему
есть
@papa_fire
• опыта закупки серверов
• опыта определения нужного
размера серверов
• понятия разницы между
scalability и performance
нет
@papa_fire
• вышли из одного дата-центра
• расторгнули договор с 3 лог-сервисами
• выключили 7 AWS-систем
• уменьшили расход на софт в 6 раз
после инвентаризации
@papa_fire
день
75
@papa_fire
@papa_fire
совет директоров хочет знать …
…
…
…
среднюю скорость загрузки
@papa_fire
средняя величина
это зло
@papa_fire
разделить трафик
nginx
jetty
CF
images
@papa_fire
средняя скорость загрузки +200ms (~12%)
@papa_fire
@papa_fire
день
85
@papa_fire
время
@papa_fire
@papa_fire
конец?
@papa_fire
@papa_fire
культура
@papa_fire
• не бояться неудач
• учиться на ошибках
• сотрудничать с другими группами
• проявлять инициативу
• искать ответственность
• приветствовать результат как цель
• праздновать успех
@papa_fire
спасибо!
@papa_fire
leon.fayer
LeonFayer1
lfayer@gmail.com
medium.com/fayerplay

Наследование legacy-систем и процессов, или Первые 90 дней в роли CTO