Мой доклад на XP Days (http://xpdays.com.ua/). посвященный системе качества продуктовой команды - система ценностей, приоритизация, жизненный цикл фичи, паттерны и антипаттерны принятия решений.
При публикации slideshare прибивает анимации, поэтому вы не увидите часть слайдов в оригинальном виде :(
12. 1. Система ценностей.
2. Внутреннее управление.
3. Рост, бережливость, «готово», метрики, визуализация.
4. Разделение уровней всего.
5. Гибкость.
6. Работа над ошибками.
7. Сотрудничество, а не конкуренция.
8. Лидерство, а не менеджмент.
9. Её не боятся.
Зрелая команда
16. 17. Негативное мышление.
18. Вместе, а не вместо.
19. Уровень компетенции +1.
20.Обоснованное бесстрашие.
21. Архитектура.
22.Процессы и практики.
23. Перфекционизм, а не «Перфекционизм».
24.Ценная ценность.
25. …
Система ценностей
26. 1. Целесообразность vs. Моднявость.
2. Ценности vs. Процесс.
3. Взращивание vs. Внедрение.
4. Гигиена vs. Эпизодическая периодичность.
5. 2-шаговость vs. «Производительность».
6. Физики vs. Лирики.
7. Ранняя сдача vs. Ложная гордость.
8. Протест vs. Сопротивление.
9. WMFM vs. «Работа ради работы»
Паттерны и
антипаттерны
Каковы наши цели?
Поделиться взглядом на такую неоднозначную, а иногда и абстрактную штуку, как система управления качеством. Ограничение по времени доклада заставило сконцентрироваться на наиболее полезных (ИМХО) для аудитории вещах, отбросив всякие маркетинговые и «стретегическименеджерские» штучки.
Мы будем говорить о том, что такое система качества и как её строить через команду и жизненный цикл фичи.
Большинство продуктов. Даже в их поздних версиях после капитальных переделок.
Я называю такой подход «на отвяжись»
Это говорят все и везде
В каком настроении Шелдон?
Все говорят, но не делают на постоянной основе
Зачем нужна система управления качеством? Чтобы ошибки не попадали на бой и были созданы условия для того, чтобы они не ошибались повторно?
Система качества – та штука, которая поддерживает ваш бизнес на плаву и позволяет развиваться. Например, если у вас высокая степень реализации требований клиентов + финансы ок + удовлетворенность своей работой у команды + есть QA + QI – это система?
Должны быть определены понятия качества. QA, QI, QC. TQM.
Должен рассматриваться комплекс параметров, условий, процессов, объектов (частота выкладок, инкрементальность, количество фич, время жизненного цикла фичи, что такое рост и т.д). Чтобы четко определять причины и следствия проблем и успехов (Пример с хотфиксами вместо автоматизированной выкладки). «Самоуправляемая» система – было бы неплохо
Любой сложный процесс – система сдержек и противовесов. Должен быть баланс между перфекционизмом и пофигизмом в разрезе определений качества (п.1). Ваш продукт – мяч на палубе корабля в шторм, его нужно и подпирать, и тянуть.
Управление качеством должно быть непрерывным. Мяч на палубе
Система качества не должна быть догмой. Меняется рынок, команда, бизнес-модель – меняется и система качества. Мяч на палубе
Одним из обязательных атрибутов развития системы качества является зрелая команда. Параметры зрелости команды должны быть тоже определены (соблюдает обязательства, контролирует жизненный цикл фичи, растет правильным образом вместе с продуктом и т.д.).
Нужно расставлять приоритеты, помочь в этом могут вытягивающие принципы: что нужно, чтобы выложиться завтра? Чего не хватает, чтобы выложить фичу через секунду? Да-да, речь о MVP.
Делать то, что нужно, вовремя и за внятную цену – QI.
Внятный и единый подход к приоритизации – один из показателей системности.
3 категории инженерных задач:
х.з.
Есть немного перчика
Рутина
Большинство разработчиков делает в таком порядке
Грех пошлого самоцитирования
Исходя из ценности, прозрачности решения и стоимости изготовления (даже эвентуальной) – делаем только то, что нужно.
20/80.
MVP.
Синтетический сахар.
Желательно как можно больше практик визуализировать таким вот простым образом.
Это будут гвозди вашей системы качества.
Теперь – о зрелой команде, самом важном элементе системы управления качеством.
Система ценностей важнее и ценнее, чем процесс, потому что…
Она обеспечивает внутреннее управление, что является основой самоуправления (отсылка к презентации по Auftragstaktik). Все мы мечтаем снизить расходы на QA и увеличить на QI.
Определение роста для команды – один из параметров системы. В TQM, например – больше фич за те же деньги или те же фичи за меньшие деньги. Деминг, Шухарт, Лазло, 1977, LEAN. Понятие «готово» должно быть общим с рынком/заказчиком. Команда меряет или пытается мерять.
Уровни управления (стратегический, оперативный, тактический) разделены и есть лидеры (не менеджеры) этих направлений. Разделение уровне тестирования, разделения сред, …
Гибкость – не просто меняем фичи по заказу, а меняем тактику поведения, практики, процессы.
Команда работает над ошибками. Работа заключается не в самобичевании и F***DD, а в анализе проблем и постановке задач на предотвращение.
Система отношений немного коммунарская (Педагогическая поэма, Макаренко). Не «зрелая конкуренция», а сотрудничество. Апофеоз – боевые команды спецназа.
Абсолютное самоуправление – миф. Должны быть лидеры: команды, направлений, областей домена, фич.
Пример про отдел продаж и каникулы.
Итак, система ценностей…
Ваша нерабочая фича может причинить кому-то боль. Относитесь к изменениям, как к патчу на себя любимого. «Тщательнее, тщательнее» [c] ММЖ, «Никогда не будет второго шанса оказать первое впечатление» [c]
Нетерпимость к грязи и постоянство нетерпимости. Как минимум – табличка «здесь мины», максимум – пацан увидел, пацан подумал, пацан отрефакторил. Нетерпимость к двойным стандартам.
Не понимаешь цели фичи, не видишь WMFM, не понимаешь, как сдавать будешь – не делай.
Обязательство – это не слово джентельмена «захотел – дал, захотел – забрал». Соблюдение обязательств – объект работы над ошибками, параметр роста команды.
Если вы облажались – самое последнее, что вы можете сделать, это концентрация на проигрыше.
MVP + Не усложняй, отразить сложное сложным образом может всякий, а вот профи…
Кадровая политика. Зачем топить себя?
Если в команде не думают о развитии и WMFM – это не команда продукта, это объединение людей под одной крышей в одной локальной сети.
Ошибся и исправил ошибку – молодец. Если не сделал 2й шаг – не сделал так, чтобы никогда не повторилось – совсем не молодец. Причем, не повторились последствия, а не создались условия для причин (root cause analysis).
Работайте маленькими группами. Предел самоуправления – 5 человек, остальное – маркетинговый шум.
Индустриальные стандарты создают люди. Если вы настройки по умолчанию делаете вашими предусловиями для работы – вам капут в долгосрочной перспективе. Как минимум – фейл версии/поколения/продукта, как максимум – вырождение команды. Пример про мерчанта, который написал свой селениум.
Не старайтесь ощастливить весь мир. MVP. Шикарное философское обоснование – Калеб Страттон, сериал «Ведьмак».
Ошибайтесь и не наказывайте за ошибки. Опыт через действие. Один из плюсов работающей системы качества – ошибки не попадают на бой.
Основные причины срыва планов: то одно, то другое. План – это не способ отчитаться перед дядей, а способ обеспечить свою концентрацию на задаче, не думая о том, что ты будешь делать следующим или что нужно сделать вообще.
Неработающий инструмент – это вина не инструмента, а того, кто его выбрал/применяет. Или учитесь пользоваться выбранным, или - меняйте.
Гордиться внедренным процессом – фу, гордиться фичами, клиентами, ростом и т.д. – ок.
Глоссарий, практики, процессы – все должно восприниматься одинаково. Непонимание и неоднозначность – базовый риск.
Чисто позитивное мышление – отголосок детства и фенотипа могущественного взрослого, который за поведение купит поведение и может отменит дождик. Обязательно должна быть стратегия и тактика для ситуации «нам п..ц». Пример с нейронной сетью и фродом.
Новая фича или новая версия/поколение не должны ломать старые. Изоляция и переключение.
Один из базисов самоуправления. Часто подменяется понятием «разработчик должен разбираться в менеджменте, тестировании, администрировании и т.д., чтобы мог заменить хотя бы частично». Чушь! Он должен иметь возможность влиять на идеи, решения, практики и процессы. Пример из Auftragstaktik про сержант – лейтенант – генерал. Вот почему младшие по званию говорят первыми.
Нужно все делать для того, чтобы вы могли выкладывать мажорные билды без паники у владельцев, руководства, команды и «взведенных курков» для заказчиков «у нас тут новая версия, поэтому может все поломаться». WTF?
Микросервисы – микропроблемы
Практики – тоже ценность
Всегда надо вовремя успеть понять где кончается экстрим и начинается п..ц. Но мой перфекционизм заставляет доводить п..ц до конца. Работа ради работы.
Работа над системой ценностей
Что угодно, что вы считаете важным и нужным
Архитектурно? Ценно!
Люди часто делают не то и не так, иногда то и не так, а иногда то и так, но за безумное время. Равновесие – параметр системы.
Революции – не лучший способ развивать продукт. Но, иногда нужны и они.
Процессы и практики нельзя внедрить, можно посеять в головах и вырастить. Это ещё одна основа внутреннего управления – принять душой.
Как идея превращается в деньги (заметьте – не в код :) у нас.
Длина жизненного цикла фичи – самая важная метрика, ИМХО.
Каждый указанный шаг обязателен. Если перескакиваем – это должно быть очень обоснованное коллегиальное решение.
Итак:
Идея трансформируется в цель, которую надо достичь.
Критерии достижения цели (как понять, что сдались), запах денег.
Сценарии в стиле «зачем – кто – когда – что и с чем – результат». SMEAC.
Проработка решения.
Ревью решения и инструментария, чек-листов и тестов (если они уже есть).
Оценка. Ранее – только вероятностные оценки разного стиля.
Кодирование, не программирование.
Ревью результата.
Разработчик по тестам тестирует дев-среду.
Тестировщик по тестам тестирует дев-среду.
Тестировщик по тестам тестирует тест-среду.
Другой тестировщик по тестам тестирует зеркало.
Все готовят план выкладки.
Все должны быть готовы к пердюмоноклю.
Все по плану готовятся к выкладке.
Релиз через переключение.
Тестирование стендом и руками (если ещё не автоматизировано) сами или вместе с пользователями.
Наблюдаем за жизнью нового билда.
Накопились логи, отклики – анализируй.
Чини баги, если есть. Признак зрелости – нет всплеска багов.
Вдумчивый анализ результатов билда – статистика, финансы, отклики, общение с пользователями.
Постановка задач на масштабирование, развитие, смену поколений. Или констатация смерти.
Основная проблема – согласованность работы. Поэтому…
Создали вы свою систему ценностей, жизненный цикл и т.д. Что дальше?
А дальше – нужно постоянно работать над системой, анализировать ошибки и успехи, повышать планки, коллекционировать паттерны и антипаттерны. Свести магию к работе.
Примеры, где рвется система ценностей, чем увлекаются во вред:
Если нет цели, критериев и запаха денег – в топку buzzwords.
Уже говорил – система ценностей важнее, чем поставленный процесс. Часто увлекаются. Особенно на этапе, когда пошли деньги – конечно, нужно же теперь упорядочить бардак и не потерять прирост денег, т.е. поставить процесс («воспроизводимость», «качество» как условия не потерять деньги). Кто упорядочит – те, кто его создали? Привлеченный консультант, который не живет с вами и ему в душе плевать на ваш результат? Не потерять деньги – это ваша цель? А как же пользователи и завоевание галактики?
Нельзя внедрить практики и поставить процессы. Не работает, требует слишком много контуров контроля.
Постоянная нетерпимость. Теория разбитых окон. Технологические каникулы и возврат долга.
Никогда не будет второго шанса оказать первое впечатление. Если уж облажались – сделайте все, для того, чтобы второе и третье впечатление было отличным от «рукопопы».
Не зришь в корень, не умеешь докопаться до причин, не умеешь программировать в сценариях, а не в коде – нафиг с пляжа.
Ложная профессиональная гордость – мерзопакостная штука.
«Протест — это когда я заявляю: то-то и то-то меня не устраивает.Сопротивление — это когда я делаю так, чтобы то, что меня не устраивает, прекратило существование.Протест — это когда я заявляю: всё, я в этом больше не участвую.Сопротивление — это когда я делаю так, чтобы и все остальные тоже в этом не участвовали». [c] Майнхоф
Без комментариев
Если зло неизбежно, то нужно принять его, но убить всех его детей. [c]
И самое главное – берегите команду. Нет сроков, которые нельзя передвинуть и фичесетов, которые нельзя урезать. Овертайм – это аномалия. Если вы за него платите деньги – вы убийца команды.
О тех, кто работает на совесть, знают. О тех, кто работал на износ – помнят.
Итог – качайте систему ценностей и держите под микроскопом жизненный цикл, кроме стратегии и тактики развития продукта И делайте это не в рандоме, а в суровых рейдах правильного ветеранского клана. Да пребудет с вами лут. Хау.
И пятничных котиков вам!
Спасибо за внимание!
Задавайте вопросы и критикуйте сейчас или после конференции.