
- •Лекция 18. Экстремальное программирование и быстрая разработка по
- •Экстремальный цикл
- •Позднее принятие решений
- •Кодирование в глубину
- •Идеальный день разработчика и фактор загрузки
- •Скорость проекта
- •История пользователей
- •План релиза
- •План итераций
- •Тесты приемки
- •Представители заказчиков
- •Структура группы разработчиков
- •Простота и эффективность используемого кода
- •Рефракторинг
- •Тестирование модулей
- •Групповое авторство
- •Сорокачасовая рабочая неделя
- •Стандарты кодирования
- •Метафора системы
Групповое авторство
Одной из проблем программирования является недоступность по той или иной причине разработчика определенного фрагмента кода, в результате чего его поддержка становится сложной или невозможной. Многие заказчики и группы попадали и попадают в зависимость от "гуру" — и всегда с негативными последствиями.
В обстановке, когда "все делают все", идеи свободно высказываются и распространяются в группе. Более того, каждый может вносить изменения в любую строку кода. Это сложно понять с первого раза, отсутствие одного "супервизора" может сбить с толку — но это работает. По крайней мере, вполне распространена ситуация, когда весь коллектив выполняет одно неверное указание системного архитектора. Зависимость группы от одного, даже высококвалифицированного человека — весьма опасный путь. Участие в обсуждении архитектуры всех сотрудников не только повышает самооценку, улучшает квалификацию, но и приводит к значительно лучшим результатам разработки.
Коллектив, оказывается, способен самостоятельно выработать единое мнение и распределить авторитет и ответственность, пользуясь естественными механизмами человеческой психики. И поскольку каждый принимает участие в обсуждении архитектурных и организационных вопросов, то вполне логично, что и собственность на полученный продукт будет коллективной.
Сорокачасовая рабочая неделя
Человек, особенно если он программист, ради дела способен на многое: задержаться на работе, выйти на работу на выходные, отказаться от отпуска, несколько суток не спать, сидя за клавиатурой… В общем, чего только не сделаешь ради любимого занятия. Но экстремальное программирование категорически против такого самопожертвования и нарушения принятых норм трудового права.
Это продиктовано не только соображениями законности и гуманности, а - в первую очередь - необходимостью повышения эффективности работы и строгой организации. Ведь экстремальное программирование - коллективная игра, рассчитанная не на индивидуумов, а на всю группу целиком. А такая вещь, как, например, парное программирование, возможна лишь при синхронизации биоритмов ее участников. И она невозможна, если один человек будет приходить на работу к девяти, а второй к двенадцати или один решит, что ему лучше поработать в субботу и воскресенье, а другому это неудобно.
Но самое главное - человеку, чтобы сохранить здоровье и работоспособность, необходим полноценный отдых. Восьмичасовой рабочий день и пятидневная рабочая неделя установлены именно из соображений максимальной продуктивности. Во многих западных фирмах поздний уход с работы расценивается как неуспеваемость или неспособность правильно распорядиться своим рабочим временем. В большинстве случаев это так и есть. Да и с медицинской точки зрения, задержки на работе ведут к постоянной усталости, раздражительности и снижению мозговой деятельности. Разве это эффективно? А как в таком коллективе организовать постоянное открытое общение между разработчиками, и возможно ли будет парное программирование? Ответ отрицательный. Нормы есть нормы, и их стоит придерживаться.