И если корпоративная ИТ-служба желает получить в свое распоряжение объективно лучших поставщиков услуг Web-дизайна и проектирования приложений, которые выполняют все требования, предъявляемые к программным системам, строго соблюдают определенные заказчиком параметры и исключают наличие в коде уязвимых мест, открывающих лазейки для проникновения злоумышленников, -- наверное, имеет смысл обратиться к проверенному временем методу - устроить конкурс.
Именно эта идея и положена в основу проекты TopCoder, объединяющего 100 тыс. разработчиков из самых разных стран мира. Интересующие клиентов системы разбиваются на четко определенные, управляемые компоненты, за успешное завершение каждого компонента присуждается денежная премия. Одержать верх в соревновании мечтают десятки или даже сотни претендентов. Члены жюри из числа разработчиков и клиентов оценивают предложенные варианты и выдают подробное заключение. В результате компонент-победитель объективно является лучшим из того, что вы можете получить за свои деньги.
Размеры денежной премии, присуждаемой за каждый конкретный компонент приложения, могут меняться в достаточно широких пределах и составлять от нескольких сотен до 60 тыс. долл., как это было в отборочных раундах ежегодного конкурса TopCoder Open. Участник, занявший второе место, получил 30 тыс. долл. Последующие места оценивались соответственно в 20, 12 и 8 тыс. долл. (Иногда премиальные суммы увеличиваются для того, чтобы привлечь лучших программистов, но в общем случае для создания достаточно простых компонентов не требуется участия "рок-звезд".)
Программный код оценивается не только из эстетических соображений или исходя из его технического совершенства. В финале проводится получасовое состязание, в ходе которого каждый из разработчиков пытается бросить вызов своим соперникам. Найдя слабые места в их решениях, он зарабатывает дополнительные очки. Если же его попытка завершится неудачей, очки снимаются. Таким образом, за последние десять минут конкурса, который обычно продолжается несколько недель, список победителей может полностью измениться.
Корпоративным клиентам проводить конкурс в полном объеме, как правило, нет необходимости. Поскольку акцент делается на создании приложений на основе повторно используемых компонентов, каждый завершенный компонент в итоге попадает в библиотеку компании. Клиент, инициирующий "заказную" разработку, может обнаружить, что компоненты, которые нужны для выполнения процедуры регистрации и аутентификации, уже были созданы на предыдущих конкурсах (и поэтому, скорее всего, обойдутся дешевле). А в программу очередного конкурса включаются только компоненты, требующие высококвалифицированной работы.
К услугам TopCoder часто прибегает фармацевтический гигант Lilly Research Laboratories. Эта компания использует ресурсы TopCoder для разработки нужных ей сервисов и в качестве источника кадров. Руководитель ИТ-службы направления токсикологии и применения лекарств Эверетт Ли, отвечающий за интеграцию ИТ-систем в процессе научно-исследовательской работы, считает, что представителям бизнеса вовсе не обязательно передавать TopCoder весь свой крупный проект. Ресурсы сообщества можно использовать и в меньших масштабах. "Давайте проведем аналогию с водопроводным краном, -- пояснил Ли. -- Чаще всего вы делаете так, чтобы вода сочилась тонкой струйкой, но при необходимости можете открыть кран и на полную мощность".
Конечно, речь здесь идет об аутсорсинге разработки, при этом в основу этого аутсорсинга положено качество, а не преимущества географического положения.
Пока разработчик TopCoder не заработает определенного количества баллов и не достигнет достаточно высокого уровня, когда у него появится возможность участвовать в открытом конкурсе, он известен в сообществе только по своему псевдониму. (На самом деле внутри TopCoder информация о реальных именах и координатах присутствует, но она не распространяется публично.)
Таким образом, если конкурс по созданию компонента выиграл какой-нибудь "tomek", вы не знаете, живет ли он через улицу от штаб-квартиры вашей компании в Нью-Джерси или где-то в Польше или Австралии. (В конечном итоге выяснилось, что "tomek" -- это поляк Томаш Кульчински, трехкратный победитель конкурса TopCoder, и работает он теперь в корпорации Google в Калифорнии. Члены сообщества TopCoder, набирающие высокие баллы, весьма востребованы на рынке труда.) Известно лишь то, что за свои деньги вы получаете наилучший код из возможных.
Практика показывает, что большинство из 120 финалистов конкурса TopCoder Open (обычно порядка 80%) проживают за пределами Северной Америки. Я обсуждал этот вопрос с несколькими участниками сообщества TopCoder и спонсорами мероприятия (к которым относятся компании Lilly, British Telecom, AOL, Verisign и Агентство национальной безопасности США). Хотя большая часть членов сообщества TopCoder находится на территории США и Канады, немаловажную роль играет уровень жизни. Если для американского программиста премии в тысячу долларов хватит только на карманные расходы, то для жителя острова Ява, это уже месячная зарплата. Несомненно, такое положение дел влияет на мотивацию.
Вместе с тем состязания TopCoder в чем-то похожи на эстрадный конкурс молодых талантов American Idol. У многих разработчиков просто нет другого способа привлечь ваше внимание. А демонстрируя свои выдающиеся способности, они вполне могут доказать справедливость своих притязаний на звание звезды.