?

Log in

No account? Create an account
Связь новокодовских высокопродуктивных состояний и гибких методологий разработки ПО - Журнал Тигры
January 28th, 2008
12:28 am

[Link]

Previous Entry Share Next Entry
Связь новокодовских высокопродуктивных состояний и гибких методологий разработки ПО
Читаю я тут статейку "SCRUM Development Process" Кена Швабера.

И нашёл интересный мостик между Agile-методологиями и "состояниями высокой продуктивности" из Нового Кода НЛП (HPS - high performance states), также известными как потоковые состояния ("flow", Михай Чиксентмихайи). А также - нашёл не то чтобы само теоретическое обоснование, почему эти состояния такие продуктивные, но ссылку на него и знаю теперь, что оно существует.

Кристофер Лэнгтон, американский биолог и один из основателей Artificial Life - направления, занимающегося изучением систем, относящихся к жизни, её процессам, и эволюции - посредством имитационного моделирования, использующего компьютерные модели, robotics и биохимию.

В частности, он изобрёл такие формы искусственной жизни, как "муравей Лэнгтона" и "петля Лэнгтона". Это клеточные автоматы, как и игра "Жизнь" Конуэя.

Лэнгтон ввёл понятие "границы хаоса". Посредством компьютерного моделирования он выяснил, что поведение системы тем эффективнее, чем ближе её поведение к границе хаоса. В то же время как система, оперирующая в рамках большей предсказуемости (что неочевидно), так и система, свалившаяся в полный хаос (это как раз очевидно), демонстрируют меньшую эффективность.

Почему деятельность в рамках предсказуемости малоэффективна? Рассмотрим пример.

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

То же самое рассказывает нам Чиксентмихайи. См. график (взят из журнала kapterev, на замечательном тренинге по Новому Коду НЛП которого я как раз увидел этот график впервые):

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

В контексте методологий разработки картина тут такая. Тяжеловесные методологии, чётко специфицирующие процесс, - скучны. Для того, чтобы всё работало, приходится то тут, то там выполнять дополнительную работу, добавлять запас времени и других ресурсов: детальные планы, детальные требования, детальный дизайн системы, дорогой процесс изменений через change requests, фичи, реализованные "на всякий случай", время, затраченное на разработку сверхуниверсальных фреймворков... Организации, которые так работают, напоминают неповоротливых динозавров.

Бесконтрольная разработка без особой методологии страшна - то требования кардинально изменятся за две недели до срока сдачи проекта, то толпа багов вылезет откуда ни возьмись - и в конце концов проект становится легче закрыть, чем вытянуть. В это же состояние любят скатываться проекты, работающие по тяжеловесным методологиям, если где-то хотят сэкономить или "срезать угол". Скучно, скучно, а потом раз! - и страшно.

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

Долгосрочные же планы представляются в виде приоритетизированных списков пользовательских историй (user stories). Заранее предполагается, что этот план от итерации к итерации меняется - добавляются новые истории, какие-то исчезают или меняются, меняются приоритеты - подстраиваемся к изменившейся ситуации во внешней среде. Во время итерации же обычно цель стабильна, что даёт возможность мощного продвижения к ней.

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

Соответственно, цель менеджера в Agile - помогать команде поддерживать себя в высокопродуктивном состоянии, в потоке.

Характерно, что итерационный процесс разработки в SCRUM называется Game (игра), в отличие от жёстко заданных начала и закрытия проекта (pre-game и post-game). Название напрямую перекликается с новокодовскими играми, создающими высокопродуктивные состояния, и ключевые компоненты совпадают - спокойное отношение к ошибкам, принятие неопределённости etc.

(21 comments | Leave a comment)

Comments
 
[User Picture]
From:vsempesdets
Date:January 27th, 2008 10:41 pm (UTC)
(Link)
примерно в тех же терминах. только намного менее наукообразно и намного более доступно описывается методология "итеративного программирования"
[User Picture]
From:t_gra
Date:January 27th, 2008 11:05 pm (UTC)
(Link)
Между "просто" итеративной разработкой, и различными Agile методологиями есть существенная разница, если интересно - изложу.

Инсайт здесь в том, что условия, при которых возникает специфическое для Agile высокопродуктивное поведение команды, и условия при которых отдельного человека прёт и он что-то делает легко и играючи - по структуре очень схожи.
[User Picture]
From:vsempesdets
Date:January 27th, 2008 11:16 pm (UTC)
(Link)
хм... изложи конечно же.
[User Picture]
From:t_gra
Date:January 28th, 2008 08:37 pm (UTC)
(Link)
Будет отдельным постом.
[User Picture]
From:vsempesdets
Date:January 28th, 2008 11:03 pm (UTC)
(Link)
ок)
From:alesk
Date:January 28th, 2008 04:26 pm (UTC)
(Link)
Да, было бы очень интересно почитать. Если можно.
[User Picture]
From:fenikso
Date:January 28th, 2008 10:19 am (UTC)
(Link)
Есть неплохая free книжка Scrum from the trenches
[User Picture]
From:t_gra
Date:January 28th, 2008 07:54 pm (UTC)
(Link)
Эта?
http://www.crisp.se/henrik.kniberg/ScrumAndXpFromTheTrenches.pdf

Спасибо за наводку. А вообще у меня книжек всяких навалом, главное, выбрать хорошие :)
[User Picture]
From:fenikso
Date:January 28th, 2008 08:02 pm (UTC)
(Link)
Да, там практические скиллы :) Полезно
From:vt_qveant
Date:January 28th, 2008 10:39 am (UTC)
(Link)
В. В. Козлов "Психотехнологии измененных состояний сознания" отмечает связное дыхание и рутинность операций как ключевой фактор перехода в потоковые состояния. Это я к тому, что параллели здесь нужно проводить осторожно - можно ли вообще говорить о коллективной физиологии группы?
[User Picture]
From:fenikso
Date:January 28th, 2008 08:03 pm (UTC)
(Link)
Предполагаю, что автор поста имеет в виду другое состояние потока, когда эффективность работы значительно выше и работаешь "в контексте" проблемы. Рутинность операций имхо, это как раз противоположность такому состоянию.
From:vt_qveant
Date:January 28th, 2008 10:39 pm (UTC)
(Link)
Напротив, это то самое состояние. Когда речь идет о рутинных операциях, наиболее существенным фактором при их выполнении является не повторяемость, а физиологическая цена осуществления деятельности, причем у лиц, выполняющих такие операции в обычном состоянии сознания, физиологическая цена высока и может привести к истощению, сбою и другим негативным последствиям. В потоке же человек расходует значительно меньше энергии, более концентрирован и лучше справляется с задачей. Есть еще фактор, который перевешивает "рутинность" - это вызов, стресс, может быть даже угроза.
[User Picture]
From:t_gra
Date:January 28th, 2008 08:14 pm (UTC)
(Link)
К сожалению, у меня нет этой книги, нет ли в электронном виде?

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

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

В разных конторах я видел три варианта физиологии, характерной для большинства сотрудников:
- ленивая расслабленность, сон на ходу, замедленная речь, полулежание на стуле перед монитором - скучно;
- "белочки, подключённые к 220", дёрганая активость в сочетании с измождёнными лицами, ускоренная речь, зажатость - страшно;
- более-менее расслабленные позы, в то же время в тонусе, спокойная речь, иногда с нотками энтузиазма - это, как по мне, ближе к потоку.
From:vt_qveant
Date:January 28th, 2008 10:47 pm (UTC)
(Link)
>Интересно, что автор подразумевает под связным дыханием, и что под рутинностью операций.

Под связным дыханием - собственно связное дыхание (вдохи и выдохи без пауз между ними). Книга в основном посвящена дыхательным психотехникам и их применению в психотерапии. Про рутинность написал выше. В электронном виде, к сожалению, нет.

>В разных конторах
А это как-то коррелирует с применяемыми подходами к разработке и управлению? Или это в основном зависит от личности управленца?

Еще интересно, что происходит с командой по завершении проекта - она истощена, полна сил, перестает существовать?
[User Picture]
From:freevad
Date:January 28th, 2008 03:29 pm (UTC)
(Link)
Интересно... Спасибо!
[User Picture]
From:t_gra
Date:January 28th, 2008 09:25 pm (UTC)
(Link)
Рад, что Вам понравилось.
[User Picture]
From:zibsun
Date:January 28th, 2008 04:53 pm (UTC)
(Link)
Супер! Огромное спасибо, очень интересные идеи и мысли!
[User Picture]
From:t_gra
Date:January 28th, 2008 09:56 pm (UTC)
(Link)
Спасибо и тебе. Твой отзыв как эксперта по Agile для меня очень важен :) Если возникнут какие-то ассоциации, развитие этих мыслей - интересно было бы услышать.
[User Picture]
From:zibsun
Date:January 29th, 2008 03:33 pm (UTC)
(Link)
Написал еще и в ru_agile, сюда копирую, убрав нападки на НЛП :-)

Меня в посте очень зацепила сама идея о том, что производительность очень высока на "границе хаоса". Я сам это много раз замечал. Да я в общем и из Люксофта ушел потому, что стало слишком скучно. Теперь я сам себе кукловод. В результате я стал в разы более продуктивен!

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

Улавливаешь паттерн? Это же черт знает как круто и важно тоже очень, это еще один рецепт в копилку роста производительности!
From:(Anonymous)
Date:September 4th, 2008 01:16 pm (UTC)

Клеточные автоматы

(Link)
На сайте

http://www.geocities.com/ca_hs_ref/

вы найдете информацию по монографии, которая может быть полезна, а именно:

Аладьев В.З., Бойко В.К., Ровба Е.А. Классические клеточные автоматы: Теория и приложения.- Гродно: Гродненский государственный университет, 2008, 485 с.

На следующем сайте вы сможете найти расширенную библиографию по клеточным автоматам:

http://www.geocities.com/vz_aladjev
[User Picture]
From:t_gra
Date:September 4th, 2008 06:54 pm (UTC)

Re: Клеточные автоматы

(Link)
Спасибо :)
http://freelance-start.com Powered by LiveJournal.com