Vit's SE Experiments.
Внимание! На все эксперименты и их описание
действует Copyright ©.
Любое использование или копирование
только после разрешения, которое можно получить,
послав мейл по адресу
vit_r@geocities.com
Subject:Experiments.
(Как правило единственным ограничением является обязательство
предоставления отчета о результатах эксперимента и ссылка при
цитировании.
"Гусары денег не берут.")
Эксперимент номер раз. (Проект Errorlog.)
Для проведения эксперемента необходимы
огромадные финансовые затраты. А именно надо приобрести
(или сделать)
- Большую доску из пробки (pin board)
- Много-много кнопок разных цветов (pins)
- Несколько метров тесьмы, хорошо видной на доске.
- Карточки (лучше из тонкого картона) размером не больше,чем две трети А5
(перфокарты подойдут)
- По одной фотографии на каждого разработчика.
Максимальный размер - 3 на 4.
Фотографию надо будет прикалывать на доску кнопкой. Естественно лучше
сделать так, чтобы кнопку не приходилось втыкать посреди лба.
Дальнейшая подготовка состоит в следующем:
- Доска делится тесьмой на вертикальные зоны. Вверху для каждой зоны
прикрепляется заголовок. Слева-направо идут следующие зоны:
- Новые задания.
- Кодирование.
- Проверка.
- Тестирование.
- Использование.
- Доска делится тесьмой на горизонтальные зоны. Сверху вниз идут:
- Заголовки вертикальных зон.
- Зоны приоритетов.
Высота зоны делается с таким расчетом,
чтобы в каждой образованой вертикальной и горизонтальной
полосой клетке можно было прикрепить без перекрытия
7-8 карточек. (Может быть имеет смысл делать размер клетки
так, чтобы в каждую помещалось не больше карточек, чем число
разработчиков в группе.)
- Приоритет 0 (Естественно высший) "Срочно необходимые".
- Приоритет 1. "Ключевые"
- Приоритет 2. "Важные"
- Приоритет 3. "Дополнительные"
- Приоритет 4. "Желательные"
- Зона ошибок.
В этой зоне будут прикалываться кнопки (по
одной на каждую найденую ошибку). Лучше всего размещать
их рядами по 10 штук, чтобы удобнее было считать. При
желании можно разделить эту зону по типам ошибок или
назначить каждому типу ошибок свой цвет. Соответственно
пересечение этой зоны с вертикальными создает поля: "Ошибки,
найденные при кодировании", "Ошибки, найденные при проверке"
и т.д.
- На карточки наносится таблица, при этом оставляется место для кнопки,
которая будет прикреплять карточку к доске и для фотографии разработчика,
которая прикалывается поверх карточки. В таблице должны быть следующие
графы и разделы:
- Заголовок:
- Код задания.(Уникальный)
- Краткое описание. (Одно-два предложения)
- Ссылка на положение в системе. Т.е. Path, имя/имена файлов,
ключ в базе данных или что либо подобное.
По ссылке любой разработчик может найти
в общем репозитории все, что относится к текущей версии
данного задания.
- Дата постановки. (Помещения на доску в раздел "Кодирование")
- Дата выполнения. (Снятия с доски.)
- Общее количество ошибок.
- Кодирование:
- Исполнитель.
- Дата начала.
- Дата окончания.
- Количество ошибок.
- Проверка:
- Исполнитель.
- Дата начала.
- Дата окончания.
- Количество ошибок.
- Тестирование:
- Исполнитель (ответственный).
- Дата начала.
- Дата окончания.
- Количество ошибок.
- Использование:
- Исполнитель (ответственный).
- Код задания, в котором используются результаты данного.
- Дата начала.
- Дата окончания.
- Количество ошибок.
Граф "Использование" может быть в принципе несколько.
Количество ошибок в каждой графе является общим количеством
найденных ошибок и неточностей вне зависимости от их сложности,
важности и места. В графе "количество ошибок" подсчет идет
графическим методом. Каждая ошибка заносится в виде палочки. Из
палочек образуется квадрат, перечеркнутый по диагонали из левого
нижнего в правый верхний угол. Каждый такой заполненный квадрат
соответствует 5 ошибкам. Квадраты выстраиваются в ряды или столбики.
Для удобства счета в каждом ряду (или соответственно столбике)
должно быть четное число квадратов. В каждой графе надо резервировать
место под максимально возможное (или даже невозможное) число
ошибок. Например под 40 квадратов, т.е. 200 ошибок для каждого
этапа.
Правила игры.
- Участники эксперимента выполняют следующие роли:
- Руководитель группы.
Может:
- Прмещать карточку задания на доску.
При этом в заголовке ставится текущая дата и время в поле
"Дата постановки".
- Снимать карточку задания с доски. (Если к ней не
прикреплена фотография разработчика)
При этом на карточку в заголовок ставится текущая
дата в поле "Дата выполнения" и в поле
"Общее количество ошибок" заносится сумма ошибок
по всем разделам карточки.
- Менять приоритет задания, передвигая его вертикально
вверх или вниз. (Если фотография разработчика прикриплена
к карточке, то она перемещается вместе с ней.)
- Заполнять в карточке поля заголовка.
- Уточнять правила игры и изменять размеры зон на доске.
Не может:
- Перемещать фотографию разработчика иначе, как вместе с
карточкой, на которую она прикреплена.
- Перемещать задание по доске из одной вертикальной зоны в
другую.
- Заносить или менять на карточке что-либо в графах
"Кодирование", "Проверка", "Тестирование",
"Использование"
- Разработчик.
Может:
- Заполнять графы "Кодирование", "Проверка", "Тестирование" или
"Использование" карточки, к которой прикреплена
его фотография.
Заполняеться может только та графа, которая соответствует
вертикальной зоне, в которой стоит карточка.
- Передвигать карточку горизонтально слева направо из одной
вертикальной зоны в следующую.
При этом он должен поместить ее в ту же горизонтальную зону
приоритета. При перемещении он
прикрепляет свою фотографию к перемещенной карточке. Вписывает
себя в поле "Исполнитель" графы, которой соответствует
вертикальная зона, в которую он карточку поместил, ставит
текущую дату и время в поле "Дата начала".
- Периодически обновлять на карточке, к которой прикреплена
его фотография, в поле "Количество ошибок" число найденных
ошибок.
- Снимать свою фотографию с карточки.
При этом в поле "Дата окончания" графы, в которой стоит
его имя, ставится текущая дата и время. В графу "Количество
ошибок" заносится количество тех ошибок, которые он не
успел отметить на карточке.
- Добавлять кнопки, обозначающие ошибки в вертикальную зону,
в которой стоит карточка с его фотографией.
Так как к моменту снятия фотографии число поставленных им
в поле ошибок на доске кнопок должно полностью соответствовать
числу ошибок поставленному им на карточке. Имеет смысл или
одновременно с занесением ошибок в карточку прикреплять кнопки
к доске, или один раз прикреплять в момент снятия фотографии к
доске столько кнопкок, сколько ошибок стоит в карточке.
Не может:
- Прмещать карточку задания на доску или снимать ее с доски.
- Передвигать карточку задания вертикально из одной горизонтальной
зоны приоритета в другую.
- Вностить или изменять что либо в карточке на которой не
прикреплена его фотография.
- Вносить что-либо в любую графу карточки кроме той,
которая соответствует вертикальной зоне, в которой
прикреплена карточка.
- Заполнять графу "Проверка" или "Тестирование"
(т.е. соответственно выполнять работу), если его
имя стоит в графе "Кодирование".
Тестирование, в случае если проверка была выполнена
этим же разработчиком, тоже не рекомендуется.
- Перереносить карточку не в следующую вертикальную зону.
(т.е. пропускать этапы работы)
- Снимать свою фотографию до того момента, когда
соответствующая работа будет выполнена.
- Прикалывать карточку так, чтобы она перекрывала другую.
(см. ниже исключения для графы "Использование")
- Перемещать карточку, если в зоне, из которой он ее берет,
есть свободные карточки (т.е. карточки без фотографий), в
более высоком поле приоритета (т.е. требующие более срочного
выполнения).
- В процессе обработки карточка (задание) проходит следующие этапы.
- Постановка задания.
Руководитель разбивает работу на небольшие микрозадания и четко их
формулирует. Для получения хороших результатов одно задание должно
выполняться не менее, чем за 4 часа (половину рабочего дня) и не
более, чем за неделю (иначе экспериментальный процесс будет очень
трудно отладить).
Руководитель прикрепляет карточку к доске и заполняет соответствующие
поля заголовка.Задания, которые могут быть выполнены
только последовательно, можно прикреплять одно на другое. При этом
самым верхним является задание, для выполнения которого не надо
использовать остальные.
- Ожидание кодирования.
- Кодирование.
Разработчик переносит карточку в раздел "Кодирование" и
помещает на нее свою фотографию.
- Ожидание проверки.
После того, как разработчик выполнил кодирование, он
заполняет соответствующие графы на карточке, прикалывает
кнопки в зоне "Ошибки, найденные при кодировании" и
снимает свою фотографию.
Карточка без фотографии в любой зоне считается прошедшей
данный этап.
- Проверка.
Разработчик берет карточку, ожидающую проверки, перемещает
ее в зону "Проверка" и прикрепляет свою фотографию.
После этого берет код, выполненный другим разработчиком
проверяет и компилирует его.
Наилучшие результаты получаются, когда тот, кто кодирует не
пытается скомпилировать код, а проверяющий выполняет компиляцию
только после того, как прочитает и проверит код.
- Ожидание тестирования.
После того, как разработчик завершил проверку и компиляцию
(т.е. нашел и исправил все ошибки), он
заполняет соответствующие поля на карточке, прикалывает
кнопки в зоне "Ошибки, найденные при проверке" и
снимает свою фотографию.
- Тестирование.
Разработчик берет карточку, ожидающую тестирования,
заполняет соответствующие поля и выполняет тестирование.
- Ожидание использования.
После исправления всех ошибок, найденных при тестировании,
разработчик заполняет соответствующие поля на карточке, прикалывает
кнопки в зоне "Ошибки, найденные при тестировании" и
снимает свою фотографию.
Руководитель может снимать карточку задания уже из этой зоны.
- Первое использование в качестве окончательной проверки.
Разработчик, который использует результат выполнения
задания, берет соответствующую свободную (без фотографии)
карточку из зоны "Тестирование" и помещает ее в зону "Использование".
Он заполняет соответствующие поля (вносит свое имя, код задания,
для выполнения которого он использует результаты, текущее время и
дату).
Если разработчик использует одновременно несколько результатов
других заданий, то он может помещать их друг на друга.
В принципе эта зона введена только для проверки того, используются
ли результаты где-нибудь или нет. Если задание после завершения
тестирования слишком долго ожидает использования, значит не
все правильно было в расстановке приоритетов.
- Ожидания помещения в архив.
После того, как разработчик завершает кодирование задания, в
котором используется данное, одновременно со снятием
фотографии с карточки задания, в котором используются результаты
данного, он заносит текущую дату и время в поле "Дата окончания".
В поле карточки "Количество ошибок" графы "Использование"
заносятся все найденные ошибки, в поле доски "ошибки,
найденные при использовании" прикалывается соответствующее количество
кнопок.
- Помещение в архив.
Руководитель берет из зон "Тестирование" и "Использование"
свободные карточки и помещает их в картотеку. Данные с карточки
можно для удобства дальнейшей обработки сохранить в электронной
базе данных. При нахождении ошибок в последствии они отмечаются
в карточке в графе "Использование". Соответственно на доске в поле
"ошибки, найденные при использовании" прикалываются кнопки.
Отчет об эксперименте.
Каждые две недели, а лучше каждую неделю имеет смысл:
- анализировать текущее состояние эксперимента;
- выяснять причины ошибок в ходе эксперимента;
Например разработчик не может взять задание на кодирование,
так как скопилось слишком много выполненных им заданий, ожидающих
проверки.
- развивать процесс в соответствие с новыми идеями;
- совершенствовать эксперимент (в основном это относится
к отслеживанию использования результатов выполнения задания);
- документировать все это для последующего анализа.
Эксперимент имеет смысл проводить при выполнении одного проекта.
После его завершения, доску надо очистить, сохранив где-нибудь число
найденных ошибок.
Почему
- ... используется такое оборудование, а не программа?
В первую очередь не просто организовать эксперимент и в таком виде,
а создание программы может занять слишком много времени. Потом следует
учитывать, что поменять условия эксперимента при таком оборудовании
гораздо проще и дешевле, чем при использовании программы. И в
заключении отметим, что монитор размером минимум метр на
полтора и разрешением 600dpi стоит чрезвычайно дорого, а на маленьком
мониторе уже не тот обзор и наглядность.
- ... некоторые правила кажутся неразумными?
Таковы условия эксперимента. Конечно может быть не все в нем правильно,
но ошибку можно найти только в результате его проведения. Большинство
используемых правил взяты из лучшего описаного опыта разработки.
- ... не сформулирована цель эксперимента?
Основная цель - улучшить процесс разработки. Но скорее всего
удасться только помочь обнаружить пути его улучшения.
- ... эксперимент описан не полностью во всех подробностях?
В основном потому, что не все подробности ясны до момента начала
эксперимента. К тому же необходимо учесть, что в процессе проведения
будут вносится изменения, продиктованные ходом проекта. Т.к. основная
цель участников эксперимента не получение научных данных, а удачное
завершение проекта.
- ... не дана форма отчета?
В эксперименте будут принимать участие люди, занимающиеся разработкой
програмного обеспечения, а это предполагает умение находить главное и
четко формулировать свои мысли. :-)
Итак, если кто-нибудь решиться провести у себя этот
эксперимент, то шлите мне мейл
(
vit_r@geocities.com
Subject:Experiments.). Участникам, если их будет больше одного
(Скорее всего и одного не будет.)
будет предоставлен анализ хода всех экспериментов.
Copyright © 1998 Виталий Рудович
(Vitalij Rudowitsch) -
vit_r@geocities.com
All rights reserved.