Время — деньги. Создание команды разработчиков программного обеспечения
Шрифт:
Хотя денежные и материальные формы поощрения самые желательные, они не всегда доступны или возможны. Постарайтесь тогда придумать иные способы наградить отличившихся. Почётная грамота или прибавка к отпуску тоже могут быть выражением искренней благодарности.
Как было сказано в начале книги, реализованный проект является результатом усилий всей команды. Что может подчеркнуть это лучше, чем групповая фотография после выхода нового выпуска? Подарите такую фотографию каждому участнику команды, а ещё одну повесьте в рамке на видном месте, лучше всего на стене, посвящённой достижениям компании.
Кроме того, во многих коллективах любят помещать в программы так называемое «пасхальные яйца» — это скрытые окна, которые можно вызвать определённой комбинацией нажатий клавиш, команд меню и щелчков, содержащие список всех создателей программы, а иногда и их фотографию. Они похожи на заключительные титры кинофильма.
Из собственного опыта
Группа специалиста NuMega, работавших над программой BoundsChecker, поместила в программу «пасхальное яйцо». Те, у кого есть эта программа, могут увидеть его. Для этого нужно вызвать диалоговое окно «О программе» командой меню Help/About, навести указатель на клетчатый значок продукта, затем при нажатой клавише Shift трижды щёлкнуть правой кнопкой.
Что дальше?
Когда все благодарности розданы, пора переключаться на подготовку к следующему проекту. Хотя этот период очень важен, часто о нём забывают. Это самое подходящее время для извлечения уроков из прошлых ошибок и подготовки к решению грядущих задач.
Чтобы встретить будущее во всеоружии, следует разобраться в ошибках прошлого. Что удалось? Что нет? Чем больше всего будет отличаться работа над следующим проектом? Определите, в каких продуктах, процессах, технологиях или оборудовании ощущалась острая нехватка на протяжении последних месяцев и проследите, чтобы все это теперь было в наличии.
Классический способ анализа законченного проекта — это обсуждение его на итоговых собраниях. Как правило, такое собрание проводится с участием всей команды вскоре после выхода нового выпуска. Оно служит для обмена мнениями о том, что удалось, а что нет, а также для «мозгового штурма» проблем. Цель такого собраний не в том, чтобы кого-то обвинить или отыскать личные просчёты, а в том, чтобы сообща извлечь уроки из прошлых ошибок и наметить, что нужно сделать во время следующего проекта. Эти собрания идеально подходят для подготовки почвы для грядущих изменений.
Первые дни и недели после выпуска ПО также очень удобны для расширения инфраструктуры — организации новых рабочих процедур, повышения автоматизации, пополнения оборудования и инструментария. Как известно, вносить существенные изменения в эти сферы во время работы над проектом очень трудно. Рассмотрим их поочерёдно.
• Рабочие процедуры
Как следует изучите все рабочие процедуры: создание ежедневных сборок ПО, базисные тесты, формулирование требований, планирование, оценку практичности и набор антикризисных мер. Как налажен обмен информацией с командой? Адекватны ли планы и методики задачам проекта? Нуждаются ли эти сферы в улучшении?
• Автоматизация
Часто
• Оборудование
Следует использовать полученную возможность для приобретения оборудования, которое потребуется для работы над следующими проектами.
• Инструментарий
Замена инструментов для управления исходным кодом и отслеживания ошибок во время работы над выпуском, как правило, является ошибкой и всегда требует больше времени (см. главу 5). Но когда проект завершён, можно уделить часть времени оценке новых версий полезных программ и обновлению имеющегося инструментария.
Вложения в кадры не менее важны, чем в инфраструктуру. Как это сделать конкретно?
• Анализ эффективности работы
По окончании проекта следует проанализировать эффективность работы его участников, Хотя в большинстве компаний такое мероприятие проводится лишь в день приёма сотрудника на работу, индивидуальный анализ работы каждого члена команды по окончании каждого проекта позволяет держать в памяти свежие данные о его эффективности и устранить ряд проблем прежде, чем начнётся работа над следующим проектом.
• Взаимное обучение
Следует подумать об обмене обязанностями между участниками команды. Очень важно, чтобы при работе над разными фрагментами ПО они обучали друг друга. Плохо, когда разработка какого-либо фрагмента программы полностью зависит от единственного специалиста. Взаимное обучение придаёт большую гибкость планам и позволяет каждому члену команды получить более чёткое представление о многочисленных аспектах проекта.
• Повышение квалификации
Это прекрасное время для повышения квалификации сотрудников. Когда работа над проектом позади, участники команды смогут сосредоточиться на изучении новых технологий или новшеств в уже известных им методиках, появившихся во время работы над последним проектом.
• Отпуска
В любом случае у каждого участника команды должен быть отпуск. Промежуток между проектами лучше всего посвятить семье и личным интересам. Люди стремятся трудиться интенсивнее и много работают сверхурочно, если знают, что смогут хорошенько отдохнуть после завершения проекта.
Те, кто особенно интенсивно работал в течение долгого времени, заслуживают дополнительных выходных. Следует беречь силы тех, кто вносит ключевой вклад во внутренний цикл реализации проекта и давать им дополнительное время для отдыха. Ваша задача — не допуская чрезмерного расслабления, помочь людям восстановить свои силы, чтобы спустя некоторое время они вновь смогли работать с максимальной самоотдачей.
В первоначальный период работы любой компании, когда особенно часто приходится работать сверхурочно, потребность в увеличении времени отдыха после интенсивной работы ощущается особенно остро. В NuMega мы смогли взять месяц оплачиваемого отпуска лишь после пяти лет работы. Все были рады наконец получить компенсацию за все наши сверхурочные. К счастью, все больше компаний признают необходимость увеличенного периода отдыха и осознают то благо, которое он может со временем принести как работнику, так и компании.