«Желание работать с перфекционистами вряд ли принесет вред, но и пользы большой не получится»

Виктория Сорочинская (Spice IT Recruitment) о том, какую роль играет тяга к совершенству в жизни разработчика

Эксперт Spice IT Recruitment Виктория Сорочинская написала для theRunet колонку, в которой постаралась определить, где же находится баланс между желанием добиваться идеального результата и реальной реализацией проектов.

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

Отказ от неуверенности и неопределенности, здоровое желание избегать ошибок… вредит ли это в работе?

Условные программисты, будем считать, изначально получившие техническое образование, а не переучившиеся на кратких летних интенсивах по переквалификации, безусловно обладают тягой к прекрасному, вечному и совершенному. Перфекционизмом в данном контексте, по сути, может страдать каждый второй разработчик.

В теории, такое отношение к работе вызывает однозначный ответ «Перфекционизм приносит пользу». Но на практике, люди, которые не терпят неудачи, ничему не учатся. Есть отличная народная мудрость: «Не ошибается тот, кто ничего не делает».

У перфекциониста-разработчика получается классный безбаговый код, который нет необходимости рефакторить, переписывать и так далее. А нездоровый — сильно вредит. Человек очень много тратит времени на рефлексию, подчас ненужные перепроверки и попытки исправить исправное, тем самым существенно тормозя процесс.

Можете быть уверены, если разработчик ратует за идеальный код, работа в срок выполнена не будет. Потому что, даже если вы решите, что все и так отлично сработает, последние штрихи по мнению исполнителя сделать необходимо вот прямо здесь и сейчас. Скорее всего, улучшениям не будет конца и края.

Для того, чтобы избежать двойной работы, придумали методику параллельного программирования. Суть формата в том, что один человек сидит за компьютером и пишет код, а второй, за его плечом, наблюдает и, если видит ошибку или погрешность, сразу исправляет или комментирует.

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

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

Излишней тягой к совершенству отличаются, например, писатели с их извечной проблемой «белого листа». У программиста, конечно, такого не случается. Есть задача. Есть сроки, в которые ее необходимо выполнить. Кто-то выполняет работу плохо, кто-то хорошо.

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

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

Полезный перфекционизм для разработчика заключается в знании языка. Программист же оперирует примерно тем же, что и любой разумный грамотно пишущий человек. Есть синтаксис, в определенных местах ставятся точки, запятые и другие знаки препинания. Также и в написании кода. Компетентный разработчик просто знает, где и что ставить, не вспоминает, как и что — а просто делает.

Желание работать с разработчиком с амбициями и стремлением писать код идеально, вряд ли принесет вред, если отсутствуют сжатые сроки. Правда и большой пользы не получится. Скорее всего, когда специалист закончит, продукт получится совершенно неожиданным и удивительным в исполнении.

http://www.therunet.com/articles/7028