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

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

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

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

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

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

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

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

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

Мы связались со знакомым прогрессивным преподавателем из госуниверситета (он курирует местный ИТ-центр). Он здорово помогал обойти разные «тонкости» системы образования. Вместе распланировали, как будем доносить информацию до студентов. Работа с преподавателями, к слову, могла принести как неоценимую пользу, так и изрядный геморрой (как выяснилось, не все преподаватели видят в таких мероприятиях пользу для самих себя и могут запросто стать помехой). Определились со временем проведения олимпиады: это будет март-апрель. Время сессий и защит еще не подошло, многие определяются с местом практики. Разработали концепцию олимпиады: будет два тура — заочный (конкурс сайтов, нужно разработать и показать сайт с рассказом о себе) и очный (решение алгоритмических задач на любом привычном языке). Таким образом, сильнейшие выявлялись и по «уму и сообразительности», и по прокачанности именно в веб-разработке. Придумали название — Hot Code (что забавно, через пару месяцев в Киеве пройдет конференция с аналогичным названием). Сделали листовки для привлечения внимания в стенах универа и запустили промо-сайт олимпиады, с формой регистрации. Выделили место на своем хостинге для сайтов конкурсантов — всем пожелавшим принять участие выдавали доступы.Запланировали план публикаций в местных СМИ. Со стороны университета подключилась PR-служба — распространяя информацию об олимпиаде в социальных сетях. Машина была запущена, первое время нам оставалось только принимать конкурсные сайты (к слову, была пара почти профессиональных, что всех нас порадовало).Следующий тур — решение задач. Кому интересно, можете порешать, вот один из примеров ;)

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

Игрок открывает ячейки, стараясь не открыть ячейку с миной. Открыв ячейку с миной, он проигрывает.

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

Входной файл [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 Кстати, о призах. Олимпиада, естественно, не на голом энтузиазме: d775e1822bafc8fa1a24d07ca088b244.png

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

e31df898eac5e6ea9f775f08af4165ac.png

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

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

© Habrahabr.ru