Как заставить перфекционизм в разработке приносить пользу
Из статьи «Слишком совершенный код» или чем вреден перфекционизм мы узнали, что перфекционизм — штука вредная. Теперь поговорим о том, как превратить перфекционизм в союзника.
До какого момента стремление к совершенству полезно?
«У каждого разработчика своё представление о качественном коде. То, что один считает нормальным решением, другой может оценить как низкопробную подделку и, как настоящий перфекционист, несомненно, захочет всё исправить. Учитывая, что на проектах разработки программного обеспечения в итоге всё сводится к срокам и бюджету, необходимо внутри команды разработчиков вводить рамки дозволенного перфекционизма, чтобы и волки (разработчики с их инженерными амбициями) были сыты, и овцы (задачи проекта) были целы. Благо для этого уже давно всё придумано.
Следует определить формальные метрики качества кода и уровня технического долга, например, такие как процент покрытия кода тестами, количество предупреждений синтаксического анализатора кода или ошибок несоблюдения принятой конвенции по организации и форматированию исходного кода. Для сформированных метрик необходимо определить пороговые значения, которые указывают, до какого момента „перфекционистский труд“ полезен, а когда его следует попридержать с целью успешного завершения проекта» — говорит Андрей Григоров, руководитель отдела программных разработок департамента систем дистанционного банковского обслуживания R-Style Softlab.
3 способа обратить перфекционизм во благо
Правильно расставьте приоритеты
«Каждый программист может направить свой перфекционизм во благо, если поймет, что он пишет не код ради красивого кода, а код ради создания ценности для бизнеса. Каждое ваше улучшение должно быть оправдано с точки зрения достижения цели бизнеса. Самый простой способ направить ваш перфекционизм во благо — это научиться находить правильное время на свой перфекционизм. Попробуйте каждую задачу по улучшению кода оформлять в виде автономной полноценной задачи, которую можно отнести к „техническому долгу“ проекта и приоритезировать ее вместе с остальными задачами в вашем road map проекта» — говорит Дмитрий Григорьев, сооснователь и IT-директор Rubrain.
Выберите сферу, где нужен перфекционизм
Возможно, чтобы не наступать себе на горло, лучше выбрать занятие, где перфекционистские наклонности будут помогать, а не мешать?
«Переквалифицируйте перфекциониста-разработчика в проектировщика — он даст вам хорошие проектные решения, которые потом будет сложнее испортить плохим кодом. Или переведите его в тестировщики — там, по крайней мере, предел совершенства вполне осязаем и выражается в идеальном соответствии спецификации. Поручите ему тот кусок проекта, который должен работать совершенно — алгоритмы реального времени, управление критическими функциями и т.п.» — считает Владимир Дворецкий, руководитель проектов компании «Системный софт».
Где еще пригодится тяга к совершенству?
«При разработке сложных информационных систем часто возникают задачи, требующие скрупулёзного изучения входных данных, вдумчивой проработки архитектуры и особо качественной реализации. Примером такой задачи может служить разработка и согласование публичного API системы. Для таких работ разработчиков, склонных к перфекционизму, и следует привлекать» — говорит Андрей Григоров.
Также перфекционисты востребованы на ревью задач и проверке чужого кода.
«Придирок и замечаний от таких ревьюеров скорее всего будет множество, но среди них можно будет найти действительно стоящие предложения по улучшению» — считает Владимир Левин, основатель облачного сервиса удаленного администрирования Slamon.
Объясняйте свою позицию команде
Важно понимать, что все трудятся во благо проекта, используя ограниченные ресурсы.
«Часто поначалу перфекционисты вызывают негатив в команде, потому что такого программиста понять сложно: он будет сидеть, втихаря решать проблему день-два. А ее, может, и решать не надо. Работа тим-лида — в ежедневном режиме эти моменты отслеживать и предотвращать нарастание напряжения. При должной организации проекта такие проблемы решаются с использованием так называемых Agile (гибких) методологий разработки ПО, предусматривающих постоянный контроль промежуточных результатов.
В нашей компании традиционно используются методики Code review или Scrum meeting. В первом случае на регулярной основе со стороны тим-лида или архитектора проекта проводится инспекция кода для выявления ошибок и неточностей. А на Scrum meeting ежедневно собирается вся команда, и в течение 20-30 минут мы обсуждаем результаты каждого отдельного разработчика. И если какие-то перспективные идеи все же тормозят проект, мы можем, к примеру, заложить их в следующий релиз. Если идея хорошая, мне кажется, человека нельзя оставить неуслышанным»— говорит Андрей Баканов, руководитель разработки MS CRM в ИТ-компании Navicon.
А не виноват ли тим-лид?
Управление перфекционизмом — одна из задач руководителя. Если в команде возникает недопонимание — возможно дело в посредственном менеджменте.
«Чтобы перфекционизм стал благом, мягко направляйте его в нужное русло, не дайте сотруднику повода думать, что его желание улучшить продукт неуместно» — говорит Адриан Крупчанский, управляющий партнёр и основатель компании Notamedia.
Перфекционизм начинается тут: профессия «Веб-разработчик».