Преподавательский состав магистерской программы JetBrains и ИТМО «Разработка программного обеспечения» на четверть (!) состоит из выпускников этой же программы. Пожалуй, это хороший повод для гордости. Мы решили сделать большое интервью с ребятами. Возможно, их истории помогут кому-то решиться начать преподавательскую карьеру, а кому-то — поступить к нам на программу.
В первой части наши выпускники и преподаватели –– Владислав Танков, Дмитрий Новожилов, Дмитрий Халанский, Алексей Зубаков, Артем Хорошев, Александр Садовников, Владислав Кораблинов и Роман Голышев — рассказывают о выборе магистратуры, впечатлениях от обучения и отличиях от других программ.
— Почему вы поступили на эту программу? Оправдались ли ожидания?
Влад Т.: Я поступал на программу, ориентируясь на качество обучения в Computer Science центре. Я знал некоторых преподавателей и представлял, что будет, безусловно, сложно, но интересно. Относительно ожиданий — думаю, оправдались. Я узнал много нового, попробовал заняться неизвестными ранее вещами, а продукт, который мы сделали на хакатоне в магистратуре, в итоге стал моей основной работой. Тогда мы за два дня написали штуку, вокруг которой в итоге выросла команда из восьми человек, а продуктом воспользовались несколько миллионов человек.
Дима Х.: Во время учебы в бакалавриате я случайно повстречался с преподававшим у параллельных групп бывшим студентом этой магистратуры — Игорем Жирковым. Он впечатлил меня казавшимся тогда недоступным уровнем всестороннего понимания программирования. Особенно меня поразило, как он оперировал математическими инструментами. А я, надо признаться, в то время был убежден, что математика — это про решение уравнений и неадекватных головоломок в духе «правда ли, что 10 в степени 1999, если от него отнять 1999, делится на 9» и совсем меня не касается.
Это меня так впечатлило, что я решил бросить все силы на обретение этой мощи. Самостоятельное чтение книжек давалось с трудом, и я решил, что надо получить полноценное образование, где меня бы научили математически мыслить, желательно с привязкой к программированию. Я спросил у Игоря, где можно найти что-то подобное, и был готов ехать куда угодно. Каково же было мое удивление, когда Игорь сказал, что никуда ехать не надо: в СПбАУ есть такая учебная программа. (Ранее программа реализовывалась в СПбАУ. — Прим. ред.)
Я увлекаюсь довольно нишевыми вещами, и в этой магистратуре мне удалось найти для себя много познавательного. Здесь каждый найдет что-то по душе. Любите машинное обучение? Пожалуйста! Хотите просто зарабатывать программированием на Java? Для этого здесь тоже все есть, и в довольно интенсивной форме. Компьютерное зрение? Алгоритмы на графах? Интерфейсы для Android-приложений? Сколько хотите. Почти любые связанные с программированием интересы тут поощряются и, скорее всего, вы найдете себе ментора. А если ваши интересы настолько особенные, что связанных с ними специалистов тут нет — есть смысл подумать, а не стать ли первым соответствующим экспертом-преподавателем в этой магистратуре. Некоторые предметы начинали преподаваться именно так.
Дима Н.: Про программу я узнал еще в школе. Я получил внушительный багаж знаний по специальности, а также, благодаря практикам и стажировкам, устроился на замечательную работу.
Леша: Я хотел закрыть пробелы в знаниях и укрепить базу, которую дали в бакалавриате. Искал какое-то хорошее место в области программирования, на тот момент это была чуть ли не единственная адекватная магистратура в Питере. Ожидания полностью оправдались. Я до сих пор иногда переслушиваю некоторые курсы и даже посещаю семинары.
Артем: В бакалавриате я учился на физическом факультете СПбГУ, но со 2-3 курса увлекся программированием. Ближе к выпуску я успел освоить основы разработки на C++ и поработать в одной компании, но у меня было чувство, что я многого не знаю в отличие от ребят, которые учились на программистских специальностях. Пришло время задуматься о магистратуре. Внимательно изучив сайт программы и поинтересовавшись у знакомых, я понял, что это именно то место, где могут дать всю необходимую базу в короткий срок. Я пришел сюда за знаниями и опытом и могу с уверенностью сказать, что получил и то и другое в полном объеме.
Влад К.: Я заканчивал 4-й курс в своем любимом УдГУ и раздумывал, чем заниматься дальше. Друг собрался поступать в физическую магистратуру СПбАУ и позвал меня туда же на информатику. Я справедливо возразил, что это невозможно, потому что туда поступают только минимум «желтенькие» на Codeforces. Он не менее справедливо возразил, что ну и пофиг. Я подумал месяцок и решил отправить заявку. Съездил на собеседование, и меня взяли.
Моим главным стремлением было добавить к теоретическим знаниям практические навыки. Мне это удалось, однако не совсем так, как я ожидал: чаще приходилось учиться чему-то самостоятельно, но у меня появилось понимание, как именно это делать. В итоге, как мне кажется, я все равно отстаю в прикладном плане от многих моих одногруппников. Так я понял, что мне гораздо более интересны теоретические аспекты и что суровая разработка — это не мое.
— Какие впечатления у вас остались от обучения на программе? Стоит ли что-то в ней изменить?
Влад Т.: С одной стороны, было довольно сложно, особенно первый и второй семестр. С другой стороны — крайне увлекательно. Я нашел новых друзей — настоящих единомышленников, увлеченных своим делом, познакомился с новыми областями и просто попробовал что-то новое.
Артем: Только положительные впечатления, особенно запомнился первый семестр. Дело ведь даже не в том, что у студентов данной программы огромное количество заданий и практики (хотя это немаловажная черта программы), а в том, что они получают постоянный фидбек от преподавателей, могут почти в любой момент получить ответ на любой вопрос. В свое время для меня было шоком, что можно просто взять и написать вопрос по теме (и не только) в чат курса с преподавателем и максимально быстро получить ответ.
Саша: Впечатлений много! Наверное, большинство из них связаны с первым курсом. Было очень сложно. Пятичасовой сон, отмененные поездки за границу с друзьями, отсутствие свободного времени — типичные атрибуты жизни студента первого семестра нашей магистратуры! Сейчас, конечно, понимаешь, что это было не зря. Но повторять, если честно, не очень хочется. А вот что хотелось бы повторить — это второй семестр. Там ты уже научился балансировать между учебой и личной жизнью. И прямо ощущаешь себя сверхразумом, который успевает получать от жизни все — и знания, и эмоции.
Иногда казалось, что учеба настолько сложная, потому что есть какие-то организационные затыки: то преподаватель не выложил/не проверил домашку вовремя, то сообщил о контрольной накануне ее проведения. Такие моменты, естественно, хотелось исправить! Как мне кажется, это одна из главных причин, почему так много ребят с моего курса в итоге вызвались стать преподавателями в нашей магистратуре.
Влад К.: За два года впечатления самые разнообразные, но скажу, что такая же крутая учеба в моей жизни была до этого только в ЛМШ. Здесь невероятная атмосфера и люди, после обычного университета ты просто испытываешь эйфорию: а что, так можно было?!.. Но конечно, ничто не бывает идеальным, и изменить можно много чего как глобально, так и по каждому курсу в отдельности. Но это больше вопрос для обсуждения с кураторами, мне кажется.
Рома: Сложность прохождения программы целиком зависит от подготовленности студента. У меня были проблемы с теорией (алгоритмы, дискретка), но при этом сравнительно большой практический опыт программирования, что сильно упрощало прохождение практических курсов (Bash, Python, C++, Java). Думаю, тем, у кого не было предварительной подготовки ни в теории, ни в практике, программа дается значительно труднее. Кажется, это важно учитывать при составлении заданий, чтобы не создавать порочный круг «я не могу даже понять текущее задание (потому что этот материал совершенно новый для меня) <-> я пропущу его и наверстаю потом».
В последнее время я все чаще вспоминаю курс Software Design, на котором нас учили архитектуре, проектированию, шаблонам и так далее. На мой взгляд, этот курс должен занимать чуть более важное место в учебной программе, особенно с точки зрения практики. Студенты должны не только прослушать, какие бывают архитектуры приложений, но и попробовать их использовать, а в идеале ощутить последствия их неправильного использования (например, за счет работы с легаси-кодом). На текущей работе я осознаю, что самый большой пробел в моих навыках — именно в проектировании программ. Возможно, я не одинок, и студентам не помешает более интенсивный курс на эту тему.
— Что, по-вашему, отличает эту программу от других магистратур? Как вы пытаетесь реализовать эти отличия в преподавании?
Дима Х.: На мой взгляд, самое ценное в этой магистратуре то, что здесь многие преподают в качестве хобби, а сами работают непосредственно с тем, чему учат. Сам я тоже работаю, да и программирую для души, так что рассказываю студентам о том, с чем сталкиваюсь постоянно, и стараюсь регулярно привязывать происходящее на занятиях к тому, что можно ожидать при попытках задействовать эти знания в реальности. В конце концов какие-то теоретические изыски забудутся после экзамена, а вот реальный опыт, если его удастся донести, осядет надолго.
Дима Н.: Я бы отметил углубленное изучение сложных тем, отсутствие «воды» в материале. В этой магистратуре действительно учат понимать, что за код ты пишешь, как он работает и зачем это нужно. Я и сам стараюсь следовать этим принципам и, например, при рассказе про какую-нибудь возможность языка не просто показываю, как ею пользоваться, но и объясняю, как она работает под капотом, какие ограничения и возможности имеет. Благодаря этому студенты гораздо лучше понимают суть программ и языковых конструкций, а не просто относятся к ним, как к какой-то магии.
Леша: Я думаю, основное отличие в соучастии и компетентности. У нас есть специальные люди — кураторы, которые сопровождают студентов в процессе обучения: помогают решать проблемы, готовят к защите диплома, по многу раз выслушивая докладчиков, регулярно встречаются со студентами (сейчас через Zoom), чтобы собрать обратную связь, и делают еще много всего, что сильно упрощает жизнь студентам и преподавателям — все могут сосредоточиться на процессе обучения и не думать о лишнем.
Саша: Нашу программу отличает системность. Ты знаешь, что каждую неделю почти по каждому предмету у тебя будет домашка. Ее надо сделать вовремя, чтобы преподаватель проверил все к следующей паре. Не сделал домашку вовремя — недополучил баллы и знания. И так домашка за домашкой! Такой подход хорош тем, что знания с лекций подкрепляются достаточным количеством практического материала и, соответственно, лучше усваиваются. По себе могу сказать: если не потрогать материал с лекции руками, в голове он не отложится.
Я как преподаватель стараюсь сделать так, чтобы студенты не выбивались из ритма домашка-лекция-домашка и им ничего не мешало эти домашки делать: проверяю работы в срок, объективно их оцениваю и оперативно отвечаю на вопросы студентов по условиям задач.
Влад К.: В нашей магистратуре довольно молодые преподаватели! Учиться здесь очень сложно, поэтому я стараюсь создавать для студентов максимально комфортную обстановку, чтобы они не чувствовали себя беспомощно и не боялись активно участвовать в процессе. Я довольно много общаюсь с ребятами, пытаюсь им помогать и направлять в нужную сторону, когда им это необходимо. Ну и сам стиль общения у нас довольно неформальный, что тоже должно помогать. Правда, до обмена мемами конкретно с этими ребятами еще не дошло.
Одним из существенных отличий в нашей учебе мне видится стремление преподавателей действительно научить студентов своему предмету (абсурдно, конечно, что мало где так). Наверное, ребята меня недолюбливают за то, что я часто придираюсь к их решениям и прошу многие моменты подробно прописывать. Но эти придирки служат вполне конкретной цели. Так, в курсе дискретной математики мне важно, чтобы студенты научились грамотно использовать логические рассуждения, не принимали на веру кажущиеся очевидными факты, а выводили их из определений/аксиом.
В случае с алгоритмами ситуация даже более жизненная: на работе нам почти всегда приходится трудиться в командах, поэтому при решении задачи необходимо не просто придумать идею, а объяснить ее товарищам и уметь доказать корректность. Если вы не сможете этого сделать, то здоровый скепсис заставит ваших коллег просто отбросить эту идею, даже если она на самом деле золотая. Поэтому я требую доводить решения до состояния, когда мне точно все в нем понятно. Если я его не понимаю даже зная правильное, другой человек тем более ничего не поймет.
Рома: Мне кажется, что в этой программе принципиально другой уровень отношений между студентами и преподавателем. Когда я учился в бакалавриате, многие преподаватели были в каком-то смысле недосягаемы для меня — я никогда не рассчитывал оказаться с ними на одном уровне. Между нами были строго деловые учебные отношения: преподавателю нужно закрыть ведомость, студенту нужно закрыть сессию.
В нашей магистратуре эта граница сильно размыта. Большинство преподавателей работают в продакшене, т.е. когда они не учат программировать, они сами программируют. Это значит, что студенты через несколько лет могут оказаться с ними в одной команде. Это, на мой взгляд, сильно повышает ставки с обеих сторон.
Студент понимает, что его учитель — не просто теоретик, который за всю жизнь не написал ни строчки кода, а реальный программист, который пишет код каждый день и зарабатывает этим на жизнь. Поэтому такого человека имеет смысл слушать. А преподаватель понимает, что перед ним его потенциальные сокомандники. И если есть место, в котором он может повысить базовую квалификацию программистов-джуниоров, то оно — здесь.
Поэтому я старался взаимодействовать со своими студентами так, будто они мои сокомандники. Мы общались на ты, я не пытался выстроить образ непогрешимого авторитета в их глазах, поскольку на работе это скорее будет минусом, чем плюсом. Я просил их не стесняться задавать вопросы, но при этом стараться как можно больше искать самостоятельно — ведь именно таких коллег я хотел бы иметь в своей команде.
В общем, тот факт, что однажды твой студент может прийти к тебе на стажировку или на собеседование и потом будет с тобой работать (а может, и руководить тобой), заставляет взглянуть на ситуацию иначе. Вряд ли преподаватель математики в вузе, натягивающий тройку ленивому студенту, переживает, что этот студент через пару лет вернется в университет и начнет плохо учить других студентов. А в нашей магистратуре это вполне реалистичный сценарий. :)