3 марта 2006 г.

О парном программировании и рабочем пространстве

Я уже практиковал парное программирование на прошлой работе. Недавно снова попробовал. Еще раз убедился, что парное программирование дает реальный эффект и значительный прирост не только качества, но и, как бы это не казалось странным, производительности.

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

Не скажу, что я не согласен, но мне ближе все-таки подход, применяемый в экстремальном программировании: просторное помещение для программистов с возможностью удобно подсаживаться друг к другу и заниматься парным программированием. Во-первых, потому, что мне нравится заниматься парным программированием. А делать это удобно именно в общем помещении. Впрочем, преимущества парного программирования очень хорошо описаны в книгах по экстремальному программированию. Во-вторых, потому, что я вообще против отдельных кабинетов для программистов. Объясню, почему.

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

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

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

Безусловно, такой подход по организации рабочего пространства не предусматривает наличие огромного зала с сотнями программистов. Этот подход эффективно работает с командами численностью около десяти человек. Думаю, никто не будет спорить, что управлять даже тремя десятками программистов (а тем более тысячей) ни одному нормальному руководителю не под силу. Все равно придется каким-то образом делиться на подгруппы и делегировать полномочия. Так что я за то, чтобы сформированную группу размещать в одной комнате, а не сажать каждого в отдельный кабинет.

Комментариев нет:

Отправить комментарий