И 33 богатыря. Наши осваивают Google Code Jam

Сотрудник петербургской компании «Эксперт-Система» (торговая марка для западных рынков Devexperts), основной специализацией которой является написание ПО для финансовых структур, Роман Елизаров стал одним из финалистов международного чемпионата по программированию Google Code Jam 2006. Финал чемпионата, до которого из 20 тыс. подавших заявку на участие дошли 100 человек, состоится 27 октября в Нью-Йорке. Общий призовой фонд составляет в $165 тыс., $10 тыс. из них достанется тому, кто займет первое место. В числе претендентов на него - 33 российских участника.

Компания «Эксперт-Система» (торговая марка для западных рынков Devexperts) была основана в 2002 году. Ее основной сферой деятельности является разработка высокотехнологичных решений в финансовом и банковском секторах. Распределенные системы, создаваемые компанией, в основном направлены на автоматизацию торгов на различных биржах, помощь в принятии бизнес-решений, автоматизацию документооборота и поддержание деятельности фирм-заказчиков. Среди клиентов компании значатся некоторые из ведущих компаний США в области торговли ценными бумагами (Forex, Stocks, Options). В России «Эксперт-Система» разрабатывала проекты для одного из ведущих российских банков ОАО «КИТ Финанс» (ранее ЗАО «Веб-Инвест.Ру»), инвестиционной компании «Витус», ЗАО «Балтийское Финансовое Агентство» (входит в состав инвестиционной группы «ПСБ-Капитал») и др. На данный момент штат компании насчитывает 100 человек.

Координатор проектов Роман Елизаров работает в компании с момента ее основания и сегодня является членом совета директоров. Кроме того, он занимает должность преподавателя Санкт-Петербургского государственного университета информационных технологий, механики и оптики (СПбГУ ИТМО), который окончил в 2000 году. Принимать участие в различных соревнованиях по программированию Роман Елизаров начал, еще учась в университете. Сегодня он занимает пост председателя жюри северо-восточного европейского региона командного чемпионата мира по программированию среди студентов (ACM ICPC - Association for Computing Machinery International Collegiate Programming Contest). В данный регион входит вся Россия и страны ближайшего зарубежья. А летом этого года Роман Елизаров стал бронзовым призером чемпионата и Google Code Jam Europe (см. выпуск новостей от 11 июля 2006 г.). Первый же раз в международном чемпионате Google Code Jam он принял участие в прошлом году, но не прошел отборочные туры, а сегодня он оказался в числе 100 финалистов соревнования.

Международный чемпионат Google Code Jam проводится с 2003 года. Цель мероприятия - выявить лучших программистов, которые могут быть приняты на работу в Google, в подразделение исследований и разработок. Отметим, что чемпионаты серии Google Code Jam построены на основе технологии проведения алгоритмических соревнований компании TopCoder. Последняя представляет собой лигу соревнований по программированию, которая с 2001 года регулярно организует различные чемпионаты, самым крупным из которых является TopCoder Open. Как правило, компания привлекает для спонсорской поддержки такие компании, как Sun Microsystems, IBM, Intel и т.п. По итогам соревнований формируется своеобразный список лучших программистов, чьи кандидатуры могут быть предложены для работы в данных компаниях. В свою очередь Google, также организуя собственные чемпионаты, прежде всего, стремится пополнить свой штат хорошими специалистами. Так, начиная с этого года, помимо международного чемпионата были также проведены региональные: Google Code Jam China, Google Code Jam India (здесь также принимали участие представители Южной Азии) и Google Code Jam Europe. В последнем принимали участие представители стран Европы, Ближнего Востока и Африки, включая Россию и страны СНГ.

Регистрация участников на Google Code Jam 2006 началась 14 августа и завершилась 5 сентября. За это время заявки на участие в соревновании подали свыше 20 тыс. программистов более чем из 100 стран мира. Им предстояло пройти онлайновые квалификацию и два отборочных тура. На квалификацию в связи с большим числом участников было выделено 24 часа, в течение которых претендентам предлагалось выбрать любой удобный час для прохождения испытаний. В рамках данного тура за час необходимо было решить две задачи, которые произвольно выбирались из пять наборов. По результатам в каждой паре заданий выбирались по 200 человек, которые наиболее быстро и правильно решили задачи.

В дальнейшем отборочные туры назначались уже в фиксированное время и проходили по одинаковой схеме, которая заключалось в том, что в течение 75 минут участникам необходимо было решить три задачи. Как правило, это были задания по написанию программ, которые должны была выполнить то или иное действие, например, найти ошибку в предлагаемом алгоритме. В качестве инструментов реализации предлагалось выбрать один из пяти языков программирования: Java, C++, C#, VB.NET и Python. За задачи давалось до 250, 500 и 1 тыс. очков за каждую по мере увеличения ее сложности, также баллы зависели от скорости сдачи работы и присваивались только при условии правильности решения, за решение, которое содержало какую-либо неточность, очки не начислялись. В случае, если после сдачи ответа участник обнаруживал у себя ошибку, а время еще не вышло, он мог направить повторные результаты, за что с него снимался штраф в размере 10 % от итоговой суммы. Впрочем, это было также сопряжено с определенной долей риска, т.к. к рассмотрению принималось только последнее решение, и если первый вариант все же оказывался правильным, это уже не давало никаких бонусов. Также помимо стандартного задания на каждом из туров выделялось 15 минут, в течение которых участник мог найти ошибки в работах своих конкурентов и предложить тестовую программу для проверки их решений. Причем, за правильный результат теста давалось 50 очков, а за неверно найденную ошибку 25 очков снималось.

Число участников по результатам отборочных туров распределилось таким образом, что после прохождения первого испытания оно сократилось вдвое, а во втором туре уже из этих 500 человек в финал вышли 100, набравших наибольшее число баллов. Финалисты представляют 23 страны мира, наибольшее число претендентов на главный приз чемпионата – 33 человека – представляют Россию.

Сам финал состоится 27 октября в Нью-Йорке и будет проходить по такой же схеме, как и отборочные туры, только в офлайновом формате. Призовой фонд чемпионата Google Code Jam 2006 составляет $155 тыс., он будет распределен между всеми финалистами. Так, участники, занявшие места с 51 по 100, получат гарантированные $750, оказавшиеся на местах с 26 по 50 получат уже по $1 тыс., по $2,5 тыс. достанется занявшим места с 11 по 25, по $5 тыс. – со второго по десятое место. Призер чемпионата получит $10 тыс.

Рубрики: ПО, Outsourcing, Кадры, Web