Ведущие консультанты обмениваются информацией о свойствах проекта, а не о соблюдаемых процедурах. Они спрашивают о состоянии проекта: "Имеется ли формулировка задачи и план проекта? Часто ли они добиваются нужного результата? Находятся ли спонсор и различные опытные пользователи в непосредственном контакте с группой?"
Следовательно, отклоняясь от обычного способа описания методологии, имеет смысл спросить группы Crystal Clear об ориентировочных ключевых свойствах проекта. "Кристально чистое выполнение" становится достижением характеристик, а не следованием процедурам. Есть две причины перехода от процедур к характеристикам: - Процедуры могут не генерировать характеристики. Характеристики более важны.
- Другие процедуры, отличные от выбранных, могут генерировать характеристики для вашей конкретной группы.
Семейство Crystal сосредоточено на трех характеристиках – постоянная выработка, хорошая коммуникация и отражающее усовершенствование, так как они должны присутствовать во всех проектах. Crystal Clear использует преимущества небольшого размера и расстояния между группами, чтобы усилить хорошую коммуникацию до более эффективной осмотической коммуникации. Опытные разработчики заметят, что, эа исключением этого изменения, все описанные здесь характеристики применимы к каждому проекту, а не только к проектам с маленькими группами. Crystal Clear описывается здесь как набор характеристик. Большинству описаний методологий недостает важного показателя, отделяющего успешную группу от неуспешной. Группа Crystal Clearопределяет ее состояние по настроению группы и характеру коммуникации, а также по степени продуктивности. Присваивание названий характеристикам обеспечивает группу слоганами для определения ее ситуации: "В течение некоторого времени мы не выполняли отражающее усовершенствование", "Можем ли мы получить более легкий доступ к опытным пользователям?" Сами названия характеристик помогают людям выявлять и обсуждать методы урегулирования текущей ситуации. Характеристика 1: Постоянная выработка Самая важная характеристика любого проекта, большого или маленького, гибкого или нет, - это производство работающего, проверенного кода для реальных пользователей каждые несколько месяцев. Преимуществ от этого так много, что удивительно, почему не каждая группа выполняет это: - Спонсоры получают ценные отзывы о степени прогресса группы.
- Пользователи получают возможность выяснить, соответствовал ли их исходный запрос тому, что им в действительности нужно, и включить свои находки в разработку посредством обратной связи.
- Разработчики сохраняют сосредоточенность, преодолевая тупики нерешительности.
- Группа берется за устранение недостатков в своих процессах разработки и развертывания, и ее моральный дух повышается благодаря достижениям.
Все эти преимущества происходят из одной характеристики - постоянной выработки. Надежность обеспечивает период не больше 4 месяцев, оптимальный срок – два месяца. Группы, выполняющие развертывание в сети, могут предоставлять результаты еженедельно. - Выпускали ли вы работающий, проверенный и пригодный для использования код для вашего круга пользователей как минимум дважды за последние полгода?
Но что означает выработка? Иногда это означает, что программное обеспечение доставляется всей группе пользователей в конце каждой итерации. Это может быть целесообразно для развернутого в интернете программного обеспечения, или если группа пользователей невелика. Когда пользователи не могут часто принимать обновления программного обеспечения, группа оказывается в затруднительном положении. Если они выпускают систему довольно часто , это будет раздражать коллектив пользователей. Если они выпускают систему редко, то могут не заметить реальную проблему с интеграцией и развертыванием. И с этой проблемой они могут столкнуться, когда уже будет поздно – в момент развертывания системы. Лучшая стратегия в данной ситуации – найти дружественного пользователя, который не против испытать программное обеспечение в порядке вежливости или из любопытства. Разверните программу на одной рабочей станции. Это позволит группе практиковаться в развертывании и получать полезные отзывы как минимум от одного пользователя. Если вы не можете найти дружественного пользователя, которому можно предоставить систему, как минимум выполните полную интеграцию и тестирование, как вы и собирались. При этом вероятность обнаружения ошибок остается только при развертывании. Если группа не может поставлять систему всему контингенту пользователей каждые несколько месяцев, отзывы пользователей становятся еще более важными. Группа должна устроить посещение группы пользователями и увидеть программное обеспечение в действии, или как минимум один пользователь должен установить и испытать программу. Отсутствие отзывов от пользователей запросто увязывается с итоговым провалом проекта, когда пользователи под конец слишком поздно обнаруживают, что программное обеспечение не удовлетворяет их требованиям. Характеристика 2: Отражающее усовершенствование Проект может изменить свое состояние от полного провала до успешного, если группа объединится, составит список того, что работает и что не работает, рассмотрит, что могло бы работать лучше, и выполнит эти изменения в следующей итерации. Иными словами, если будет размышлять и улучшать. Группа не должна тратить большое количество времени на выполнение этой работы – одного часа каждую неделю или месяц будет достаточно. Сам факт выделения времени из суматохи ежедневной разработки на обдумывание того, что могло бы работать лучше, уже полезно. - Собирались ли вы как минимум один раз за последние три месяца на полчаса, час или полдня, чтобы обменяться мнениями, поразмышлять, обсудить привычный стиль работы вашей группы и выяснить, что повышает и что снижает вашу производительность, и что вы могли бы улучшить?
Характеристика 3: Осмотическая коммуникация Осмотическая коммуникация означает, что информация втекает в фоновую слышимость участников группы, чтобы они улавливали существенную информацию посредством постепенного осознания. Обычно для этого их рассаживают в одной комнате. Когда один человек задает вопрос, другие люди в комнате могут включиться или выключиться, участвуя в обсуждении или продолжая выполнять свою работу. Некоторые рассказывают о своем опыте такой коммуникации аналогично тому, как сделал этот человек: - Четыре человека у нас выполняли программирование в парах. Начальник вошел и задал вопрос моему партнеру. Я начал отвечать на него, но неправильно назвал модуль. Нэнси, выполняющая программирование с Нейлом, поправила меня, при этом Нейл даже не заметил ни заданного вопроса, ни что она говорила.
Когда имеет место осмотическая коммуникация, вопросы и ответы протекают естественным образом и с минимальным беспорядком в группе. Осмотическая коммуникация и постоянная выработка способствуют такой быстрой и обильной обратной связи, что проект может функционировать при минимальном использовании других структур. Вот почему эти две характеристики стоят первыми в списке. - Достигает ли ваш вопрос за 30 секунд или меньше ушей того человека, который мог бы знать ответ? Слышите ли вы нечаянно что-либо существенное в разговорах других членов группы как минимум каждые несколько дней?
Осмотическая коммуникация, существующая за счет фонового слушания и коммуникации вдоль линии видимости, в действительности работает только в маленьких группах. Большая группа устанавливает осмотическую коммуникацию в подгруппах и тесную коммуникацию между подгруппами. Осмотическая коммуникация делает расходы на коммуникацию низкими, а скорость обратной связи - высокой, чтобы ошибки исправлялись очень быстро и знания распространялись быстро. Люди узнают о приоритетах проекта и о том, кто какой информацией владеет. Они усваивают новые приемы программирования, проектирования, тестирования и обращения с инструментами. Они отлавливают и исправляют мелкие ошибки до того, как те превратятся в большие. Если вы организуете оперативную рабочую зону, обязательно устройте другое место, в котором люди смогут расслабляться и отправлять личную электронную почту. Это позволит людям сосредоточиться, когда они входят в общую зону, и расслабиться при выходе из нее. Такую конфигурацию называют конфигурацией "пещеры и общая". Осмотическая коммуникация имеет свои опасности, чаще всего это шум и поток вопросов к самому опытному разработчику группы. Люди обычно саморегулируются, требуют уменьшить количество пустой болтовни или лучше ценить время на размышления. Даже самая успешная характеристика непригодна при некоторых обстоятельствах. Осмотическая коммуникация – не исключение. Если ведущий проектировщик оказывается перегружен, и его очень часто прерывают, что делает прогресс невозможным, то ему нужно место, где его вообще не будут прерывать, и общение с группой будет ограничено. Многие ведущие проектировщики используют часы с 18:00 до 02:00 как свой период молчания, но для всех участников лучше, если приемлемый период молчания будет установлен в пределах обычного рабочего времени. Стратегия периода молчания подробно описана. Характеристика 4: Личная безопасность Личная безопасность – это возможность говорить без страха наказания, когда что-то беспокоит вас. Это предполагает возможность сказать руководителю, что график нереалистичен, коллеге, что его решение требует доработки, или даже сообщить коллеге, что ему следует чаще принимать душ. Личная безопасность важна, так как при ее помощи группа может выявить и устранить свои слабые стороны. Без нее люди не станут высказываться откровенно, и слабые стороны продолжат наносить ущерб группе. Личная безопасность – это первый шаг на пути к доверию. Доверие, предусматривающее предоставление кому-либо полномочий над вами, с сопутствующим риском личного ущерба, - это степень, до которой один человек может передать другому полномочия. Некоторые люди доверяют другим по умолчанию, и отказываются от доверия только после нанесения им ущерба. Другие не склонны доверять кому-либо априори, и, прежде чем доверять, ждут доказательств того, что они не пострадают. Присутствие доверия, несомненно, связано с производительностью группы. Когда человек видит, что другие не подведут или не нанесут ему ущерба на основе обнаруженной им информации, он более откровенно будет сообщать информацию, что ускорит выполнение проекта. Поэтому необходимо приобрести такую важную характеристику, как личная безопасность. - Можете ли вы сказать своему руководителю, что ошиблись в оценке более чем на 50%, или, на дружеской ноте? что вы только что получили заманчивое предложение работы? Можете ли вы не согласиться с его расписанием совещания группы? Могут ли люди закончить долгие споры о замыслах друг друга
Доверие увеличивается при постоянной выработке. Когда программное обеспечение выпускается, люди понимают, кто делал свою часть работы и кто отлынивал, кто говорил правду, кто кому вредил или кого защищал, и кому, несмотря на его несерьезное поведение, в какой степени можно доверять. При наличии личной безопасности они говорят искренне во время совещаний по отражающему усовершенствованию. Личная безопасность неразрывно связана с дружелюбием, готовностью добровольно слушать. Проект страдает, когда любой член группы по своей воле перестает слушать или теряет склонность передавать потенциально важную информацию. В дополнение к личным навыкам, продвижение проекта вперед основано только на скорости движения информации через людей. Не путайте личную безопасность с вежливостью. В некоторых группах личная безопасность может быть видимостью, а на самом деле это может быть всего лишь вежливость, скрывающая разногласия. Прикрывая свои разногласия вежливостью и примирением, члены группы не выявляют и не устраняют существующих ошибок. Характеристика 5: Сосредоточенность Сосредоточенность – это знание того, над чем нужно работать в первую очередь, и наличие времени и душевного спокойствия для выполнения этой работы. Знание того, над чем работать, основывается на обмене информацией о направлении и приоритетах целей: обычно это сообщает куратор проекта. Время и душевное спокойствие происходят из среды, в которой людей не отвлекают от их задач для работы над другими несовместимыми вещами. - Все ли люди знают, над какими двумя самыми важными задачами они должны работать? Гарантировано ли им как минимум два дня подряд и два непрерывных часа ежедневно для работы над ними?
Одного знания о том, что важно, недостаточно. Разработчики постоянно сообщают, что совещания, запросы о предоставлении демоверсий и требования устранить ошибки времени выполнения мешают им закончить свою работу. Обычно человеку требуется 20 минут времени и значительные умственные усилия, чтобы восстановить свой ход мыслей после одного из таких прерываний. Когда прерывания случаются три или четыре раза в день, человек нередко бездействует между прерываниями, полагая, что нет смысла глубоко погружаться в размышления, если снова придется отвлечься в середине хода размышлений. Люди, которых заставляют работать над двумя или тремя проектами одновременно, не могут успевать ни по одному из проектов. Человеку необходимо полтора часа времени на восстановление хода мыслей после работы над другим проектом. Человек может успешно работать над полутора проектами. К тому моменту, когда добавляется третий проект, разработчик начинает работать неэффективно над всеми тремя проектами. Неопытные руководители, недооценивающие затраты на переключение между проектами, заставляют разработчиков работать над 3-5 проектами одновременно. Одного разработчика закрепили за 17 одновременными проектами! Ему едва хватало времени на представление отчетов на различных совещаниях о продолжающемся отсутствии прогресса на всех участках. Характеристика 6: Легкий доступ к опытным пользователям Непрерывный доступ к опытным пользователям обеспечивает группу: - местом для развертывания и тестирования часто выпускаемых продуктов,
- быстрым поступлением отзывов о качестве готовых продуктов,
- быстрым поступлением отзывов о проектных решениях, и
- актуальными требованиями.
Исследователи Кейл и Кармил опубликовали результаты, показывающие, насколько важно иметь прямые связи с опытными пользователями. Опросив руководителей, работавших с и без легкого доступа к реальным пользователям, они пишут: - "...в 11 из 14 парных случаев более успешные проекты имели большее число связей, чем менее успешные проекты... Это различие статистически значимо в двустороннем критерии Стьюдента(p<0.01)".
Это исследование привело их к конкретной рекомендации: "Меньше полагайтесь на косвенные связи". Иными словами, получайте реальный доступ к реальным пользователям. - Проходит ли в среднем менее 3 дней с момента, когда вы задаете вопрос об использовании системы, до того момента, когда опытный пользователь отвечает на вопрос? Можете ли вы получить ответ за несколько часов?
Сколько должно быть пользователей, и сколько времени нужно? Даже один час доступа к действительно опытному пользователю в неделю очень ценен. Чем больше часов каждую неделю опытный пользователь доступен для группы, тем больше пользы можно извлечь из этого. Но первый час наиболее значим. Также важна длительность периода получения ответа на вопрос. Если ответ на вопрос не будет получен в течение последующих 3 дней, программисты, скорее всего, используют для кода свои наиболее вероятные текущие предположения, и могут забыть перепроверить свое решение при следующем контакте с пользователем. Поэтому они должны иметь телефонную связь с пользователем в течение недели. Отсутствие обратной связи с реальными пользователями приводит к появлению проблем. Даже группы, применяющие все остальные практики гибкой методологии разработки, сталкиваются с катастрофическими проблемами в конце проекта, если они пренебрегают такой обратной связью в течение проекта. Характеристика 7: Техническая рабочая среда с автоматическими тестами, управлением конфигурацией и частой интеграцией Рассмотрим все вышеупомянутые элементы. Автоматическое тестирование. Группы успешно производят продукты при использовании ручных тестов, поэтому нельзя рассматривать это как критический фактор успеха. Но перешедшие на автоматические тесты программисты уже не хотят работать без них. Автоматические тесты повышают качество жизни. В течение недели они корректируют участки кода, зная, что они могут быстро проверить, не нарушено ли что-то попутно из-за невнимательности. Когда программисты пишут работающий код в пятницу, они уходят домой, зная, что в понедельник они смогут выяснить, не был ли код поврежден за выходные – они просто повторно выполнят тестирование в понедельник утром. Тесты дают им свободу маневров в течение дня и спокойствие ночью. Управление конфигурацией. Система управления конфигурацией позволяет людям асинхронно регистрировать работу, отменять изменения, завершать конкретную конфигурацию для выпуска, и возвращаться к той конфигурации позднее, когда возникнет проблема. Она позволяет разработчикам разрабатывать свой код по отдельности и вместе. Группы неизменно называют ее самым важным инструментом из не относящихся к компилятору. Частая интеграция. Многие группы выполняют интеграцию системы несколько раз в день. Если они не могут справиться с этим, они выполняют ее ежедневно или, в худшем случае, раз в два дня. Чем чаще они выполняют интеграцию, тем быстрее они обнаружат ошибки, тем меньше дополнительных ошибок накопится, тем более свежими будут их мысли, и меньшие участки кода нужно будет проверять на наличие расхождений. Лучшие группы объединяют все три элемента в непрерывную интеграцию и тестирование. Они быстро отлавливают ошибки уровня интеграции. - Можете ли вы полностью выполнить испытания системы, не присутствуя физически на работе?
- Все ли ваши разработчики регистрируют свой код в системе управления конфигурациями?
- Вводят ли они полезные замечания о коде при его регистрации?
- Выполняется ли интеграция системы как минимум дважды в неделю?
Свидетельство: Сотрудничество сквозь организационные границы Имеется некий побочный эффект от внимания личной безопасности, дружественным отношениям с группой и легкому доступу к опытным пользователям – это то, что включение других заинтересованных лиц в проект становится обычным делом. Гери Дербиер, работающий с французской почтовой службой (La Poste), чтобы создать программное обеспечение для запуска нового оборудования для обработки всей почты, входящих и исходящих из северной Франции, рассказал о своем использовании Crystal. Он, вместе с другими 25людьми, работал над проектом в категории Crystal Yellow. Но он знал принципы семейства методологий Crystal, особенно принцип "растягивания до соответствия", и поэтому решил распространить CrystalClear по возможности на больший масштаб. - При рассмотрении связей проекта с группой интеграционного тестирования, расположенной на удалении в 30 км, и с деловыми экспертами и с опытными пользователями, были заданы такие вопросы: "Как часто тот человек посещал группу? Что он думал об этом? Как его руководитель воспринимал то, что он так часто приезжал?" Ответы Гери для обеих внешних групп были такими: "Один день в неделю; спокойно; его радовало столь раннее участие в работе".
Гери ввел в свой проект дополнительную безопасность сотрудничества сквозь организационные границы. Его проект был успешно связан с заказчиком и средами интеграции с коллегой на каждом конце. Контракт La Poste оценивался и оплачивался в соответствии с результатами комплексных испытаний каждые несколько месяцев (постоянная выработка). Руководство La Poste получало выпущенное программное обеспечение с возрастающими приращениями и платило в соответствии с этим. Начальники Гери, не имевшие предшествующего опыта пошагового выпуска, были довольны этим, так как они видели, что регулярный выпуск превращался в регулярные выплаты. Гери имел опорные элементы на всех сторонах. Сотрудничество сквозь организационные границы – это не заданный результат любого проекта. Оно возникает в результате работы с искренним дружелюбием и честностью внутри и вне группы. Его трудно достигнуть, если сама группа не имеет личной безопасности и имеет меньшую степень частоты выпуска. Наличие сотрудничества сквозь организационные границы – это частичное доказательство того, что первые семь характеристик безопасности достигнуты. Осмысление характеристик Не существует предписанных процедур, гарантирующих, что проект всякий раз окажется в безопасной зоне. Также, за исключением пошаговой разработки, нельзя обнаружить проект с любым конкретным набором имеющихся правил. Вот почему Crystal Clear создан на основе критических характеристик, а не на основе подробного описания процедур. Группа Crystal работает над внедрением семи характеристик в проект, используя любые групповые соглашения, методы и стандарты, уместные в их ситуации. Соглашения могут меняться в зависимости от проекта и от месяца. Новые методы изобретаются для каждой новой технологии (и обычно перестают быть популярными несколько лет спустя). Эти семь характеристик, с другой стороны, применялись в хороших проектах в течение десятилетий. Цель – по возможности, не вторгаться в обычную работу людей над проектом и обеспечить максимально возможные вариации между различными группами, и в то же время ввести эти различные проекты в безопасную зону. Чтобы сделать возможными вариации, нужно убрать ограничения. Снятие ограничений означает нахождение более широких механизмов, обеспечивающих сетку безопасности. Выбранные механизмы таковы: - Люди по характеру хороши в осматривании окружающей среды и общении.
- Они проявляют инициативу, когда обеспечены информацией.
- Они лучше работают в среде, защищенной в отношении личной эмоциональной безопасности, особенно в той, где отсутствуют нападки на отдельных людей.
- Они лучше всего работают, если могут удовлетворить свою потребность в участии, достижении и гордости за свою работу.
Сетка безопасности Crystal Clear основана на этих элементах. Личная безопасность дает людям личную смелость делиться всем, что они обнаружили. Осмотическая коммуникация дает им отличную возможность узнавать важную информацию друг от друга и делает это при низких затратах на коммуникацию. Отражающее усовершенствование позволяет им использовать обратную связь в рабочем процессе. Легкий доступ к опытным пользователям дает им возможность быстро узнавать существенную информацию от пользователей. Частый выпуск порождает отзывы о требованиях к системе и о процессе разработки. Среда технической разработки включает: - Автоматические тесты, управление конфигурациями и частая интеграция, что позволяет людям безопасно вносить изменения в систему. Синхронизация множества умов, находящихся в движении в одно и то же время, и быстрое получение отзывов о промежуточных состояниях системы. Сосредоточенность позволяет группе эффективно тратить свои силы на самые важные задачи.
Рон Джеффрис когда-то описал Crystal Clear так: "Объедините нескольких разработчиков в мире, любви и гармонии, поставляйте код раз в два месяца - и надежное программное обеспечение появится". Он был близок к истине.
Newer news items:
Older news items:
|