Провести студенческую олимпиаду по программированию: наш опыт

Автор: Владимир Завертайлов, Сибирикс (Генеральный директор)

upload0xldu632sv.png

Так получилось, что в своем регионе и своей отрасли (веб-разработка) наша студия лидирует, вот уже много лет подряд. Это вовсе не для красного словца написано, просто такое положение накладывает определенную ответственность: тем молодым ребятам, которые хотят заниматься вебом, нужно помогать проявить себя.

И вместе с этим есть закономерный практический интерес — когда студия растет, ей становится нужно больше рук и голов, а эти самые ребята могли бы стать ими. Конечно, если захотели бы сами, мы никого не принуждаем.

У нас есть вполне себе трезвое осознание того, что в Барнауле полностью готовых к употреблению специалистов нужного нам уровня — просто нет. Вернее, они есть, но все где-то уже работают. Поэтому один из мотивов провести олимпиаду — выявить свободные светлые умы.

Проблемы Как минимум две главные проблемы мешают вебу как отрасли развиваться:

Первая, глобальная. У тех, кто обучается на ИТ-специальностях зачастую нет нормальных прикладных знаний, данных преподавателями. Очень многие нынешние PHP-разработчики — самоучки.

Вторая, локальная. Называется «проблема редких кадров в маленьком городе». Многие бегут из города, другие — работают в конторках, где сложно раскрыть потенциал, но всё равно остаются сидеть ровно (потому что податься особо некуда).

Теперь — к вытекающим отсюда целям.

Цели Простимулировать отрасль в целом, заставить молодых программистов посмотреть в сторону веба, создать положительный ореол. Найти желающих развиваться в этом направлении, предложить им возможность для получения практических навыков. База К моменту, когда мы для себя решили развернуть активность, которая бы помогла этих целей достигнуть, у нас уже был опыт «выращивания» разработчиков из совсем зеленых и неопытных. Продиктована такая практика была, опять же «проблемой маленького города» — брали новичка, включали его в команду к опытным разработчикам (у нас Scrum), постепенно повышали сложность выдаваемых ему задач.

Идея Из всего целеполагания появилось логичное решение: провести студенческую олимпиаду по веб-программированию. Межуниверситетскую, без жестких требований к участникам — это может быть любой студент или школьник.

Сразу скажу, что олимпиаду уже провели дважды, в 2013-ом и 2014-ом, так что отчет о том, как это делалось будет «сборным» из этих двух опытов.

Итак, что было сделано во время подготовки к олимпиаде:

Мы связались со знакомым прогрессивным преподавателем из госуниверситета (он курирует местный ИТ-центр). Он здорово помогал обойти разные «тонкости» системы образования.

Вместе распланировали, как будем доносить информацию до студентов. Работа с преподавателями, к слову, могла принести как неоценимую пользу, так и изрядный геморрой (как выяснилось, не все преподаватели видят в таких мероприятиях пользу для самих себя и могут запросто стать помехой).

Определились со временем проведения олимпиады: это будет март-апрель. Время сессий и защит еще не подошло, многие определяются с местом практики.

Разработали концепцию олимпиады: будет два тура — заочный (конкурс сайтов, нужно разработать и показать сайт с рассказом о себе) и очный (решение алгоритмических задач на любом привычном языке). Таким образом, сильнейшие выявлялись и по «уму и сообразительности», и по прокачанности именно в веб-разработке.

Придумали название — Hot Code (что забавно, через пару месяцев в Киеве пройдет конференция с аналогичным названием). Сделали листовки для привлечения внимания в стенах универа и запустили промо-сайт олимпиады, с формой регистрации.

Выделили место на своем хостинге для сайтов конкурсантов — всем пожелавшим принять участие выдавали доступы.

Запланировали план публикаций в местных СМИ. Со стороны университета подключилась PR-служба — распространяя информацию об олимпиаде в социальных сетях.

Машина была запущена, первое время нам оставалось только принимать конкурсные сайты (к слову, была пара почти профессиональных, что всех нас порадовало).

Следующий тур — решение задач. Кому интересно, можете порешать, вот один из примеров ;)

Минное поле Плоское игровое поле разделено на смежные ячейки (квадраты), некоторые из которых «заминированы»; количество «заминированных» ячеек известно. Целью игры является открытие всех ячеек, не содержащих мины.

Игрок открывает ячейки, стараясь не открыть ячейку с миной. Открыв ячейку с миной, он проигрывает. Мины расставляются из заранее подготовленного файла. Если под открытой ячейкой мины нет, то в ней появляется число, показывающее, сколько ячеек, соседствующих с только что открытой, «заминировано». Если под соседними ячейками тоже нет мин, то открывается некоторая «не заминированная» область до ячеек, в которых есть цифры. Открыв все «не заминированные» ячейки, игрок выигрывает.

Входной файл [input.txt]

Входной файл в первой строке содержит два числа, M — ширину, N — высоту, через пробел (максимум 50 50). Далее идет M строк. Каждая строка содержит N символов. Символы могут быть 0 (нет мины) и 1 (заминировано).

[output.txt]

5 5       0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 1 Кстати, о призах. Олимпиада, естественно, не на голом энтузиазме:

Кроме материальных ценностей мы предлагали пройти стажировку в студии. Так год назад, в 2013-ом, мы пригласили 8 студентов, из них согласились четверо, из них трое зачислены в штат и работают по сей день.

Вполне оправдывающая ожидания статистика.

Сейчас В данный момент победители 2014-го года награждены, приглашения отправлены — ждем встречи с новыми падаванами. А опыт довольно хороший, если надумаете проводить — уточняйте, что интересно, постараемся подсказать.

И — пачка фоток с ИТ-конвента, где проходило награждение:

Полный текст статьи читайте на CMS Magazine