вторник, 7 июня 2011 г.

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

Знаком ли вам перфекционизм? Желание сделать что-то не просто хорошо, но идеально? Вроде как желание похвальное. Но давайте попробуем разобраться сколько вреда приносит это желание народному хозяйству?
Для начала приведу пару примеров.

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

Представьте, сколько времени админ может строить сеть и наворачивать всевозможные фаерволы с роутингами. Особенно, если он при этом еще и слегка параноик. Как будет он выверять что можно сделать пользователю, а чего делать не нужно. И ничего, что до этого момента пользователь не сможет делать ничего. Зато красота какая будет неописуемая! А ведь на практике тому же заказчику, который за всю эту красоту деньги платит, как правило, напрочь не сдались такие точные разделения прав и доступов. Достаточно гораздо более простых, но не через полгода, а завтра. Ему, понимаете ли, работать нужно. И желательно прямо сейчас.

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

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

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

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

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

Пример. Word 2010 - великолепный продукт. Но стали бы вы его использовать сейчас, если бы не было Word 6.0 15 лет назад? Представьте, что все эти 15 лет вам бы пришлось маяться с Лексиконом. Меня аж оторопь берет от такой мысли. Нет, конечно, маяться бы не пришлось. Просто кто-то другой выпустил бы текстовый редактор. Может быть, не столь красивый и развесистый, но все бы им пользовались. Просто за неимением лучшего. А ребятам, 15 лет платившим за разработку, досталась бы разве дуля. Без мака.

К чему я все это пишу. Если в вашей команде есть подобный перфекционист, его нужно всеми доступными силами отучать от этой нездоровой привычки. Иначе проекты ваши будут идти столь долго и требовать столь много денег, что Вам, лично Вам придется делать огромную часть работы. За себя и за того парня, пока он приводит единственный свой отчет или фреймворк в идеальное состояние. А самое неприятное, что даже в этом идеальном с виду отчете может быть такое количество багов, что все равно его придется перепроверять, а возможно даже переделывать.

Оно Вам надо?

Удачи!

2 комментария:

  1. Опасность перфекционизма описана верно, но насчёт методов решения очень и очень спорно.

    Сразу скажу - не надо перекладывать на программиста ответственность за то, что не досмотрел руководитель. Перфекционизм (как и раздолбайство) появляется там, где есть проблемы с руководством проектом. Это не проблема программиста - это проблема ПМа.

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

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

    И ещё: сразу бросается в глаза удивительная тенденция "прощаться" с программистами. Такое чувство, что других решений проблем с воспитанием команды у автора нет. На самом деле, в текущем состоянии рынка рабочей силы за каждого профессионала надо бороться. Хорошо бы ни забывать, что грамотный программист - это основной капитал софтверной фирмы, а неэффективная работа программиста на 75% состоит из ошибок и некомпетентности руководителя.

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

    ОтветитьУдалить
  2. Михаил, спасибо за комментарий. Попробую поотвечать.

    Сразу скажу, что оправдываться никакого желания нет. И перфекционистов я "самыми ценными людьми в команде" не считаю.

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

    Но перфекционизм перфекционизму рознь.

    Пример. Человеку ставится задача. Все как положено, по SMART, спросив его про сроки. Он задачку взял и ушел делать. Ближе к дедлайну спрашиваем: "где результат?". Ответ такой: "Там очень много работы. Мне нужно выверить каждый пункт/строчку/мысль (нужное подчеркнуть)". И вроде как работает, копает, пишет чего-то. Результата готового нет.

    Спрашиваем "ОК, сколько нужно времени". Получаем ответ. Уходим в цикл. Через какое-то время таки получаем отличный, вылизанный отчет/код/...

    Обычно оно хорошо и правильно работает. Но вот в чем дело. Во-первых, время. Которое деньги. Во-вторых, периодически это вылизанное чудо делает совсем не то (иногда сильно больше) или совсем не так как хотелось и объяснялось. Зато все вылизано. Оно мне надо? Реально таких бойцов лучше заменять или перевоспитывать.

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

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

    Теперь за рынок. С одной стороны, конечно, есть кадровый голод. Но "профессионал" - существо сложившееся. Его не всегда можно перестроить под принятые процессы. И не всегда нужно перестраивать процессы под данного конкретного человека. На эту перестройку может уйти сил и времени больше, чем на воспитание 2 внятных "середнячков". ОК, может, они и не будут блистать. Но зато будут делать работу.

    Софтверная, как и любая другая контора - это не только люди, но и процессы. Об этом нельзя забывать. Это 2 стороны, система сдержек и противовесов. А если концентрироваться только на людях, получится контора Мебиуса. Хорошо ли там будет? Думаю, нет.

    ОтветитьУдалить

Примечание. Отправлять комментарии могут только участники этого блога.

Related Posts Plugin for WordPress, Blogger...