Agile Guru

секреты мастерства и постоянного совершенства

  • Increase font size
  • Default font size
  • Decrease font size

xUnit Test Patterns

Print PDF

В рамках Design Pattern Study Group началось обсуждение книги xUnit Test PatternsRefactoring Test CodeGerard Meszaros.

План обсуждения:

  • Плохой код теста (test smells)
  • Рефакторинг тестов (test refactoring)
  • Паттерны тестов (test patterns)

Mindmap: смотреть

Аудио: скачать

Ссылки:

 

Шаблон #1. Балдеющие от адреналина и зомбированные шаблонами

Print PDF

Давно меня не было в эфире. Все как-то в работе да в работе. Но тут случилось беспрецедентное событие. Я нашел отличную книгу. Не со своей помощью, конечно, с помощью одного agile-guru. Книга называется Балдеющие от адреналина и зомбированные шаблонами. Автор книги Том Демарко , Тимости Листер и другие соавторы. Книга включает в себя 86 паттернов командного поведения. В русском переводе издана в издательстве Символ.

Аудио: скачать

Том Демарко и Тимоти Листер известны как авторы книги Человеческий фактор. Книга была издана еще в далеком 87 году, но как ни странно до сих пор имеет место быть . Мой хороший знакомый менеджер IT проектов, недавно начал ее читать и был просто поражен содержанием. А когда я сказал что книга 87 года изадния…. Ну вы понимаете что было дальше .

Вернемся к балдеющим от адреналина. Авторы книги говорят что у ней собран опыт 150 лет командных разработок. Отличные отзывы дали такие монстры IT мира как Алистер Коберн, Эд Йордон и многие другие.

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

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


А теперь собственно первый паттерн. Кстати интересное замечание прочитал о слове паттерн.

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

Итак. Первый паттерн.

Звучит он просто «Балдеющие от адреналина!»

Буквально это означает – «Перманентный факап!» Определяется тем, что абсолютно все зачади в проекте мега-срочные. Не срочных проблем просто нет. Если появляется проблема, то она имеет два пути:

1 – перводится в статус «Мега срочная» и остается жить

2 – ставится статус «не срочная» и умирает до следующего случайного обнаружения

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

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

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

Лирическое отступление. Я когда прочитал этот отрывок, я был просто в шоке, я увидел себя в нем. Еще каких то 8-9 месяцев назад, я вел себя именно так. Потом, по счастливому случаю, я нашел http://study-group.net, познакомился с умными, профессиональными людьми. Узнал что такое Agile, начал читать книги, занимался одно время с ребятами. И стал понимать, что мое поведение – как то не очень накладывается на то что называется «лидер», «команда», «профессионал». Стал читать еще больше. Сейчас я могу смело сказать что в профессиональном плане я сильно изменился, и уже стараюсь избавится от вредных профессиональных привычек. Но дается это тяжело. Кстати, подкасты это один из самых действенных способов поменять свое мышление. Почему? Потому что записывая подкаст, ты тщательно прорабатываешь материал, осознаешь его еще больше и он откладывается у тебя в подсознании. Получается само-программирование. Да и к тому же, твои коллеги всегда могут тебя отправить слушать твой же подкаст, если ты ведешь себя не так как говоришь.

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

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

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

Опять отступление. В нашем проекте мне повезло тем, что я начал сам применять попытки изменится и у нас появился руководитель. Он начал менять проект, процесс и честно говоря, эти изменения пошли на пользу как проекту так и людям.

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

Оригинал подкаста можно послушать здесь http://personal-agile.rpod.ru/134648.html
Оригинал статьи: http://shogin-michael.blogspot.com/2009/12/blog-post.html

 

Адреналиновые наркоманы. Командные паттерны (3/17)

Print PDF

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


I Gave You a Chisel. Why Aren't You Michelangelo?
(Я дал тебе резец - почему ты не Микеланджело? , 15)

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

Аудио запись: ссылка

 

Face Time (Очное общение, 14)

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

Аудио запись: ссылка (1 час)

 

No bench (Без скамья запасных, 13)

Всегда есть простое решение сложным проблемам во время деадлайна. Но почему-то из-за его простоты мы забываем про него. Сегодняшние обсуждения нас привели к очень сильным и интересным открытиям. Заодно обсудили, как Bus Factor влияет на проект. И попытались оценить отдачу от анти-паттерна "No Bench". А в завершение обсудили как паттерн "парное программирование" может быть альтернативной выявленному антипаттерну "no bench".

Аудио запись: ссылка (1 час)

 

System Development Lemming Cycle (Лемминговый цикл разработки систем, 12)

Стоит ли применять средства конвеерного производства? Не роем ли мы дружно себе яму - все и многое другое в нашем обсуждение про жизнь леммингов.

Аудио запись: ссылка

 

Lease Your Soul (Сдай душу в аренду, 11)

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

Аудио запись: ссылка

Мы рады, если вы оставите свои комментарии к подкастам, а ещё больше будем рады, если вы приобретёте книгу (например, books.ru) и подключитесь к нашим обсуждениям. Наш публичный сайп-чат доступен 24 часа в сутки по ссылке.

Обсуждения основываются на книге "Adrenaline Junkies and Template Zombies: Understanding Patterns of Project Behavior" (Балдеющие от адреналина и зомбированные шаблонами) от Тома ДеМарко. Он же автор бесселера "Том Демарко, Тимоти Листер. Человеческий фактор: успешные проекты и команды"

 

Agile ценность #3: Рабочий продукт

Print PDF

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

Манифест Agile:
Individuals and interactions over processes and tools.
Working software over comprehensive documentation.
Customer collaboration over contract negotiation.
• Responding to change over following a plan.

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

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

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

Что предлагает данная ценность. Она предлагает аджайлисту руководствоваться адаптивным поведением и каждый раз соотносить ценность контрактного обязательства с вновь открывшимися обстоятельствами. Да вчера мы сказали, что будем использовать технологию Н, а сегодня видим, что лучше использовать М. Стоит ли придерживаться старого обязательства? Вопрос сложный. Правда чтобы на него ответить нужны дополнительные критерии. Чтобы мы смогли выбрать, что же нам подходит. А такими критериями являются первое и второе убеждения. То же относится и ко мне любимому. Стоит ли мне придерживаться моих принципов в споре, или стоит дать слабину и посмотреть на ситуацию с точки зрения достижения результата? Такой подход интересней, он позволяет учиться... Вернёмся к классической интерпретации.

Очень сложное убеждение. Как уберечь себя от слабости пользоваться подписанным контрактом для прикрытия одно места в случае провала. А что говорить, когда заказчик хочет "fix-price" контракт. Множество возникает вопросов как применить данное убеждение. Ошибка в том, что мы его пытаемся рассмотреть отдельно от других убеждений. Сила манифеста в убеждениях, которые гармоничном дополнение друг друга и создают некое социальное пространство для взаимного творчества между заказчиком и исполнителем.

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

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

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

Вопросы для обсуждения:

  1. Как у вас происходит в команде?
  2. Часто ли клиент вспоминает контрактные обязательства и планы?
  3. Если фикс-прайс, что вы делаете, чтобы клиент начал вам доверять?
  4. Как вы понимаете, что клиент вам доверяет?


Думайте! Пробуйте! Меняйтесь!
Денис Миллер

 
  • «
  •  Start 
  •  Prev 
  •  1 
  •  2 
  •  3 
  •  4 
  •  5 
  •  6 
  •  Next 
  •  End 
  • »


Page 1 of 6