Шрифт:
Интервал:
Закладка:
Идея была не лишена логики, но Хьюз создавал сайт не только для того, чтобы продвигать начинающих разработчиков. У него были претензии к индустрии программного обеспечения в целом. «Процесс разработки ПО славен тем, что запаздывает по срокам, всегда превышает бюджет и имеет множество ошибок. И эта репутация обоснована: так все оно и обстоит на самом деле». Хьюз решил ввести в эту сферу деятельности дисциплину, контроль качества, более характерные для традиционного товарного производства. В свободное от работы время программисты в компании 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.