Pull to refresh
133.65
Контур
Делаем сервисы для бизнеса

Искусственный отбор

Reading time 5 min
Views 12K


Всем привет! Нас зовут Ирина (слева) и Женя (справа).

Наши две головы как минимум 15 часов в сутки заняты «Образовательными программами СКБ Контур». Один из любимых проектов, который мы реализуем второй год, — организация IT-школ CSEDays. Участие в таких школах бесплатное, это некоммерческий проект. И есть один дискуссионный вопрос, который мы бы хотели обсудить.

Сперва немного расскажем, что это вообще за школы. Школы CSEDays (Computer Science Days) — это неформальные встречи студентов, сотрудников IT-компаний и преподавателей, «больных» какой-то определенной темой. В течение трех дней участниками обсуждается «диагноз». Сперва — доклады, после — свободное общение. Всего у нас уже было две таких тусовки: первая, когда мы не очень-то заморачивались придумыванием конкретной темы, — «Общие вопросы Computer Science» (в марте 2010) и вторая — «Надежность программного обеспечения» (в ноябре 2010).

Совсем скоро, уже в апреле 2011, будет школа по теме «Компьютерная безопасность и криптография». Третья по счету.

И вроде бы всё у нас в целом гуд: и докладчики интересные из университетов и IT-компаний находятся, и спонсоры есть, и заявки из разных городов поступают. Но вот уже третий раз перед нами встает очень важный вопрос: как искать и отбирать ТЕХ САМЫХ участников, которые смогут раскрыться в атмосфере живого общения и сделать нормальный вклад в общий драйв?

Об этом, собственно, и пойдет разговор. Хотим рассказать о своем опыте отбора участников для школы CSEDays и спросить у хабражителей, верной ли дорогой идем, те ли вопросы задаем при отборе (обычно рассматриваем письменные заявки) и вообще, как и где лучше искать «своих» ребят.

От простейших до… нормальных?

Когда мы организовывали самую первую школу по общим вопросам компьютерных наук, к отбору подошли просто. Сделали элементарную форму заявки: фамилия/имя, контакты и один-единственный открытый вопрос «А почему именно вы должны принять участие в IT-школе?». Сначала было непонятно, кто вообще откликнется и удастся ли собрать компанию тех, кто в теме. Удалось! Среди ответов были весьма внятные, указывающие на прямой интерес к обсуждаемым темам, как например:
«В дальнейшем собираюсь заниматься классификацией изображений. Очень интересно послушать Антона Конушина по семантической классификации».
или
«Интересуюсь последними веяниями в сфере IT и CS, интересно послушать именно про российский опыт/исследования. Являюсь приятным собеседником и могу много рассказать (в частности про Java/OSGi) в кулуарах».
Но некоторых этот вопрос явно смущал. К примеру, нам поступил ответный вопрос:
«А почему именно Вас посадили разбирать эти заявки? ;-)»
или лаконичная просьба:
«Пожалуйста!»
На «пожалуйста» решили не реагировать. В итоге на первую школу, которая была весной 2010 года, к нам пришло около 70 заявок, пригласили 50 человек, 20 из 50 дали гранты на проживание и питание (все это дело проходило на базе отдыха). Все прошло круто!

Настолько круто, что осенью 2010 мы решили провести вторую школу, уже на более конкретную тему «Надежность программного обеспечения». Вопрос «Почему именно вы должны поехать?» решили оставить.

О чудо! В отличие от первого раза нам стали приходить целые внятные сочинения, позволяющие выделить «наших людей»:
«Использование “традиционных” подходов при разработке интерфейсов web-сервисов с богатым функционалом достаточно сильно замедляет разработку и доставляет множество неудобств разработчикам как серверной, так и клиентской частей. Причин множество: необходимость copy-paste разметки страниц и стилей их отображения; дублирование серверного кода клиентским; необходимость поддержки кроссбраузерности; мнимая связь между поведением интерфейса и его отображением; мнимая связь между клиентской и серверной частью; сложность тестирования и обеспечения надёжности. Существует множество как мелких решений, направленных на устранение каких-то отдельных недостатков (например: SASS, LESS для добавления логики в CSS, ASP.NET Code Behind для “реальной” связи клиента с сервером, ASP.NET UserControls для reuse разметки), так и полновесных решений (GWT на Java, Cappuccino на ObjectiveJ, SproutCore на Ruby).
При разработке мне постоянно приходится сталкиваться с подобными проблемами и мне бы очень хотелось разработать решение на C#.Мне бы хотелось заняться этим не только из-за того, что в этом есть реальная необходимость, но и потому, что это было бы отличным опытом. Я осознаю то множество проблем, которые придётся решить при этом и самая главная из них — это обеспечить надёжность работы такой системы. Поэтому мне очень необходима информация, которая будет представлена в рамках школы».
И таких развернутых ответов было много! Но если на этом вопросе во второй раз мы «выехали», то провалились на другом, новом. Когда мы продумывали, как лучше отбирать участников, возникла идея — а не проверить ли «жаждущих» сразу в деле? Один из наших партнеров — Microsoft Research — дал нам такую возможность, предоставив доступ к проекту DOM API Testing. Мы сказали потенциальным «школьникам»: «Вот вам, пожалуйста, код. Потестите?» Задача оказалась не по зубам. То ли ее было лень кусать, то ли зубы не крепкие, но из 130 заявок только 8 содержали в себе графу о том, что человек что-то как-то делал в этом коде. Пришлось смотреть на любимый вопрос «почему вы» и выбирать 50 субъективно достойных.

Кстати, выбирали не мы вдвоем.;) У нас есть небольшой оргкомитет из сотрудников УрГУ, СКБ Контур, Яндекс, Microsoft Research и добровольца — Леонида Волкова. Но координационный центр всей этой движухи — в четырех наших хрупких руках и двух чутких сердцах. :)

Три — на счастье

А вот в третий раз, для школы по инфобезопасности и криптографии, которая пройдет в апреле 2011, мы придумали новый ход, отказавшись от горячо любимого вопроса. Предложили участникам решить 3 задачки «по теме», составил их Илья Миронов из Microsoft (кстати, в апреле он будет одним из докладчиков). Одна очень простая, две немного посложнее. Написали их так, чтобы можно было просто «копировать-вставить-унести с собой». Вот эти задачки:

Задача 1.
Что находит следующий фрагмент кода?
int f(int x); // функция f определена в другом месте программы
typedef pair <int, int> Pair;
stack<Pair> s;
int n = 0;
int x = 0;
s.push(Pair(x, n));
for(;;)
{
    x = f(x); n++;
    while(!s.empty() && s.top().first < x)
        s.pop();
    if(!s.empty() && s.top().first == x)
        return n - s.top().second;
    s.push(Pair(x, n));
}

Задача 2.
Предположим, что функция f есть случайная функция, отображающая интервал [0..N-1] в себя.
Оцените среднее время работы кода из предыдущего пункта и его требование к памяти.

Задача 3.
Покажите, что если задача нахождения коллизий в функции f(x) = g^x mod N,
где g — генератор группы квадратичных вычетов по модулю N, а N — произведение двух простых чисел,
решается за полиномиальное время от длины N, то задача разложения числа N на простые сомножители также решается за полиномиальное время.

И вот сели мы вечером 15 марта и задумались: а так ли мы ищем «своих»…

Послесловие

Чего хотят от участников другие IT-школы? Немного помониторили.
MIDAS — полное резюме + рекомендация от факультета + научная работа (курсовая, диплом).
RuSSIR 2010 — заявка о себе + рекомендация + дополнительным шансом на участие в школе было участие в Конференции молодых ученых.

В общем-то, опять же классика жанра. А наша тусовка — не совсем классика, поэтому и озадачились вопросом: как лучше искать и нормально ли мы это делаем сейчас?

P.S. Кстати, если вдруг захотите принять участие в школе «Информационная безопасность и криптография» (пройдет 14-17 апреля в Екатеринбурге), заявки принимаются до 24 марта.
Подробности на сайте CSEDays.

Эти люди выдержали искусственный отбор! Кстати, заявки от девушек проходят по отдельному конкурсу ;).
Tags:
Hubs:
+15
Comments 25
Comments Comments 25

Articles

Information

Website
tech.kontur.ru
Registered
Founded
Employees
5,001–10,000 employees
Location
Россия