Книга: Джоэл и снова о программировании
Назад: Глава пятнадцатая. Не только юзабилити
Дальше: Часть четвертая. Управление большими проектами

Глава шестнадцатая. Формирование сообществ с помощью программного обеспечения

3 марта 2003 года, понедельник

В своей книге «Славное местечко» («The Great Good Place», Da Capo Press, 1999) социолог Рэй Ольденбург (Ray Oldenburg) рассуждает о том, что помимо работы и дома человеку нужно еще одно место, где можно встретить друзей, выпить пива, обсудить новости и испытать радость человеческого общения. Кофейни, бары, парикмахерские, пивные, бильярдные, клубы и прочие места времяпрепровождения так же нужны, как фабрики, школы и квартиры. Но капиталистическое общество разрушает такие места, и это обедняет общество. В книге «Боулинг в одиночку» («Bowling Alone», Simon & Schuster, 2001) Роберт Путнэм (Robert Putnam) увлекательно и подробно доказывает, что американское общество практически лишилось третьего места между домом и работой. За последние 25 лет американцы стали «реже вступать в организации, устраивающие сборы своих членов, хуже знать своих соседей, реже встречаться с друзьями и даже общаться со своими семьями». Слишком много стало людей, жизнь которых состоит из работы и сидения дома перед телевизором. Работа-ТВ-сон-работа-ТВ-сон. Мне кажется, что это явление гораздо острее проявляется среди программистов, особенно в таких местах, как Силиконовая долина или окраины Сиэтла. Люди заканчивают колледж, переезжают в другой конец страны, где они никого не знают, и работают по двенадцать часов в день — в основном, из-за одиночества.
Неудивительно поэтому, что очень многие программисты, отчаянно нуждающиеся в человеческих контактах, устремляются в сетевые сообщества: чаты, форумы и проекты open source или играют в Ultima Online. Разрабатывая программное обеспечение для сообществ, мы в какой-то мере пытаемся создать «третье место». И как в любом другом архитектурном проекте, решающее значение имеют конструктивные решения. Если в баре слишком шумно, люди не смогут поговорить. И такое место будет очень сильно отличаться от кофейни. Если в кофейне мало стульев, как в Starbucks, посетители унесут свой кофе туда, где они раньше сидели в одиночестве, вместо того чтобы остаться и пообщаться, как в кофейне сериала «Друзья», который мы смотрим потому, что лучше иметь суррогат места общения, чем никакого вообще.
В программном обеспечении, как и в архитектуре, конструктивные решения влияют на тип сообщества, которое сможет или не сможет образоваться. Люди чаще делают то, что легко сделать, и реже — то, что трудно. Значит, у вас есть способ осторожно поощрять определенные виды поведения, определяющие характер и качество сообщества. Дружеская ли там атмосфера? Ведутся ли серьезные беседы, как в европейском салоне, полном интеллектуалов с интересными идеями? Или это безлюдное место, где по полу разбросаны несколько затоптанных рекламных проспектов, которые никто не удосужился подобрать?
Сравните несколько сетевых сообществ — и вы сразу заметите разницу в общественной атмосфере. Присмотритесь — и вы поймете, что различия часто обусловлены конструктивными особенностями программного обеспечения.
В Usenet какую-то тему могут обсуждать месяц за месяцем, образуя множество новых ветвей, так что трудно сказать, где они начинаются. Как только подключается новичок и задает вопрос по существу, на него обрушиваются старожилы и советуют сначала прочесть FAQ. Цитирование с помощью символа > — сущее наказание при чтении любого потока сообщений, потому что смертельно скучно снова и снова перечитывать всю историю дискуссии, которую вы уже прочли несколько секунд назад. Чтение для маляра Шлемиэля.
В IRC нельзя сохранить за собой ник и канал: как только из комнаты выйдет последний участник, ее может занять кто угодно. Так устроена эта программа. Социальный результат: на следующий день вам часто не удается найти в чате своих вчерашних друзей по комнате, потому что в вашу комнату вас кто-то не пускает, а у друзей другие ники. Единственным способом помешать геененавистникам в Перте (Австралия) перехватывать чат-каналы геев, когда те уходили поспать, оказалось создание программного робота, охранявшего канал 24 часа в сутки. Многие участники IRC тратят больше сил на сложные войны ботов, попытки захвата каналов и разные дурачества, чем на реальное общение, и часто осложняют жизнь остальным.
На большинстве форумов по инвестированию практически невозможно проследить обсуждение темы с начала и до конца, потому что каждое сообщение отображается на отдельной странице, чтобы показать побольше рекламных баннеров, — задержки при чтении просто сводят с ума. От этого мигающего вокруг диалога коммерческого мусора создается впечатление, будто пытаешься познакомиться на Таймс-сквер, но неоновая реклама совершенно отвлекает внимание.
На Slashdot по каждой теме поступают сотни идентичных ответов, поэтому общение там кажется неинтересным и скучным. Чуть ниже я объясню, почему на Slashdot много одинаковых ответов, а на форуме «Joel on Software» — нет.
На FuckedCompany.com форум совершенно бездарный: подавляющее большинство сообщений содержит неуместную ругань и оскорбления, и все в целом больше напоминает соревнование в грубости, а вовсе не братство.
Итак, мы открыли главную аксиому сетевых сообществ:
Мелкие детали реализации программного обеспечения приводят к крупным различиям в развитии, поведении и атмосфере сообщества.
Пользователи IRC занимаются войной ботов, потому что программа не позволяет резервировать канал. Потоки Usenet в огромной степени избыточны, потому что первая читалка Usenet «rn», разработанная еще в эпоху 300-бодных модемов, не отображает старые сообщения — только новые, поэтому если вы хотите прокомментировать чей-то текст, нужно процитировать его, иначе ваш разбор будет бессмысленным.
С учетом всего сказанного я отвечу на типичные вопросы о форуме «Joel on Software», объяснив, почему он был сделан именно так, как это помогает его работе и что в нем можно усовершенствовать.
B.Почему программа сделана столь упрощенно?
O. В первые дни работы форума «Joel on Software» для начала дискуссии важно было достичь критической массы, избежав эффекта пустого ресторана (никто не заходит в пустой ресторан: все идут в заполненный соседний, даже если он дрянной). Поэтому целью проекта было устранение помех для публикации сообщений. Вот почему отсутствует регистрация и нет буквально ни единой функции, поэтому нечего осваивать.
Бизнес-задачей программного обеспечения этого форума было обеспечение технической поддержки продуктов Fog Creek. Это оправдывало его разработку. Для достижения этой цели важнее всего было сделать программу крайне простой, чтобы ей смог пользоваться каждый. Правила форума предельно очевидны. Не встречал никого, кто бы не сразу понял, как пользоваться программой.
B. Нельзя ли сделать такую функцию, чтобы я мог установить флажок «Отправьте мне электронное сообщение, если кто-нибудь прокомментирует мой пост»?
O. Одной этой функцией, которую так легко и потому соблазнительно реализовать, можно погубить любой начинающий форум. Если реализовать ее, можно никогда не достичь критической массы. Такая функция есть у Филипа Гринспена (Philip Greenspun) в LUSENET, и вы можете убедиться, как вянут из-за нее новые дискуссионные форумы.
Почему?
Допустим, человек приходит на форум, чтобы задать вопрос. Если дать ему возможность поставить флажок «Известите меня...», он запостит свой вопрос, установит флажок и больше не вернется. Он просто будет читать ответы, получая их в почтовый ящик. Конец. Если же убрать такой флажок, человеку не остается ничего иного, как время от времени возвращаться на форум. В какой-то из этих моментов он может увидеть другое сообщение, которое его заинтересует, и у него может возникнуть желание высказаться на эту тему. В критические первые дни, когда нужно активизировать дискуссии, вы усилите «прилипание» к форуму, на нем будет больше людей, и критическая масса будет достигнута значительно быстрее.
B.Хорошо, но нельзя ли хотя бы организовать ветвление? Если кто-то отклоняется от темы, пусть возникнет отдельная ветка, чтобы можно было пойти по ней или вернуться на главную ветвь.
O.Ветвление кажется вполне логичным программисту, но это не тот способ, каким происходит общение в реальном мире. Несвязность ветвящихся дискуссий затрудняет их чтение и отвлекает внимание.
Пример того, как отвлекается внимание: я хочу провести какую-то операцию на веб-сайте моего банка, но сайт работает так медленно, что после перехода на новую страницу я забываю, что хотел сделать. Есть такой анекдот. Беседуют три пожилые дамы. Дама №1: «Я такая забывчивая: как-то на днях стою с сумкой на лестнице около своей двери и не могу вспомнить — то ли пошла вынести мусор, то ли пришла из магазина». Дама № 2: «Я такая забывчивая: сижу как-то в машине возле дома и не могу вспомнить — то ли я возвращаюсь домой, то ли собралась в синагогу». Дама №3: «Слава богу, у меня пока с головой все в порядке, постучу по дереву (тук-тук-тук). Входите, открыто!» Ветвление отвлекает от темы дискуссии, ветвящиеся потоки неестественны и выбивают из колеи. Пусть лучше открывают новую тему, если им нужен офтопик. Вспомнил еще анекдот...
B. Ваш список тем неправильно отсортирован. Он должен сортироваться по времени самого свежего ответа, а не по времени исходного сообщения.
O. Можно сделать и так — это принято на многих веб-форумах. Но тогда некоторые темы будут постоянно вертеться у самого верха, потому что народ готов обсуждать визы H1B или недостатки преподавания вычислительной науки в колледже до бесконечности. Каждый день на форуме появляется сотня новичков, которые читают список сверху и с удовольствием погружаются в эти темы.
У моего способа есть два преимущества. Во-первых, темы быстро опускаются, поэтому общение остается относительно интересным. В конце концов, когда-то нужно прекратить обсуждать одно и то же. Во-вторых, порядок тем на главной странице сохраняется, так легче найти когда-то заинтересовавшую вас тему, потому что она сохраняет свое положение относительно соседних тем.
B.Почему мне не показывают, какие сообщения я уже читал?
O. У нас лучшая система, которую только можно реализовать распределенным и масштабируемым образом: пусть за этим следит браузер каждого пользователя. Веб-браузеры меняют цвет посещенных ссылок с голубого на фиолетовый. Мы только слегка меняем URL каждой темы, включая в него количество полученных ответов. Благодаря этому при наличии новых ответов сообщение снова выглядит как непрочитанное.
Какие-либо более изощренные способы реализуются труднее и слишком усложняют интерфейс.
B.Эта чертова ссылка «Ответить» находится в самом низу. Пользователю это неудобно, потому что приходится прокручивать всю страницу.
O. Так и задумано. Я хочу, чтобы вы прочли все сообщения, прежде чем отвечать; иначе вы можете написать то, что окажется повторением, или не будет согласовываться с последним постом. Конечно, я не могу физически заставить вас прочесть весь поток, прежде чем принять от вас сообщение, но если поместить ссылку «Ответить» не внизу, а в другом месте, это явно будет способствовать тому, что кто-нибудь разразится своим перлом, не удосужившись прочесть, что было написано до него. Вот поэтому на Slashdot на каждую тему бывает по 500 ответов, из которых интересными окажутся 17, и никто не любит читать дискуссии на Slashdot: это как в классе, когда все дети начинают одновременно выкрикивать один и тот же ответ. («Ха-ха,... Билл Гейтс! Да это оксюморон».)
B. Эта чертова ссылка «Начать новую тему» находится в самом низу...
O.Ну, ответ тот же.
B. Почему вы не показываете автору сообщение, чтобы он мог подтвердить его перед тем, как оно будет опубликовано? Ведь так можно избежать ошибок и опечаток.
O. Опыт показывает, что это не так. Более того, ситуация просто обратная.
Часть первая: если ввести этап подтверждения, большинство пользователей быстро щелкает мышью, чтобы двигаться дальше. Очень немногие внимательно перечитывают свой текст. Если бы они хотели внимательно перечесть свое сообщение, то могли бы сделать это, пока редактировали его, но им уже не интересен их пост, это прошлогодний снег, и они стремятся вперед.
Часть вторая: отсутствие этапа подтверждения заставляет вести себя осторожнее. Это напоминает исследования, показавшие, что на извилистых горных дорогах лучше убирать защитные заграждения, потому что в их отсутствие водители едут осторожнее, и уж во всяком случае хрупкое алюминиевое заграждение не помешает внедорожнику, движущемуся со скоростью 50 миль в час, сорваться со скалы вниз. Статистика показывает, что сильно напуганный водитель на крутом повороте ползет со скоростью 2 мили в час.
B. Почему я не вижу пост, к которому пишу свой комментарий?
O. Потому что вам бы захотелось процитировать его в своем комментарии. Я делаю все возможное, чтобы сократить объем цитирования и в результате сделать общение более живым, а темы более интересными для чтения. Если цитировать предыдущий текст, тому, кто изучает тему, приходится читать одно и то же несколько раз подряд, что бессмысленно и автоматически наводит тоску.
Иногда люди все же пытаются цитировать, потому что они отвечают на пост, к которому уже есть три комментария, или потому, что они буквоеды, и им хочется возразить на целую дюжину отдельных положений. Нельзя сказать, что это нехорошие люди — просто они программисты, а программирование требует, чтобы над всеми i были поставлены точки, — так уж устроен их ум, что не может упустить ни один аргумент, как и проигнорировать ошибку, сгенерированную компилятором. Но будь я проклят, если ОБЛЕГЧУ вам цитирование. Я уже почти нашел способ показывать посты так, чтобы можно было копировать и вставлять их части. Если вам действительно нужно ответить на текст, опубликованный три поста назад, потрудитесь составить приличную фразу типа «Когда Фред сказал то-то, он, вероятно, не учел, что...») и не сорите своими <<<>>>.
B.Почему некоторые посты пропадают?
O.Форум модерируется. Это значит, что несколько человек обладают волшебной силой удаления постов. Если удаляемый пост оказывается первым в потоке, удаляется весь поток, потому что к нему не остается никакого доступа.
B. Но это цензура!
O. Нет, это просто уборка мусора в парке. Если этого не делать, то соотношение сигнал/шум резко упадет. Ведь что пишут — спам и схемы быстрого обогащения, антисемитские комментарии про меня и всякий бред. Идеалистически настроенные юноши могут воображать, что в освобожденном от цензуры мире будет происходить обмен умными мыслями и всеобщий рост IQ, эдакое идеальное Оксфордское дискуссионное сообщество или Ораторский Уголок. Я прагматик и полагаю, что мир, в котором полностью отсутствует цензура, выглядит как ваш почтовый ящик — 80% спама, рекламы и мошенничества, а немногие интересные люди быстро уйдут.
Если вы ищете место, где можно высказаться без модерирования, советую: (а) создать свой форум и (б) сделать его популярным. (Приношу извинения Ларри Уоллу.)
B. Как вы решаете, что удалять?
O. Прежде всего, я решительно удаляю сообщения не по теме или представляющие, по моему мнению, интерес для слишком малого количества людей. Если что-то, пусть даже очень интересное кому-то, не относится к общим темам, обсуждаемым на «Joel on Software», вряд ли это заинтересует большинство посетителей сайта, которые приходят, чтобы узнать что-нибудь о разработке программ.
Раньше я также включал в «офтопик» обсуждение самого форума, его устройства и юзабилити. Причина здесь несколько иная, близкая к тому, чтобы стать еще одной закономерностью. Любой форум, список рассылки, дискуссионная группа или BBS, независимо от условий, каждую неделю-две принимается обсуждать сам себя. Буквально раз в неделю появляется некто со своим списком усовершенствований программного обеспечения форума и требует внедрить их немедленно. Кто-то отвечает: «Послушай, приятель, ты за это не платишь, Джоэл делает нам одолжение, так что катись». Тогда еще кто-нибудь заявляет: «Джоэл же не по доброте душевной этим занимается, он рекламирует Fog Creek». Это ТАААК СКУЧНО, потому что случается КАЖДУЮ НЕДЕЛЮ. Все равно, что говорить о погоде, когда говорить больше не о чем. Какому-нибудь новичку на форуме это может показаться интересным, но отношение к разработке программного обеспечения имеет слабое, поэтому, как говорит Strong Bad (Злой силач), «DELETED». К сожалению, я убедился, что прекратить обсуждение форума — все равно что остановить течение реки, бесполезно и пытаться. Но все же, если читая эту статью, вы захотите обсудить ее на форуме, очень прошу сделать мне большое одолжение и устоять перед этим соблазном.
Мы также удаляем посты, содержащие личные, ad hominem нападки на непубличные фигуры. Пожалуй, нужно пояснить. «Ad hominem» означает атаку на человека, а не на его идеи. Если сказать «это глупая идея, потому что...», то все OK. Но если сказать «ты глуп», то это переход на личность. Злобные, грубые или клеветнические нападки я удаляю. Исключение только одно: поскольку критиковать Джоэла лучше всего на форуме «Joel on Software», злобные или грубые посты, касающиеся Джоэла, не удаляются, но только в тех случаях, когда в них есть хотя бы проблеск полезного аргумента или идеи.
Я автоматически удаляю посты об орфографических или грамматических ошибках автора предыдущего поста. Мы обсуждаем тему интервью, и кто-нибудь норовит прокомментировать: «С таким знанием орфографии у тебя мало шансов найти работу». Крайне скучно обсуждать чьи-то орфографические ошибки. КРАЙНЕ, КРАЙНЕ скучно.
B. Почему бы просто не опубликовать правила, не делая из них загадку?
O.На днях я добирался электричкой из аэропорта Нью-Арк на Манхет-тен. Помимо общего обветшалого состояния я обратил внимание на громадный плакат, который очень строго и подробно объяснял, что если вы нарушите правила поведения, вас высадят на следующей станции и вызовут полицию. Ия подумал, что 99,99999% тех, кто прочел этот плакат, не собираются нарушать правила, а нарушителям глубоко безразлично, что там написано. В итоге этот плакат только вызовет у честных граждан ощущение, что их в чем-то обвиняют, а социопатов не удержит, постоянно напоминая порядочным гражданам Нью-Джерси, что они находятся в Нью-Арке, центре преступности, где в поездах ездят социопаты и делают нехорошие вещи, за что их ссаживают и вызывают полицию.
Однако почти каждый участник форума «Joel on Software» наверняка и сам догадается, что нехорошо публиковать грубые личные выпады, или посылать в форум для программистов посты об изучении французского языка, или критиковать людей за особенности орфографии. А для остальной 0,01% правила не писаны. Поэтому публикация правил только оскорбляет большинство добропорядочных граждан, ничем не сдерживая дебилов, которые считают, что их дерьмо не пахнет и что их посты не нарушают правила.
Если вы обратитесь к возмутителям спокойствия в открытую, все сочтут вас параноиком или возмутятся тем, что их бранят, хотя они не сделали ничего плохого. Это как снова очутиться в школе, когда один дурак разбил окно, а весь класс должен сидеть и слушать суровую лекцию учителя о том, что бить стекла нехорошо. Поэтому, например, запрещены любые публичные дискуссии по поводу причин удаления какого-либо поста.
B. Почему бы вместо удаления постов не ввести такую систему модерирования, при которой участники голосуют за понравившиеся им посты, и можно выбирать для чтения посты, собравшие больше голосов?
O. На самом деле, так работает Slashdot, но готов поспорить, что 50% тех, кто регулярно читает Slashdot, этого не поняли.
Есть три причины, по которым мне не нравится такая система. Первая: усложняется UI, в котором появляется функция, требующая изучения. Вторая: возникает сложная политика, по сравнению с которой Византийская империя выглядит как школьное самоуправление в третьем классе. И третья: если читать Slashdot, настроив фильтры так, чтобы были видны только интересные посты, ход обсуждения становится совершенно непонятным. Вы получаете кучку случайных разрозненных постов, контекст которых отсутствует.
B.Почему бы не ввести систему регистрации, чтобы отсеивать грубиянов?
O. Как я уже объяснял, форум нацелен на то, чтобы отправлять сообщения было легко. (Напоминаю, что программное обеспечение было создано для технической поддержки.) Регистрация приводит к потере не менее 90% людей, которые могли бы послать сообщение, а в сценарии технической поддержки эти 90% станут звонить по моему бесплатному номеру телефона.
Кроме того, не думаю, что регистрация здесь поможет. Если кто-то ведет себя вызывающе, банить его бесполезно, поскольку можно тривиально зарегистрироваться заново. Идея совершенствования сообщества с помощью регистрации не нова, и она уместна, как мне кажется, в конференциях типа Echo/Well, где не только обсуждается тема, но создается сеть участников и берется плата за членство.
Но требование регистрации НЕ повышает качество ведущихся разговоров или среднее качество участников. Если посмотреть внимательнее на соотношение сигнал/шум на форуме «Joel on Software», можно заметить, что самые шумные авторы (то есть те, кто у кого больше всего слов и меньше всего идей) часто оказываются давними и стойкими участниками и заходят на форум каждые десять минут. Эти люди испытывают потребность непременно написать «полностью согласен» и высказаться буквально по каждой теме, даже если ничего нового предложить не могут. И такие зарегистрируются обязательно.
B. Каковы планы на будущее?
O. Развитие программного обеспечения форума не является приоритетной задачей для меня и моей компании: оно вполне пригодно и работоспособно и позволило создать интересное место, где можно обсудить сложные проблемы управления в компьютерной области и узнать мысли ряда умнейших людей. У меня слишком много более важных задач для работы. Пусть кто-то другой сделает очередной крупный шаг вперед в обеспечении юзабилити дискуссионных форумов.
Я только что создал форум «New York City», чтобы проверить, способствуют ли территориальные форумы личному знакомству между людьми помимо знакомства в Сети. По моим наблюдениям, региональные сообщества помогут перейти от простого веб-сайта к реальному обществу, настоящему «третьему месту».
Во всяком случае, создание сообщества — прекрасная цель, потому что очень многие из нас очень нуждаются в нем. Будем и дальше трудиться в этом направлении.

 

Назад: Глава пятнадцатая. Не только юзабилити
Дальше: Часть четвертая. Управление большими проектами