Как заставить перфекционизм в разработке приносить пользу

Конвертируем недостатки в достоинства.
30 мая 2016150479Юлия Фролова280129

Из статьи «Слишком совершенный код» или чем вреден перфекционизм мы узнали, что перфекционизм — штука вредная. Теперь поговорим о том, как превратить перфекционизм в союзника.

До какого момента стремление к совершенству полезно?

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

Следует определить формальные метрики качества кода и уровня технического долга, например, такие как процент покрытия кода тестами, количество предупреждений синтаксического анализатора кода или ошибок несоблюдения принятой конвенции по организации и форматированию исходного кода. Для сформированных метрик необходимо определить пороговые значения, которые указывают, до какого момента „перфекционистский труд“ полезен, а когда его следует попридержать с целью успешного завершения проекта» — говорит Андрей Григоров, руководитель отдела программных разработок департамента систем дистанционного банковского обслуживания R-Style Softlab.

3 способа обратить перфекционизм во благо 

Правильно расставьте приоритеты

«Каждый программист может направить свой перфекционизм во благо, если поймет, что он пишет не код ради красивого кода, а код ради создания ценности для бизнеса. Каждое ваше улучшение должно быть оправдано с точки зрения достижения цели бизнеса. Самый простой способ направить ваш перфекционизм во благо — это научиться находить правильное время на свой перфекционизм. Попробуйте каждую задачу по улучшению кода оформлять в виде автономной полноценной задачи, которую можно отнести к „техническому долгу“ проекта и приоритезировать ее вместе с остальными задачами в вашем road map проекта» — говорит Дмитрий Григорьев, сооснователь и IT-директор Rubrain.

Выберите сферу, где нужен перфекционизм

Возможно, чтобы не наступать себе на горло, лучше выбрать занятие, где перфекционистские наклонности будут помогать, а не мешать?

«Переквалифицируйте перфекциониста-разработчика в проектировщика — он даст вам хорошие проектные решения, которые потом будет сложнее испортить плохим кодом. Или переведите его в тестировщики — там, по крайней мере, предел совершенства вполне осязаем и выражается в идеальном соответствии спецификации. Поручите ему тот кусок проекта, который должен работать совершенно — алгоритмы реального времени, управление критическими функциями и т.п.» — считает Владимир Дворецкий, руководитель проектов компании «Системный софт».

Где еще пригодится тяга к совершенству?

«При разработке сложных информационных систем часто возникают задачи, требующие скрупулёзного изучения входных данных, вдумчивой проработки архитектуры и особо качественной реализации. Примером такой задачи может служить разработка и согласование публичного API системы. Для таких работ разработчиков, склонных к перфекционизму, и следует привлекать» — говорит Андрей Григоров.

Также перфекционисты востребованы на ревью задач и проверке чужого кода.

«Придирок и замечаний от таких ревьюеров скорее всего будет множество, но среди них можно будет найти действительно стоящие предложения по улучшению» — считает Владимир Левин, основатель облачного сервиса удаленного администрирования Slamon.

Объясняйте свою позицию команде

Важно понимать, что все трудятся во благо проекта, используя ограниченные ресурсы.

«Часто поначалу перфекционисты вызывают негатив в команде, потому что такого программиста понять сложно: он будет сидеть, втихаря решать проблему день-два. А ее, может, и решать не надо. Работа тим-лида — в ежедневном режиме эти моменты отслеживать и предотвращать нарастание напряжения. При должной организации проекта такие проблемы решаются с использованием так называемых Agile (гибких) методологий разработки ПО, предусматривающих постоянный контроль промежуточных результатов. 

В нашей компании традиционно используются методики Code review или Scrum meeting. В первом случае на регулярной основе со стороны тим-лида или архитектора проекта проводится инспекция кода для выявления ошибок и неточностей. А на Scrum meeting ежедневно собирается вся команда, и в течение 20-30 минут мы обсуждаем результаты каждого отдельного разработчика. И если какие-то перспективные идеи все же тормозят проект, мы можем, к примеру, заложить их в следующий релиз. Если идея хорошая, мне кажется, человека нельзя оставить неуслышанным»— говорит Андрей Баканов, руководитель разработки MS CRM в ИТ-компании Navicon.

А не виноват ли тим-лид?

Управление перфекционизмом — одна из задач руководителя. Если в команде возникает недопонимание — возможно дело в посредственном менеджменте.

«Чтобы перфекционизм стал благом, мягко направляйте его в нужное русло, не дайте сотруднику повода думать, что его желание улучшить продукт неуместно» — говорит Адриан Крупчанский, управляющий партнёр и основатель компании Notamedia.

 

Перфекционизм начинается тут: профессия «Веб-разработчик».