Подготовка студентов к участию в открытых проектах — серьёзная проблема не только в России, но и за рубежом. Хотя, безусловно, там она решается успешней, что позволяет нам не набивать себе уже набитые кем-то шишки, а воспользоваться опытом других. Разумеется, с учётом нашей специфики.
В опубликованном на сайте OpenSource.com интервью своими соображениями на этот счёт делятся два специалиста-практика: Хайди Эллис (Western New England University — частный университет, основанный в 1919 г.) и Грег Хислоп (Drexel University — частный университет, основанный в 1881 г.). Они считают, что начинать следует не со студентов, а с преподавателей, поскольку именно они должны научить студентов всему, что те должны знать и уметь. Что, в свою очередь, является значительно более сложной задачей.
Вероятнее всего, причина этого заключается в исключительном консерватизме образовательной системы, что само по себе не так и плохо, поскольку защищает этот важнейший для общества институт от чрезмерной активности всевозможных реформаторов. Однако всё хорошо в меру. В настоящее время сложилась такая ситуация, что потребности сообществ Open Source уже не могут быть удовлетворены получаемыми большинством студентов знаниями и умениями.
Эллис и Хислоп выделяют несколько наиболее важных навыков, которыми должен обладать выпускник вуза, желающий в дальнейшем участвовать в открытых проектах. Нетрудно заметить, что все они лежат не столько в технической, сколько в гуманитарной плоскости — с умением программировать у студентов особых проблем нет, но участие в реальном проекте предполагает значительно большее.
Прежде всего, студента следует научить самостоятельному обучению. Это включает в себя навыки работы с информацией из самых различных источников, оценки её достоверности и пользы, систематизации её для целей проекта и т. д. Причём важно учитывать, что новые знания не обязательно должны напрямую относится к специализации, полученной в университете — в общем случае она может носить самый разнообразный характер.
Специфика открытых проектов заключается в том, что их участникам часто приходится решать «непрофильные» задачи. Хотя бы первое время, когда популярность продукта не настолько высока, чтобы вокруг него сформировалось большое и разнообразное сообщество. Если человек не может самостоятельно разобраться в каком-то вопросе даже на поверхностном уровне, то ему будет сложно работать над открытыми решениями.
Второй важный навык — умение действовать в команде, постоянно поддерживать связь с другими участниками, самостоятельно решать возникающие в процессе совместной работы проблемы, как технического, так и нетехнического характера. Безусловно, понимание технологий (например, методов контроля версий) также играет не последнюю роль, но если человек плохо ориентируется в профессиональной среде и не может работать в команде, то до непосредственно программирования дело, скорее всего, попросту не дойдёт — он «отсеется» значительно раньше.
Большинство преподавателей предпочитают проекты, которые выполняются на каком-то одном языке программирования или реализуют какую-то конкретную концепцию пользовательского интерфейса. И это разумно, поскольку позволяет студентам совершенствовать свои профессиональные навыки. Остальные не менее важное аспекты деятельности выходят за рамки специализации и им не уделяется должного внимания.
Если смотреть на проблему с практической точки зрения, то единственный способ научиться эффективно работать в открытом проекте — это работать в открытом проекте. Для этого преподавателям следует находить подобные инициативы и привлекать к ним своих студентов, причём желательно, чтобы это происходило в рамках учебной программы.
К сожалению, всё это требует очень много времени, причём положительный результат априори не гарантирован. Преподавателю следует разыскать интересное для его студентов сообщество, установить связь с его участниками, найти среди них человека, имеющего желание и возможность выступить в роли наставника... По сути речь идёт об установлении полноценного контакта с сообществами.
Но тут возникает ещё одно препятствие: несмотря на то, что Open Source вышел из университетской среды, принципы этой модели часто противоречат классической академической культуре. Подобное несоответствие может сыграть решающую роль.
В частности, если одно из основных правил открытой разработки требует частого выпуска релизов, то в академической среде принято долго оттачивать и полировать разработку перед тем, как показать её коллегам. Open Source стремителен и гибок, тогда как в научных кругах лишний год на создание технологии не имеет решительно никакого значения.
Тем не менее, сотрудничество университетов и сообществ позволяет внести в систему образования несколько положительных черт. Вместо того, чтобы ограничиваться знаниями, изложенными в конкретном курсе, студенты смогут свободно удовлетворять собственную любознательность. Вместо придуманных задач из учебника им предстоит решать реальные проблемы, преодолевая связанные с этим сложность и беспорядочность. Вместо одного преподавателя студенты получают целое сообщество наставников.