Сообщество в действии
Сообщество в действии
Джек Хьюз совсем не похож на революционера. Невысокого роста, плотного телосложения, чрезмерно серьезный и настолько аккуратно причесанный, что даже морские пехотинцы посчитали бы подобный стиль чересчур строгим. В 1985 г., через год после окончания Бостонского колледжа, Хьюз организовал компьютерную фирму Tallan. Пятнадцать лет спустя у него уже работало более 600 человек, а сам он не помнил, когда в последний раз брал отпуск. В марте 2000 г. он позвонил в одну из компаний, которая давно интересовалась его бизнесом, с предложением продать им Tallan за $920 млн.
И даже после этого Хьюз не взял отпуск. В пятницу, в мае Хьюз в последний раз вышел из офиса Tallan. А уже в понедельник вошел в новый офис, который арендовал для своего нового предприятия – TopCoder. Идея Хьюза заключалась в создании сайта, на котором программисты могли бы соревноваться за денежный приз. Конкурсы будут проходить при спонсорской поддержке крупных технологических компаний – Intel, Google, Microsoft, которые используют сайт для выявления наиболее талантливых молодых программистов.
Идея была не лишена логики, но Хьюз создавал сайт не только для того, чтобы продвигать начинающих разработчиков. У него были претензии к индустрии программного обеспечения в целом. «Процесс разработки ПО славен тем, что запаздывает по срокам, всегда превышает бюджет и имеет множество ошибок. И эта репутация обоснована: так все оно и обстоит на самом деле». Хьюз решил ввести в эту сферу деятельности дисциплину, контроль качества, более характерные для традиционного товарного производства. В свободное от работы время программисты в компании Tallan соревновались друг с другом в неофициальных конкурсах. И Хьюз заметил, что итоговые коды получались лучше, чем те, за написание которых они получали зарплату. «Почему бы не дать им возможность конкурировать друг с другом все время?» – подумал Хьюз.
Он не стал изобретать велосипед, компания позаимствовала схему соревнований у Национальной атлетической ассоциации колледжей (NCAA) и адаптировала ее к «матчам» среди программистов. Участникам соревнований было предложено разработать алгоритм для решения простой задачи, например для поиска самого быстрого маршрута через лабиринт или наиболее эффективный ряд ходов в шахматной партии. Решение необходимо было сдать в течение одного часа, оно выставлялось на сайт. Это давало программистам возможность «бросить друг другу вызов», взломав созданные соперниками алгоритмы. Если участникам удавалось пройти этот сложный раунд, тогда уже «команда» TopCoder старалась найти слабые места в предложенном решении, так сказать, проверить его на прочность. Победителем становился любой, кому удавалось успешно пройти всю серию испытаний. Участники получали на сайте свои «персональные» карты, на которые им начислялось определенное количество баллов. «Существует множество областей человеческой деятельности, где талант получает вознаграждение именно в контексте состязаний. Мы просто поместили программирование в рамки этого контекста». Но Хьюз имел в виду не только регулярные соревнования. Хотя он никогда не слышал о Йохае Бенклере, но уже собирался внедрить его идеи в жизнь.
Постепенно среди сообществ программистов распространился слух о том, что появился веб-сайт, на котором каждую неделю проводятся конкурсы. Призовой фонд не был впечатляющим, зато участие в еженедельных соревнованиях могло стать интересным времяпрепровождением, а если получить большое количество баллов, то есть вероятность заключения крупного контракта с такой компанией, как, например, Google. Для молодых программистов, у которых денег было меньше, чем свободного времени, идея показалась привлекательной. Медленно, но верно популярность TopCoder начала расти.
Хьюз же хотел, чтобы TopCoder делала нечто большее, чем просто управляла конкурсами. Даже с учетом того, что TopCoder находилась в ранней стадии своего развития, Хьюз понимал, что, организовав достаточно крупное сообществе, он сможет использовать его энергию на разработку настоящего программного продукта для реальных клиентов. Разработки эти будут по-прежнему иметь форму дружеских соревнований, за исключением того, что работа, выполненная победителями, будет скомпилирована в более крупную часть программного обеспечения, уже для компаний из списка Fortune 1000. К 2003 г. еженедельные матчи, проводившиеся TopCoder, постоянно просматривали около 7000 программистов. Около 20 % из них периодически становились победителями; около 5 % – зарождающаяся элита TopCoder – побеждали постоянно. Запустив двигатель краудсорсинга на полную мощность, Хьюз почувствовал, что пришло время испытать сообщество в реальном деле.
Но до того как TopCoder обратится к клиентам со своей необычной моделью разработки программного обеспечения, Хьюзу и его сотрудникам нужно было продумать метод разбиения задач на мельчайшие дискретные компоненты. «Мы с момента основания компании знали, что нам нужно будет разбивать крупные задачи на более мелкие, четко структурированные фрагменты», – говорит Хьюз. TopCoder отбирала программы, которые при обычном раскладе можно было разбить на сотню компонентов, и продумывала варианты, как их разбить на тысячу мелких задач. «Идея заключалась в том, что чем меньше “рабочий блок”, тем больше вариантов его последующего использования», – говорит Майкл Моррис, начальник отдела программного обеспечения TopCoder. Это казалось выгодным по многим соображениям. Во-первых, работа оказывается приспособленной к «свободному циклу» человека. А во-вторых, подход TopCoder увеличил скорость и эффективность работы. «Если бы у нас над проектом работало пять разработчиков, у них никогда не оставалось бы времени для использования модульной организации заданий, – говорит Моррис. – Им нужно было бы сначала закончить одно задание и только затем приниматься за другое. Теперь же у нас имеется неопределенное количество людей, одновременно работающих над одним заданием. Чем больше фрагментов мы получим в процессе разбиения, тем быстрее будет выполнена вся работа».
Хьюз и его компания полностью следовали сценарию краудсорсинга, за исключением того, что, конечно, ничего подобного в то время не существовало. В 2003 г. TopCoder была, по существу, единственной в своем роде компанией, использующей модель, которую Хьюз назвал «конкурентным сотрудничеством». На исправление ошибок потребовалось несколько лет. «Тогда не было краудсорсинга. Никакой мудрости “толпы”. Мы не применяли теорию, мы сами были научным экспериментом», – говорит Хьюз.
К началу 2006 г. TopCoder установила деловые отношения с несколькими клиентами и систематизировала процессы разработки. «Это был переломный момент. У нас было около 70 000 программистов, и мы посчитали, что этого достаточно для написания компьютерного кода в производственном масштабе, – говорит Хьюз. – Пожалуй, у нас были лучшие молодые программисты мира, конкурирующие друг с другом». Примерно тогда же Шри Котай, старший вицепрезидент компании AOL, отвечавший за разработку программного обеспечения, позвонил в TopCoder, чтобы договориться о встрече. «Парадокс заключался в том, что он даже не знал, что мы разрабатываем программное обеспечение, – вспоминает Моррис. – Котай просто хотел поговорить с нами об участии в некоторых соревнованиях». Вместо этого Моррис предложил Котаю, чтобы AOL использовал TopCoder для разработки нового программного обеспечения для компании. И показал ему, как проходят соревнования в режиме реального времени на сайте TopCoder. «Это не просто состязания, – сказал он Котаю. – Это будущие разработки программного обеспечения». Вскоре несколько сотрудников Котая уже сидели в офисе и слушали Морриса, рассказывавшего о модели, используемой TopCoder. В общем, все решил случай. «Когда-то давно Котай сам работал программистом, он понимал всю важность качественного кода». Вскоре после этой встречи AOL поручил TopCoder написать три программы: усовершенствовать систему электронной почты AOL, систему синдикации контента и программу для амбициозной серверной системы, которая позволила бы приложению интернет-пейджера корректно работать с другими IM-клиентами, такими как Google Talk и Yahoo Messenger.
Последнее задание стало самым серьезным тестом для TopCoder. Для начала Моррис назначил ответственного разработчика программного обеспечения и руководителя проекта. Это были единственные сотрудники TopCoder, занятые в проекте. Все остальное сделало сообщество. «Они разбили программу мгновенного обмена сообщениями на пятьдесят два компонента. Оказалось, что сообщество уже разработало часть компонентов. Если представить себе, что речь идет о кубиках Lego, из которых уже собирались другие фигурки, то оказалось, что двадцать два кубика к этому времени у нас уже были. Оставалось лишь собрать их в единое целое»47.
Требовалось сконструировать, согласовать и протестировать оставшиеся тридцать компонентов. Это очень скрупулезный процесс, каждый этап которого передавался в краудсорсинг. TopCoder продолжал придерживаться формата соревнований. Сначала участники сообщества соревновались за разработку лучшего алгоритма. При этом участники самостоятельно определяли, какое задание они будут выполнять, исходя из собственного представления о своей квалификации. «У членов нашего сообщества широкий спектр знаний и навыков, – говорит Моррис. – И каждый, как правило, знает, на что он способен». Участники сдавали свои работы на лучший алгоритм, после чего для оценки каждой работы TopCoder назначал экспертную комиссию. «Мы назначали экспертов исходя из их квалификации. А сам отбор шел по принципу “живой очереди”». Определившись с лучшим алгоритмом, его снова выкладывали на сайт для проведения следующего конкурса. Теперь конкурсанты из «толпы» должны были его закодировать. После этого выбирался код-победитель. И наконец, проводились еще два конкурса – один, направленный на сборку всех компонентов, а другой – на то, чтобы определить лучший командный файл, который будет управлять всей программой на каждом этапе ее работы. «Мы разрешаем участникам соревнований формировать команды.
Каждая из них будет делать все от нее зависящее, чтобы взломать программу». По сценарию программу следовало обкатать с позиции пользователя: «делать все, например, добавлять в список друзей, запускать групповой чат, устанавливать защищенный канал связи». Наконец, TopCoder определился с окончательным вариантом программы, сертифицировал ее и передал клиенту. Сообщество не только выполнило основную работу, оно также взяло на себя ответственность за контроль качества.
Компания AOL осталась настолько довольна результатами работы, что после этого отдала на разработку TopCoder около десятка других программ. «Они нас любят», – говорит Майкл Моррис. И тому есть причина. Программы TopCoder в среднем насчитывают 0,98 ошибки на тысячу строк кода. «Промышленный стандарт – шесть ошибок, – отмечает с гордостью Моррис. – Традиционная фирма может назначить шесть или семь разработчиков для выполнения подобного проекта, и это займет больше года. А нам потребовалось чуть больше пяти месяцев».
Данный текст является ознакомительным фрагментом.