Дмитрий Лобасев (lobasev.ru)


Давайте погрузимся в механику гибких процессов и вместе подумаем, как сделать так, что вот, приходите вы, например, с конференции и как менеджер говорите: «Так, ребята, всем Kanban с понедельника!» или «Всем Scrum!». А ребята смотрят на вас – ну, а какой у них выбор? Сказали Scrum, значит, Scrum… Идут, что-то делают, пытаются сделать Scrum, делают какие-то ритуалы, приплясывают возле доски по утрам, ходят, что-то еще делают. Но что-то не работает.

Мой доклад, как раз, этому и посвящен. Давайте рассмотрим механику Agile-процессов – как сделать так, чтобы все-таки это приносило ценность.

Вот как было задумано:



Ну, и получается на выходе:




Дмитрий Лобасев

Пара вступительных слов. О себе. Меня зовут Дима Лобасев. Я последние 5 лет занимаюсь тем, что помогаю компаниям сделать процессы более хорошими, чем они есть сейчас.

Работать приходится с двумя типами компаний:

  1. у которых каскадная модель, т.е. водопад,
  2. у них никакой процесс. Они говорят, что у них уже Agile, например, или у них водопад, хотя на самом деле там, конечно, процессный адафат…

Смотрите, как интересно индустрия развивалась, пара ключевых моментов:

В 1970 г придумали каскадную модель. Выглядело это примерно вот так:



Т.е. приходит к нам заказчик и говорит: «Ребята, запилите продукт». Мы: «Хорошо, сейчас мы соберем требования, спроектируем, разработаем, протестируем, выкатим, и будет тебе счастье». Правильно?

А на самом деле водопад выглядел вот так вот (это оригинальная pdf, ее можно в Google скачать):



Winston Royce говорил о том, что на самом деле невозможно за один проход сделать хороший, качественный продукт. Нужно сделать таких, минимум, два прохода.

Те, у кого из вас водопад, делаете вы два раза одно и то же, начиная от анализа и заканчивая тестированием перед выкладкой? Мало, кто делает.

Ну, и получается на выходе:



Есть такой ролик Макса Дорофеева на Ютубе, это оттуда скриншотик.

Процесс выглядит примерно так. Какие-то люди большую половину времени проекта генерят какую-то безумную документацию. Разработчики на это все потом смотрят, если смотрят. Они как бы немного в шоке. Тестировщики плачут. На моей практике всегда тестировщикам очень грустно, потому что мало того, что ребята сделали не совсем то, что было написано, так они еще делали это очень долго – мы же не закладывали, какие буферы между стадиями, все равно у нас разработка занимает больше времени, чем мы хотели. И самое интересное – они тестируют обо что?.. Есть даже такой термин «тестирование об требования», хотя заказчик уже понимает, что должно быть что-то по-другому.



Дальше было вот что:



Появился в 1995 г. RUP (Rational Unified Process), основанный на каскадной модели, и появился Scrum. В один и то же год индустрия раскололась на две части.

Были люди, которые верили в RUP и каскадную модель, жестко регламентированные процессы: «Давайте сделаем 33 роли, опишем все-все процессы, процедуры, будем по ним идти, и тогда мы верим в то, что тогда наш проект с высокой степенью вероятности будет сделан в срок, в рамках бюджета, с нужным качеством и т.д.».

И были люди, которые говорили: «Ни фига, не будет это никогда работать, потому что, какой бы мы универсальный процесс ни придумывали, контексты проектов все время разные. Даже внутри одной компании разные проекты имеют совершенно разные контексты, потому что люди разные, технологии разные, заказчики разные, сами продукты разные и т.д. Как один процесс может подходить сразу всем?».

И раз уж сейчас 2015 год, и мы тут говорим с вами про Agile, выглядит так, что вторые ребята победили. Веточка гибких процессов. Почему? Потому что в 2005 г. RUP успешно почил. Не то, чтобы его нельзя было бы использовать или что-то еще. Просто он перестал развиваться, вышла последняя его четвертая версия, и в 2012-13 гг. один из его авторов – Ивар Якобсон – у себя в блоге написал, что «Ребята, извините, был не прав. В современном мире RUP не работает, слишком unified и это его погубило».

В 2006 г. появился Kanban, в 2009 г. – DevOps. Это все нюансы.

Идея вот какая: в индустрии с 2005 г. не появилось ни одной методологии, которая описывала бы последовательно, что и как мы должны делать, которая стала бы промышленным стандартом. Все, что появилось – XP, Scrum и т.д. – это все наборы инструментов. Это все процессные фреймворки, которые вы можете взять за основу и вокруг которых в своей проектной команде можете выстроить свой процесс – такой, какой вам нужен в данный конкретный момент времени.

Давайте посмотрим на пример команды.



Что с ними не так? Все улыбаются. Ну, люди в банке работают. В стороне кто-то сидит. Вы посмотрите в ваших командах, если у вас распределенные команды, есть у вас такое, проявляется или нет? Ребята из Москвы, а этот приехал из Екатеринбурга в командировку. Поэтому он как бы себя с ними чувствует в не очень тесных отношениях, хотя они работают над одним проектом.

Итак, есть проектная команда, которая как-то работает, какие-то проблемы есть, какие-то факапчики, работаем по выходным, заказчик нами не всегда доволен, перерабатываем что-то. И в определенный момент кто-то говорит: «Доколе?». Или бизнес приходит, например, и говорит: «Ребята, уже нельзя больше так работать, давайте начнем что-то менять».

Существует, в принципе, несколько возможных вариантов, как можно поступить. Смотрите, как обычно бывает на практике:



  1. внедряем готовый подход, т.е. приходим и говорим: «Теперь вы делаете так, так и так». Это первый вариант.
  2. второй вариант – это попробовать «что-нибудь модненькое». Ну, все говорят, Agile, Scrum, Kanban и т.д. Надо, типа, брать и делать.

И что получается на выходе?

Смотрите, бывает или было у вас так? Пример со Scrum'ом:



Разработчики встречаются у доски и один другому говорит: «Вчера я охотился на диких волосатых мамонтов. Сегодня буду охотиться на диких волосатых мамонтов. Как бы, проблем никаких нет». Другой разработчик повторяет то же самое, потому что это ритуал, про который Scrum нам говорит, что мы должны отвечать на три вопроса на этих утренних стендапах. Они поговорили и разошлись.

Есть от этого польза какая-то? «Я делал задачу Jira 125. Сегодня буду продолжать делать эту задачу. И проблем у меня никаких нет. Все, я молодец». Это пример. Есть этому даже название – карго-культ, наверное, слышали? Когда мы исполняем ритуалы, не понимая, зачем они нужны.

Еще один пример. В Scrum'е есть такая штука, на которую все обычно забивают, потому что «понятно, что это, конечно, очень хорошо, но нам она не очень нужна». Но у тех, кто не забивает, бывает вот такая штука:



Ретроспектива. Итерация закончилась, мы встретились, один говорит: «Блин, было отстойно». И другие: «Даа». Друг на друга посмотрели и разошлись.

Или бывает еще эволюция ретроспектив. Сначала просто разошлись, потом, если еще раз встретились, друг на друга посмотрели: «Было не круто, много багов. Что будем делать?». И все тупят, не понимая, а что же они могут сделать с большим количеством багов? И кто-то говорит: «А давайте писать более качественный код?» И все такие: «Трудно спорить, давайте». И опять разбежались – писать более качественный код.

Помогла такая ретроспектива? Наверное, не очень. Потому что не понятно, что это значит – «более качественный код»? «Давайте работать лучше» – из этой же серии.

Есть еще. Я в некоторых компаниях наблюдал вариант «Декларирование ценностей «сверху».



Представьте себе, что менеджер какой-нибудь, руководитель функциональный, например, руководитель IT-департамента послушал специальный доклад, в котором было все круто, фреймворки там в компании, все дела… Приходит в офис и говорит: «Ребята, вы должны разделять Agile ценности, вы должны быть вот такими, инновационными и т.д.». Вот что-то из этой серии:



Ребята на него смотрят… И это не работает… Он не понимает: «Да как же так? Мы же за Agile, мы за вот эти ценности, люди и их взаимодействия… Ходим постоянно… Ребята, вы должны быть ответственны, вы должны думать за бизнес, помогать ему и т.д.».

Проблема заключается в том, что мало говорить, что нужно делать, надо еще и помогать людям это делать.



И идея такая: наша с вами задача, как людей, которые, так или иначе, участвуют в процессе внедрения Scrum, Kanban, чего угодно, чтобы люди – наша проектная команда – понимала, почему и зачем им ходить на стендапы, на ретроспективы, почему их заставляют двигаться короткими итерациями, почему важно устраивать еженедельные демонстрации заказчику результатов?

И тогда это заработает.

Сегодня, как раз, я и хочу вам указать на три основных, ключевых навыка команды, которая могла бы считаться крутой командой.



Давайте представим ситуацию. Помните улыбающихся ребят на фото выше? Они выкатили что-то, и заказчик им: «Это полная хрень, не то», а мы его спрашиваем: «Что же ты молчал, раньше не сказал?». Вот такая ситуация.

Что мы с этим можем сделать? В принципе есть такие варианты:



Agile нам предлагает уже готовые и понятные инструменты. Возьмем тот же Scrum – короткие итерации. Давайте вместо 3х-месячных, полугодовых, годовых циклов научимся, каким бы B2B'шным, сложным, суперэнтерпрайз или B2G наше приложение бы ни было… Давайте научимся раз в две недели поставлять какую-то сборку, собирать с нее обратную связь, делать демонстрацию в конце каждой итерации.

Бизнес к нам приходит и говорит: «Сделайте мне хорошо». Мы его спрашиваем: «А что это значит?». Он: «Ну, как бы это все и значит». Трудно поставлять каждые две недели результат, поэтому мы должны научиться это слайсить.

Ну, там еще куча инструментов разных, вы их прекрасно знаете.

Какая у этого всего подоплека? Что, по сути, эти инструменты позволяют сделать, для того чтобы решить проблему с тем, что мы не то отдаем заказчику.

  • Найти ошибку на ранней стадии.
  • Контролировать процессы.
  • Вовремя корректировать цели.
  • Заставить заказчика подробно и корректно формулировать задачу.
  • Стать одной командой.

А самая суть… Собственно, тот самый первый навык, один из которых я вам хочу показать сегодня, суть частых демонстраций коротких итераций декомпозиции заявок – научиться как можно быстрее узнавать то, чего мы еще не знаем. Можно это назвать еще управлением рисками, встроенным в процесс работы нашей команды.



Кому-то может показаться, что эта формулировка звучит глупо, но, по сути, это лежит в основе механики гибких процессов. Как можно более быстрый цикл обратной связи.

Что обычно происходит в водопадном проекте? Мы, например, пилим продукт, через год, в лучшем случае, выпускаем релиз, и дальше начинается самое интересное. Все не то. Начинаются change requests, поэтому люди из классического управления придумали процедуры специального управления change requests, которые из заказчиков еще деньги выбивают и т.д.

Наша задача – сделать так, чтобы мы двигались маленькими шажками и постоянно узнавали что-то новое о технических рисках, об инфраструктурных каких-то вещах, о бизнесе, вообще, о клиентах, об их потребностях и т.д. Все, что угодно. Чем больше у нас информации, тем более качественное решение мы можем придумать. И движение короткими итерациями позволяет нам на каждой следующей итерации немножко свернуть в нужную сторону.

С этим понятно – как можно раньше узнавать то, что мы раньше не знали.

И у меня к вам вопрос на засыпку. У вас у большинства, наверняка, сложные проекты. А что, если заявку за две недели нельзя реализовать, бизнесовое требование? Оно не декомпозируется, чтобы была какая-то ценность на выходе. Как быть в этой ситуации? Это вам просто как домашнее задание – подумать…

Давайте усложним пример. Мы сделали выводы из того, что заказчику показали не совсем то, что ему нужно. И решили делать демонстрации часто. Снова ему показываем, на выходе опять получается не совсем то.



«Плохой заказчик» – первое, что приходит на ум. А второе, что приходит на ум – это тоже стандартная тема – «Agile нам не подходит». Типа, мы попробовали, это все в стартапах будет хорошо работать, но в нашем энтерпрайз окружении вообще никак не работает.

В чем здесь проблема? Очень важная и интересная проблема. В том, как мы думаем. Если вы посмотрите любое видео, или почитаете книжку про то, как мозг думает, то вам расскажут, что мозг, вообще, не любит думать. Думать для него – это сложно, больно, неприятно и т.д. Поэтому мозг всегда генерит шаблонные решения. Он просто берет, ищет паттерны, и ваш рот их выплевывает. Т.е. вы столкнулись с проблемой, и чего будем делать? Раз, и моментально есть решение, через наносекунду. Моментальное готовое решение. Ну, Agile нам не подходит, ок. Понятно, давай так, давайте что-нибудь другое. Или там: «О, я точно знаю, как это исправить, давайте сделаем вот так». И мы бежим, делаем, и получаются у нас процессные «костыли».



Идея следующая. Индустрия разработки вот до чего дошла. Давайте мы попытаемся заставить наш мозг думать, как бы это ни было неприятно. И кстати, водичка помогает, помогает ему не пересыхать, помогает ему думать.

Есть хорошая практика, «A3 Thinking» называется, или простой пример дерева причинно-следственных связей. Там пять «почему?».

Если мы столкнулись с какой-то проблемой, например, много багов в продакшне, или, например, чего-нибудь задеплоили, у половины пользователей что-нибудь отвалилось, и мы потеряли деньги. Первое, что приходит на ум, что нужно делать? Нужно кого-нибудь уволить, у кого-то отобрать права на деплои, кого-нибудь еще наказать и т.д. И какие-нибудь еще формальные процедуры придумать. На самом деле можно не бросаться решать эту проблему, а всей командой сесть и подумать, почему так произошло?

Пример одного из проектов. Долго шли приемо-сдаточные испытания. Т.е. мы фигачим-фигачим бизнес-требования, делаем-делаем, и на этапе приемки они у нас все зависают, не идет дальше ничего. Блин, ну почему так, мы же так старались, вроде бы бизнес приходил, говорил: «Срочно!» и т.д. Начинаем анализировать, почему долго ПСИ? Потому что у бизнеса нет ресурсов на то, чтобы осуществить эту приемку. ОК, почему у них нет ресурсов? Потому что у них есть более важные задачи. Хорошо. Почему у них есть более важные задачи? Потому что по этим задачам, которые мы сделали, потерялся приоритет, пока мы их делали. Например, потому что мы их делали месяц или полгода, либо по каким-то другим причинам слишком долго делали. Либо изначально не было приоритета у этих задач. Интересно, а почему так произошло? А потому что бизнес, как бы, сказал делать, и мы начали делать. А почему они сказали делать? Потому что других задач у них сейчас не было под рукой, чтобы нам дать. Мы внезапно освободились, и бизнес говорит: «Ну, ребята, вы же не можете простаивать, фигачьте вот это». И в итоге, мы делали-делали, тратили время, и потом это все в продакшн не идет, потому что никому не нужно. Проблема? Проблема.

Интересная вещь. Вместо того чтобы ругаться на бизнес и говорить, что они негодяи, и их вина, что ничего не выходит в продакшн, потому что они не делают ПСИ или чего-то еще. Мы докопались до глубинной причины проблемы всей нашей команды. И увидели, что на самом деле, по какой-то причине мы делаем неважные задачи. И дальше как нам поступить? Не делать неважные задачи – это шаблонный ответ. А правильный ответ такой – посмотреть нам как команде вместе с заказчиком друг на друга, т.е. мы раскопали причину, давайте друг на друга посмотрим, поймем, что мы будем с этим делать? Прямо сегодня, что лучше сделать с этой новой информацией, которую мы узнали?

Тут еще интересная особенность – готовы ли вы делать такой причинно следственный анализ в одиночку, готовы ли вы смотреть за процессом, что-то делать в одиночку? Скорее всего, нет. Подавляющее большинство людей, 99,9% не готовы. Поэтому придумали объединять людей в команды.



ОК, ты Java-разработчик, у тебя свой кусок кода, а у него – свой кусок кода… Но давайте мы будем учиться работать все вместе. Не просто каждый сделает свои задачки, будем учиться как можно быстрее и качественнее деливерить какую-то бизнес-ценность. И тогда уже мы будем видеть эти проблемы, тогда будем вместе их анализировать и будем придумывать, как можно их исправить.



И пример с ретроспективой. Это встроенный в Scrum инструмент непрерывного анализа, выявления, глубинного анализа и решения проблемы. В Kanban нет ретроспектив, но там наверняка что-то есть, связанное с проблемами.



Итак, второй навык я бы так сформулировал: научиться нам, как команде, вовремя видеть, не прятать под стол, а вытаскивать, наоборот, наружу, обязательно анализировать, не решать симптомы проблемы, а копать корневую причину, и после этого уже решать эту возникшую проблему.



ОК, хорошо, допустим научились это делать. И все делаем, но опять заказчик недоволен, т.е. на приемке оказалось, что мы сделали опять не то, что ему нужно на выходе. Как такое может быть? Что еще мы не учли? Заказчика не научили правильно смотреть. Т.е. вина в заказчике? Или в нас? В нас.



Причина здесь кроется в том, как мы, вообще, выстроили наши отношения с заказчиком. Не важно, какой это заказчик, аутсорсинговый у нас проект или внутренняя инхаус-разработка –для собственного бизнеса мы это делаем. Когда они заказчики, а мы исполнители, то они к нам приходят и говорят.

Помните шутку: заказчик прибегает в комнату (а у него же приоритет всегда наивысший) и говорит: «Ребята, срочно выстрелите мне в ногу». Они берут и стреляют ему: «Бах!». У него в коленке дырка, он плачет, истекает кровью, прыгает на одной ноге. Когда напряг немного прошел, они его спрашивают: «А что случилось-то?». Он говорит: «Да у меня чего-то под коленкой чесалось». Весь окровавленный, с дыркой в коленке. Они: «Так, может, тебе нужно было почесать?». А он в ответ на это: «А что, так можно было? Я не знал, я думал, только стрелять».

Это примерная иллюстрация подхода, когда мы делаем то, что нас просят. У аналитиков, кстати, есть такое понятие – «снимаем требования с заказчика», т.е. приходим к заказчику с диктофоном, садимся и начинаем выуживать из него то, что он хочет. Блин, ну круто! А он же хочет решить свою бизнес-потребность. Он понятия не имеет, как это должно быть реализовано в продукте, или имеет, но это понятие шаблонное у него. И в этом смысле давайте попробуем научиться помогать заказчику думать. Вне зависимости от того, кто мы в команде – отдельно взятый разработчик, аналитик, тестировщик, менеджер или кто угодно. Мы как команда или как отдел внутренней разработки, который решает бизнес-потребности клиентов, должны помогать им думать, как максимально хорошим способом реализовать то, что им нужно.



Пример. В одном из банков. Мы уже анализировали, потом писали. Когда зафакапились, бизнес пришел и говорит: «Ребята, во всех системах есть Dashboard, давайте запилим Dashboard». Аналитики: «Давайте! Что ты имеешь в виду под Dashboard?». Заказчик: «Ну, это когда цифры здесь, графики тут, это можно сюда, это туда». Аналитики: «Да не вопрос!». Хорошие аналитики сели, написали 200 страниц документации, два месяца согласовывали со всеми подразделениями, разработчики пошли, сделали, выкатили, и что оказалось? А это был B2B продукт. И оказалось, что странно, удивительное дело, но клиенты нашего продукта, хоть они и всей компанией юр. лица российские, оказалось, что большинству из них такой Dashboard, вообще, не нужен в том виде, в котором есть. Некоторым, вообще, не нужен никакой Dashboard. Почему? Потому что клиенты все разные. Есть ИП «Дима», например, у которого одни потребности в Dashboard. И, например, есть ООО «HeadHunter», у которого другие потребности, а есть ритейлер, у которого отличные от первых двух потребности в Dashboard, совершенно другая информация и по-другому должна отображаться. Поэтому фича оказалась никому не нужна.

Мы думали: «Блин, как это сделано в других системах? Может, надо было лучше смотреть, определить, кто действующие лица, для чего нужен Dashboard клиенту?». И был в команде один архитектор, он как настоящий архитектор, очень хороший, был молчалив, слова лишнего не скажет, но когда скажет, – прям бомбил. Ребята обсуждали, вся команда в течение получаса вот-вот-вот, и он такой говорит: «Ребята, а почему вообще Dashboard? Почему, вообще, нужно было сделать Dashboard? Какую проблему мы хотели решить?».

И вот третий навык нас как хорошей, классной, крутой команды заключается в том, чтобы мы помогали заказчику, задавая, например, такие вопросы, или своим опытом, своими знаниями предметной области. Задавая вопросы, на которые нет быстрого ответа. Заказчик прибегает: «Ребята, сделайте Dashboard», а мы ему говорим: «Не вопрос, сделаем. А скажи, пожалуйста, почему Dashboard?». А заказчик такой: «Ну, как? Потому что в других системах есть». А мы ему: «Какой-то слабоватый аргумент. Давай-ка подумаем, для кого он нужен и т.д.». И начинаем эти вопросы обсуждать.



Давайте посмотрим, кто наш конечный пользователь, какие есть сегменты целевой аудитории, какие у них есть потребности, проблемы, как мы можем эти проблемы решить? И для ребят из банка в этом B2B проекте, о котором я говорил, для аналитиков было невозможным даже подумать о том, что в компанию можно прийти и поговорить с будущими пользователями – с финансовым директором, например, или с бухгалтерами. Для них это был «безликий Юрик» какой-то, про которого они ничего не знали. А, оказывается, через клиентских менеджеров, если попытаться, то даже в большом банке можно выйти на конечных пользователей. Они когда это поняли, рты раскрыли и не могли в это поверить. И после этого начали делать.

И второй шаг:



Когда мы глубоко поняли проблематику, тогда мы уже можем проектировать решение. А лучше не одно решение, лучше несколько. И эти решения уже не просто потому что заказчик пришел и сказал «Ребята, сделайте Dashboard», а потому что мы понимаем, кому и зачем этот Dashboard нужен, и как им будут пользоваться.

Разумно звучит?



Третий навык можно сформулировать так: помогать бизнесу добиваться лучших результатов из возможных. Под возможными я имею в виду лучшие из тех, которые мы как IT и бизнес могли придумать, работая вместе. И за те деньги, которые нам дали, или которые мы попросили.



Возвращаясь к вопросу, как сделать, чтобы Agile заработал? Если у всех в команде или хотя бы у большинства будет понимание глубинных механизмов того, как это работает, что мы должны постоянно искать feedback, как можно быстрее узнавать то, чего мы еще не знаем, что мы должны непрерывно выявлять проблемы, глубоко их анализировать и решать, что мы должны помогать заказчику достигать лучших результатов, помогать ему думать. Вот тогда можно подбирать контекстные практики, не unified какие-то вещи, а именно те, которые сегодня у нас заработают.

Ирония заключается в том, что возьмем даже какое-нибудь банальное автотестирование, например. Для ваших команд автотестирование – это хорошо, плохо или непонятно? Не бывает команды, для которой это может быть плохо. Появляется такой таймлайн, и весь вопрос в том, что сегодня команда готова или нет? Сегодня для команды автотестирование может быть плохо, а через месяц, например, это для нее идеальная практика.

Наша задача – не следовать unified процессам, а имея в основе, например, Scrum или Kanban как базовые фреймворки, каждый день выбирать себе новые инструменты, новые практики или даже придумывать такие, которые будут делать наш процесс еще более хорошим.

Все процессы в Agile-мире эмпирические, основанные на предыдущем опыте, т.е. мы что-то сделали, у нас что-то не получилось, где-то мы зафакапились быстро и дешево, раз – придумали, как можно это исправить.



Ну, и можете проверить, если у вас Agile, Scrum, Kanban, эти две вещи у вас выполняются? Хотя бы эти две. Ориентированы ли вы на бизнес, на то, чтобы помогать ему, а не просто делать то, что он просит, не просто делать фичи, а именно решать его проблемы? Заложены ли у вас механизмы в любом их виде – хоть на стендапах вы проблемы выявляете, анализируете, решаете, хоть на ретроспективах – где угодно. Делаете ли вы это на регулярной основе или нет? И в этом, как раз, и есть успех современных команд.

Контакты


» dlobasev@gmail.com
» lobasev.ru
» ldmitry

Этот доклад — расшифровка одного из лучших выступлений на конференции по управлению и предпринимательству Whalerider.
Мы уже начали подготовку к 2017 году, кстати :)

Дополнительные материалы прошлых лет Вы можете получить, подписавшись на список рассылки конференции WhaleRider.

Поделиться с друзьями
-->

Комментарии (19)


  1. vitorg
    15.09.2016 02:16
    +1

    Жёсткий догматизм и сектантство уже зашкаливает и переходит все границы :/ Уверен, IT-сообщество скоро одумается и выгонит взашей всех этих «консультантов», бездельников-балаболок, тратящих время и мозговые такты миллионов людей.


    1. igordata
      15.09.2016 02:51
      +2

      Если вы не согласны с чем-то, то не могли бы вы аргументировать и развернуть свою точку зрения? Т.к. на текущий момент даже не понятно, не согласны вы с автором, или с теми, с кем автор не согласен.


      1. megatron
        15.09.2016 11:48
        +2

        Вот у меня есть ряд аргументов:
        Цель всех этих методологий и работы коучей — увеличить профит в бизнесе, то есть повысить прибыль, оборот, снизить затраты. То есть коуч именно этим должен хвастаться. Но я вот зашел на сайт этого Дмитрия по ссылке — там из цифр только количество клиентов, какой-то процент и циферка из опроса. Полная ерунда. На последнем слайде написано «фокус на бизнес». При этом коуч, между тем, делает фокус на себя — получить бабло и зачитать пару лекций.
        Еще меня резанула фраза из текста: «Для ваших команд автотестирование – это хорошо, плохо или непонятно? Не бывает команды, для которой это может быть плохо.» На самом деле бывает, тот же геймдев, например. Я, собственно, потому и зашел на его сайт — посмотреть опыт работы товарища, но увы, там его нет. Получается сферический коуч в вакууме.
        И еще фидбек о работе не этого чувака, а конторы скрамтрек, что была в предыдущей статье. Так получилось, что они были в двух крупных компаниях, в которых я работал. Так вот, после их работы изменилось ровно ничего, что в одной компании, что в другой. Пару недель развешивали бумажки на стенах, потом забили.


    1. midday
      15.09.2016 08:57
      -2

      Да никогда не выгонит их никто. Вы может и сопротивляетесь внутри себя, но ведь любому начальнику ясно как божий день, что без этого ничего работать не будет =D, а следующее за нами поколение будет это воспринимать как что-то само собой разумеющееся, а позже все эти бездельники будут превозноситься всеми до небес, ведь они же имеют денег, а следовательно очень дофига умные, не то что какой-то там инженеришка — быдло в шортах.


  1. babylon
    15.09.2016 05:49
    +1

    Мой принцип проще-не проявляй инициативу если лично тебе это не приносит профит.


  1. fregate
    15.09.2016 06:05

    А на самом деле водопад выглядел вот так вот (это оригинальная pdf, ее можно в Google скачать):

    https://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
    Для тех, кому лень искать


  1. buagaga
    15.09.2016 10:41

    Герман Греф про Agile:
    смотреть


  1. vlsinitsyn
    15.09.2016 11:15
    +4

    Я думаю, что практика работы с заказчиком по сбору требований не является специфической для agile и так же применима к waterfall. Это частное замечание.

    А более общее. Проблема waterfall, на мой взгляд, вовсе не в методологии, а в изменении внешних условий.

    Первое, и самое главное — резкое падение уровня технической подготовки IT аналитиков и менеджмента.
    Если раньше, в 70-х, у менеджеров проектов и аналитиков IT компаний, обычно имелся инженерный, математический и т.п. диплом, то с какого-то времени этих специалистов начали готовить сразу, минуя инженерную ступень. Соответственно, они просто не в состоянии формализовать задачу на языке, понятном инженеру.

    Частый пример из личного опыта, когда ПМ или аналитик на первом митинге с ходу заявляет: I'm not a technical person. Хочется сразу спросить, я что ты вообще делаешь тогда в IT компании? Иди вон в бургерную менеджери. Хотя, наверное, и там менеджер должен разбираться в качестве ингредиентов и уровне прожарки мяса. Но в IT это стало нормой в какой-то момент.

    В результате, что-бы понять хоть что-то из требований, программистам пришлось начать разговаривать с заказчиком напрямую. А поскольку общего языка у них нет, то разговор ведется «на пальцах»: программисты что-то показывают, заказчик кивает или качает головой. Двигаться маленькими шажками. Капитан Кук и людоеды. Это и есть agile.

    Это работает и все замечательно, аналитики стали не нужны. Ровно до тех пор, пока ваша предметная область тривиальна и легко описывается в общепонятных терминах. Т.е. пока Кук объясняет людоедам, что за вот эти вот бусы, он хотел бы получить вот тот вот остров и принцип мены понятен всем.
    Но вот Куку понадобилось объяснить людоедам какой нибудь бином Ньютона. И что?

    В переводе на современную ситуацию: это все очень замечательно, что вы нарисовали интернет банк как хотел заказчик. Сейчас и дети умеют работать с сайтами и перетаскивать что-то там мышкой и вполне могут понять и освоить сайт банка, и объяснить что им нравится, что нет. Но все это по сути лишь интерфейс.

    Другое дело — внутренняя логика банковской системы. Для того чтобы понять внутренние процессы, желательно иметь профильное финансовое образование. И программисту со стороны так просто туда не сунуться — он не понимает даже терминологию. А когда дойдет до математики, у него волосы встанут дыбом от того, как финансисты издеваются над классической вышкой, к которой он привык. Там где у него ряды, выводы и пределы — у финансистов будет арифметика и магические константы. Вот тут и случаются грабли.

    И в результате, мы на практике увидим, что в ядре системы у банка стоит какой нибудь мэйнфрейм который собственно и выполняет всю тяжелую логику. И написано там все на кобол или рпг в те времена, когда об agile еще не слыхивали.

    Желание перенести все это на новую платформу перманентно присутствует. Но попытки часто оканчиваются печально. С наскоку, без грамотного изучения, понимания, формализации и документирования требований, многократной выверки оных, ДО начала всякого кодирования, вряд ли возможно.

    Вот и стоят динозавры в банках, пыхтят и обсчитывают всякие опердни.

    Так что, не в методологии дело. Дело все в людях. И не надо так уж нападать на waterfall. В ряде случаев без него не куда.


  1. ncix
    15.09.2016 11:31
    +1

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

    Единственное что хотелось бы добавить, частенько докапывание до реальной проблемы заказчика приводит к тому, что вы ему ничем не можете помочь, т.к. решение лежит в другой плоскости. Был у меня личный пример, хотели ребята инструмент по генерации некоторых специфических документов, примерно бюджет был опеределен, решение в общих чертах все представляли. Начали копать, общаться с сотрудниками заказчика. Пришли к тому что решение их проблемы делается в их же корпоративной 1С за пару дней их же внутренним разработчиком. Этот разработчик сделал своим боссам удивленное лицо, мол «что ж вы ко мне сразу не пошли», а каких-то непонятных чуваков со стороны притащили. Ну посмеялись, поблагодарили, но денег не заработали нисколько. «Ну спасибо вам за экспертизу, если что вдруг, сразу к вам конечно, ага, всего доброго ...»


    1. ArkturTierry
      15.09.2016 15:52
      +1

      +1 огромный недостаток предложенного подхода «от реальной проблемы» в среде консультантов формулировался так: «толково, умно. Зря ты это -не продашь и будешь бедный».
      Я вот сейчас гадость скажу, но большинство реальных задач в реальном мире не нуждаются в IT-решениях от слова совсем. И то что сейчас пытаются всё решать с помощью этих самых IT -дань моде в изрядной мере. Нет, есть задачи, где IT объективно имеют значительные преимущества по своему эффекту. Но не всегда.
      На самом деле (sic!) вам не платят за решение проблем! Или надо включать стоимость исследований и business-консультаций в стоимость работ. И объяснять до подписания договора, что мы беремся за решение проблемы, базовая стоимость решения условно 1 дофигилион рублей. Решить можем организационно, а можем через IT. Окончательную цифру скажем после анализа, за анализ предоплату -в кассу. Но в России такая модель продаж нежизнеспособна, увы.
      Помните байку про «Удар молотком =1 фунт. За то что знал куда бить =999 фунтов». Это байка, в жизни за это не платят. В лучшем случае платят за то что ты «очень крутой и модный коуч». Или яблокофон. Или любой другой бренд.


      1. ncix
        15.09.2016 16:07
        +1

        В точку. Поэтому умные хитрые ребята придумали противоположный подход — это подход SAP. У вас проблемы потому что все ваши процессы изначально по-определению неправильные. Поэтому мы даже разбираться в них не будем, а сделаем вам сразу правильные. Уж кто как не мы, SAP, знаем как надо, верно?


  1. zolt85
    15.09.2016 19:33

    По поводу выяснения потребностей полностью согласен. Ко мне постоянно приходят менеджеры и задают один и тот же вопрос «Сколько стоит это сделать?», на что я задаю встречный вопрос «Зачем это заказчику?». Они уходят спрашивать, выяснять. Таким простым вопросом удалось повысить качество аналитики задач перед тем, как они пойдут в разработку.


  1. Luka_rus
    15.09.2016 19:33

    Легко сказать «дать заказчику то, что ему нужно, а не то, что он хочет».
    Вот нанял ты бригаду для ремонта квартиры, например. Расписал им, что где сделать, как что провести и т.п. Приходишь, а сделали они по другому. Возможно так раз по принципу — то что мне нужно. И позже на практике я и пойму, что да действительно так удобнее и лучше. Но на момент приемки я этим «что ему нужно» буду как бы не очень доволен.
    И получается вроде и дали заказчику то, что ему нужно, и заказчик нами не доволен.


    1. Glays
      16.09.2016 14:22

      Так задача объяснить заказчику «почему так», и желательно до конца срока реализации.
      Тут как раз короткие циклы разработки облегчают эту задачу, раньше будут заметны отклонения от представления заказчика, возможно раньше придёт отрицание/торг/принятие.


  1. tolkkv
    15.09.2016 21:55
    +1

    При каждом появлении статьи про Agile в вакууме на хабре, у меня всплывают следующие мысли — «зачем тут это, ведь есть же geektimes? Эти темы реально востребованы и интересны?». У меня у одного такие мысли?


    1. olegbunin
      16.09.2016 14:23

      А чем отличаются по тематике GeekTimes и Хабр?


      1. 5501
        13.01.2017 14:32

        Сложность восстановления и реанимации аккумов сильно преувеличена. На самом деле все проще в электрической части и сложнее (грязнее) в практической
        www.drive2.ru/l/8710551/ — вот мой опыт. Три восстановленных аккума. Одному 10 лет, второму 7, третий 4 года. Все работают и заводят машины в минус 27 — 30.


  1. AmadeyMinisol
    16.09.2016 10:12

    image
    Прочитав статья, вспомнил почему-то именно эту картинку.
    Спасибо за материал.


  1. vyatsek
    16.09.2016 13:57
    +2

    Мне нравится как продают аджайл ) Отсуствие менджеров птыаются скомпенсировать введением инструментария процессов.
    Ровно также было некоторе время назад с паттернами, когда отсутсвие навыка программирования пытаются скомпансировать паттернами и типовыми решениями.
    Сравнение аджаила и водопада — худший из аргументов, но тем не менее его постоянно приводят. В то время водопад мог работать потому, что процесс написания софта был более трудоемким, а интерфейсы и бизнес-логика была сильно беднее, по этому сильно проще узнать все заранее, чем потом переписывать. Сейчас не ТАК, сейчас проще попробовать написать и поиспользовать. Порой заказчик даже сам не знает что ему надо, он может просто озвучить проблему. В этом случае надо просто начать делать.

    «И увидели, что на самом деле, по какой-то причине мы делаем неважные задачи. И дальше как нам поступить?» это задача менджера/лида и т.д. это он решает, почему, да потому, что он просто умнее, он умеет слушать команду, он умеет слушать и понимать бизнес и в том числе на нем лежит эта отвественность.

    На счет «думать» улыбнуло)) думать надо всегда и везде.

    Из опыта заказчику вообще фиолетово на процессы и как оно там варится, ем нужен функционал. С заказчиком тоде надо уметь работать и он бывает не идеальный, сегодня надо, а завтра уже неважно. И демо в аджайле говорит лишь о том, что заказчик должен быть просто в курсе как и что делается. Если нет контакта с заказчиком, то нормальной работы не получится.

    По поводу RUP — процесс отлично формализует работу, т.е. гранулярно описывает разные активности при разработке софта, его надо просто
    понимать, применять не обязательно.

    Самую большую команду которую я видел работающую над одним кодом была человек в 6 наверное, ПМ, Оунер, тестер. Это 9 человек.
    Если такому количеству человек нужны какие-то процессы со стороны, то надо просто нанять профи.