С тяжёлыми людьми одинаково сложно иметь дело как в электронных форумах так и лично. Под "тяжёлыми" я не имею в виду "грубых". Грубые люди раздражают, но с ними не обязательно тяжело общаться. В этой книге уже обсуждалось, как управляться с ними: прокомментируйте грубость в первый раз, а далее либо игнорируйте их, либо обращайтесь как со всеми остальными. Если они продолжают грубить, то обычно становятся так непопулярны, что не имеют влияния на остальных участников проекта, так что проблема грубости сама себя изживает.
Действительно трудные люди - люди, которые не грубят открыто, но манипулируют или злоупотребляют ходом проекта так, что в конечном итоге это стоит времени и сил других людей и не приносит никакой пользы проекту. Такие люди обычно выискивают в процедурах проекта слабые места, и пользуются ими для получения большего влияния, чем они могли бы получить обычным образом. Это намного более коварно, чем простая грубость, потому что ни поведение, ни приносимый вред не очевидны для рядовых наблюдателей. Классический пример - обструкционизм, когда кто-то (всегда говорящий, конечно, так рассудительно, как только можно) продолжает утверждать, что предмет обсуждения не готов для вынесения решения, и предлагает возможные решения или новые трактовки старых решений, тогда как на самом деле он чувствует, что консенсус скоро будет достигнут или пройдет голосование, а ему не нравится в какую сторону будет развиваться проект после этого. Другой пример, когда люди не соглашаются по вопросу, но группа пытается по крайней мере найти точки разногласия и прописать их в документе, на который каждый отныне мог бы ссылаться. Обструкционист, зная что такой документ может привести к результату, которого он не хочет, часто будет пытаться затягивать его производство, безжалостно запутывая вопрос о том, что в нём должно быть, либо протестуя против разумных предложений, либо вводя неожиданные новые пункты.
Чтобы нейтрализовать такое поведение полезно понимать мышление таких людей. Люди как правило не поступают так сознательно. Никто не встаёт утром и не говорит себе: "Сегодня я собираюсь цинично манипулировать формальными процедурами и буду раздражающим обструкционистом." Напротив, таким действиям часто предшествует полу-параноидальное ощущение того, что человека не допускают до взаимодействия с группой и принятия решений. Человек ощущает, как будто его не воспринимают всерьёз или (в более тяжёлых случаях) что против него существует чуть ли не заговор - что остальные участники проекта решили сформировать закрытый клуб, в котором он не состоит. Такая позиция оправдывает, в его глазах, буквальную трактовку правил и манипулирование процедурами проекта, как средство заставить других принимать его серьезно. В крайних случаях человек даже может полагать, что он в одиночку выходит на бой, чтобы защитить проект.
Природа такого поведения такова, что не каждый сразу его заметит, а некоторые люди не видят его вообще, пока пока им не предоставят весомых доказательств. Это означает, что нейтрализация может потребовать немало работы. Не достаточно убедиться самому, что это происходит; вы должны собрать достаточно данных, чтобы ещё и убедить других, а затем должны распространить эти данные разумным путём.
Так как требуется так много работы, зачастую лучше потерпеть некоторое время. Посмотрите на это как на заражение невредным паразитом. Если оно не истощает проект сверх меры, проект может остаться инфицированным, а лечение может привести к болезненным побочным эффектам. Однако, если оно приносит слишком много неудобств, то настаёт время действовать. Начните собирать заметки о случаях, которые замечаете. Позаботьтесь включить ссылки на общедоступные архивы - это одна из причин, ради которой хранятся протоколы проекта, поэтому используйте их. Как только вы соберете достаточно примеров, начните приватные переговоры с другими участниками проекта. Не говорите им, что вы обнаружили; вместо этого спросите, что увидели они. Это может быть вашим последним шансом получить нефильтрованную оценку того, как другие смотрят на поведение нарушителя спокойствия; как только вы начнёте говорить об этом открыто, мнения поляризуются, и никто не сможет вспомнить, что он думал об этом раньше.
Если приватное обсуждение показывает, что по крайней мере ещё кто-то видит проблему, то наступило время что-то делать. И вот здесь вы должны быть действительно осторожны, потому что такие люди легко могут попытаться представить дело так, будто вы придираетесь к ним несправедливо. Что бы вы ни делали, никогда не обвиняйте их в злоупотреблении процедурами проекта, или в параноидальности, вообще ни в чём, даже если подозреваете, что это так. Вам следует выглядеть одновременно более рассудительным и более обеспокоенным общим состоянием проекта, чтобы либо изменить поведение человека, либо вынудить его уйти навсегда. В зависимости от других разработчиков и от ваших связей с ними, может оказаться полезным сначала собрать единомышленников приватно. А может и нет; это может породить недобрую обстановку, если люди подумают, что вы начинаете неприличную закулисную кампанию.
Помните, что хотя другой человек может быть тем, кто ведёт себя деструктивно, вы становитесь тем, кто кажется деструктивным, когда делаете ни чем не подкрепленное публичное обвинение. Убедитесь, что имеете достаточно примеров, чтобы подтвердить свои слова, и произносите их как можно вежливее, не теряя при этом сути. Вы можете не убедить человека, о котором идёт речь, но это не страшно, если вы убедили всех остальных.
Я могу припомнить только одну ситуацию за 10 с лишним лет работы в открытом ПО, когда всё сложилось так плохо, что нам действительно пришлось попросить человека прекратить писать навсегда. Как это часто бывает, он не грубил, и только хотел искренне помочь. Он просто не знал, когда надо писать, а когда нет. Наши списки были открытыми, и он писал настолько часто и задавал вопросы по столь различным вопросам, что это начало становиться проблемой шума для сообщества. Мы уже пытались вежливо просить его более тщательно искать ответы на вопросы перед тем как задавать вопросы, но это не имело эффекта.
Стратегия, которая в итоге сработала, - прекрасный пример того, как построить веское дело на независимых, количественных данных. Один из наших разработчиков покопался в архивах и затем послал следующее сообщение приватно нескольким другим. Правонарушитель (третье имя в списке ниже, показанное здесь как "J.Random") имел очень маленькую историю в проекте и не внёс вклад ни в код, ни в документацию. При этом он был третьим наиболее активным писателем в почтовой рассылке:
From: "Brian W. Fitzpatrick" <fitz@collab.net> To: [... список получателей опущен в целях соблюдения анонимности ...] Subject: The Subversion Energy Sink Date: Wed, 12 Nov 2003 23:37:47 -0600 За последние 25 дней 6-ю наиболее активными писателями в список svn [dev|users] были: 294 kfogel@collab.net 236 "C. Michael Pilato" <cmpilato@collab.net> 220 "J. Random" <jrandom@problematic-poster.com> 176 Branko Čibej <brane@xbc.nu> 130 Philip Martin <philip@codematters.co.uk> 126 Ben Collins-Sussman <sussman@collab.net> Должен сказать, что пятеро из этих людей содействовали тому, чтобы Subversion 1.0 появилась в ближайшем будущем. Должен также сказать, что один из этих людей постоянно отнимает энергию у остальных пяти, не говоря о списке рассылки в целом, тормозя этим (хотя и непреднамеренно) разработку Subversion. Я не делал анализа по темам, но анализ моего почтового архива Subversion говорит, что каждое письмо этого человека потребовал ответа по крайней мере один раз от по крайней мере 2-х человек из 5-ти. Я думаю, требуется какое-то радикальное вмешательство, даже если мы отпугнём вышеупомянутого человека от участия в проекте. Щепетильность и доброта уже испробованы безрезультатно. dev@subversion - это список рассылки, содействующий разработке системы контроля версий, а не сеанс групповой терапии. -Fitz, пытающийся продраться через почту, которую он нагородил за три дня
Поведение J.Random'а было классическим случаем злоупотребления процедурами проекта, хотя это может показаться не столь явным. Он не пытался делать делать чего-то очевидного, типа попыток обструкции голосования, но он получил преимущество от политики списка рассылки, построенной на саморегуляции участниками. Мы оставили на усмотрение каждого, когда писать и по какому вопросу. Таким образом, у нас не было процедурного ресурса для управления теми, кто не следовал, либо не собирался изучить это соглашение. Не было правила, на которое можно было указать и сказать, что парень нарушил его, хотя все знали, что его частые сообщения грозили стать серьёзной проблемой.
Стратегия Фитца (Fitz) была, оглядываясь назад, мастерской. Он собрал дискредитирующие количественные данные, но затем распространил их избирательно, послав их сначала нескольким людям, чья поддержка могла стать ключевой в случае решительных действий. Они согласились, что необходимо что-то делать, и в конце концов мы позвонили J.Random'у по телефону, прямо описали ему проблему и попросили его просто перестать писать. Он так и не понял, почему; если бы он был способен понять, он, наверное, для начала изучил бы соответствующее соглашение. Но он согласился не писать, и списками рассылки снова стало можно пользоваться. Одна из причин, по которой эта стратегия сработала, была, возможно, в безусловной угрозе того, что мы можем начать отсекать его почту с помощью регулирующего ПО, которое обычно используют для защиты от спама (смотрите «Spam Prevention» в Глава 3, Техническое обеспечение). Но мы располагали этой запасной возможностью, потому что Фитц сначала заручился поддержкой ключевых людей.