Коллективное владение кодом

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

Коллективное владение

Быть в курсе событий в команде и компании

Разработчики, с которыми я работаю, часто жалются на «информационный голод» — состояние, когда не знаешь, чем занимаются твои коллеги, и куда движется компания в целом. Ознакомление с результатом работы и задачами других разработчиков позволяет увидеть более полную картину продвижения компании и составить представление о её продукте. Таким образом, у команды формируется более чёткая цель, а вместе с ней и увеличивается мотивация её достижения. Помимо этого, у людей появляются знания о других компонентах продукта, что уменьшает время на реализацию коммуникации между разными частями системы.

Возможность учиться у коллег


Многие программисты не любят отдавать свой код на поддержку другим разработчикам потому, что «они обязательно всё сломают». Такое недоверие к коллегам вполне можно понять, ведь каждый в своей профессиональной карьере встречал, мягко говоря, некачественный код, выходящийиз-под пальцев других разработчиков. Но меня больше удивляет то, что почти все поголовно считают, что,во-первых, уж их-то код — идеален и в доработках не нуждается; и во-вторых, что его код настолько хорош, что любой разработчик, его прочитавший, должен постичь просветление в программировании и священно трепетать перед этим творением. К сожалению, все программисты — люди и, следовательно, склонны допускать ошибки: возможно, коллеги, взглянув на ваш код под другим углом, смогут предложить более изящный вариант решения задачи, который просто не пришёл в голову. И в этом не будет ничего плохого. Тем более, что просматривая код других разработчиков, вы сможете предлагать им свои идеи по улучшению кода, тем самым обмениваясь бесценным опытом и повышая свою квалификацию и квалификацию ваших коллег.

Увеличение стабильности продукта

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

Заключение

Существуют разные способы достижения коллективного владения кодом. Например, peer code review, парное программирование или регулярная ротация программистов на проектах. Но важно, чтобы каждый программист нёс отвественность за написанный им код и не превращал общий код в свалку, куда каждый будет подкидывать еще немного… функциональности. Коллективное владение кодом, на мой взгляд, похоже на общежитие, где нужно уважать мнение соседей и не нарушать принятых правил поведения как бы ни хотелось сделать всё быстрее и проще, ведь потом это придётся поддерживать другим людям. Возможно, его будет поддерживатьпсих-маньяк, который знает, где ты живешь.

Поделиться
This entry was posted in Management, Programming and tagged , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>