Публикации и ответы на комментарии в блогах JetBrains не выходят на русском языке с 2022 года.
Приносим извинения за неудобства.
«Нужно больше умных людей. Не только для нас, а вообще»
Этим летом Новосибирск посетил старший вице-президент по инвестициям, исследованиям и образовательным проектам компании JetBrains АНДРЕЙ ИВАНОВ. Об итогах встречи со студентами и преподавателями НГУ, состоянии образования в целом, планах на будущее развитие компании в Сибири он рассказал в интервью «Континенту Сибирь»
Чем отличается «условно-капиталистический» подход к образованию от «условно-социалистического»? В первом случае «учитель» готов работать с каждым, кто готов заплатить (а зачем эти знания нужны – пусть решает сам ученик). Во втором — «учитель» сам выбирает ученика (пусть всего одного, а не сотню), но потом ведет его за руку до самого финиша. В первом случае задача «учителя» – продать свои знания и время, получив прибыль и, в качестве бонуса, хорошую репутацию, во втором главный приз — ценные кадры «собственного изготовления». Пример первого подхода «КС» уже приводил некоторое время назад, в его пользу высказывался сооснователь компании Skyeng Александр Ларьяновский. Теперь настала очередь второго подхода.
Компания JetBrains была учреждена в 2000 году программистами Сергеем Дмитриевым, Евгением Беляевым и Валентином Кипятковым, которые ранее уже работали вместе несколько лет в компании TogetherSoft. Основатели новой компании не были довольны средствами разработки, доступными в то время, поэтому решили создать принципиально новые инструменты самостоятельно. Первым продуктом стал Renamer — небольшая программа, которая позволяла делать простой рефакторинг в программах на Java. Вторым — CodeSearch, плагин к JBuilder, быстро находивший все использования заданного метода или класса в программе. Третьим продуктом стала полноценная среда разработки — IntelliJ IDEA.
Основное занятие JetBrains — выпуск профессиональных средств разработки, способствующих продуктивности работы программистов.
В 2000 году у JetBrains было всего два офиса — центральный в Праге и филиал в Санкт-Петербурге. Сегодня представительства компании работают также в Бостоне, Москве, Мюнхене и Новосибирске.
— Андрей, вы уже не в первый раз приезжаете в Новосибирск. Какое впечатление в этот приезд оставил у вас город, Академгородок, вузы, студенты?
— Академгородок прекрасен, как всегда. Я действительно приезжаю сюда далеко не в первый раз и люблю здесь бывать. Новое здание НГУ, на мой взгляд, получилось очень красивое. Что касается студентов, они — разные, я два полных дня присутствовал на магистерских защитах, прослушал чуть меньше сорока работ. Очень разного уровня работы. Были и сильные, хорошие, которые в любом вузе заслужили бы отличную оценку, а другие, откровенно говоря, были достаточно слабыми. Здесь все зависит как от самого студента, так и от постановки задачи научным руководителем – смог ли он помочь студенту по-настоящему раскрыть себя.
— JetBrains всегда активно сотрудничала с вузами – расскажите о вашем совместном проекте с НГУ, ваш приезд связан с обсуждением планов или текущих задач?
— Мой текущий приезд в первую очередь связан с участием в работе ГЭК на защитах магистерских диссертаций. Я в JetBrains в принципе отвечаю за сотрудничество с вузами, мое участие в защите — тоже часть этого сотрудничества. Сейчас к вузам есть такое требование: включать в работу со студентами представителей индустрии. Вот они и включают. Я лично стараюсь присутствовать на защите дипломных работ, чтобы понимать, что нужно ожидать от университетов. Вторая цель моего визита – подведение итогов первого года работы Computer Science Center, нашего совместного с «Яндексом» проекта.
— И как бы вы оценили итоги этого года?
— Год прошел хорошо, поставленных задач мы достигли, но у нас была определенная фора — мы не начинали с чистого листа. «Яндекс» уже некоторое время назад запустил в Академгородке филиал Школы анализа данных (ШАД). Мы дополнили программу «Яндекса» своими темами — функциональным программированием, языками программирования и так далее. К примеру, раньше в ШАДе не обучали языку Java, теперь он есть. Ну и Kotlin, само собой. Результатами я доволен, отзывами студентов тоже. Также мы добавили в учебную программу больше практических проектов, студенты сами программируют под руководством сотрудников обеих компаний. Представителей JetBrains в новосибирском филиале CS центра пока не очень много, не все студенты еще успели о нас узнать, но это, повторюсь, только первый год. В Санкт-Петербурге CSC работает дольше и там у нас летняя практика — массовое явление, в которой хотят участвовать сотни учащихся. И здесь, я надеюсь, со временем будет так же. Студенты к нам приходят самые разные, год назад, когда открывался новосибирский CSC, я сам проводил собеседования: сначала давалось пробное задание, которое они должны были решить, потом – разговор по душам. Уровень знаний и умений очень разный, но среди студентов есть сильные в плане учебы, с ними приятно работать и учить чему-то.
— У вас очень жесткий отбор учащихся…
— Жесткий отбор — понятие относительное. Если говорить о наборе на летнюю практику — да, действительно всех взять не получится: в Питере 600 человек пришло, 50 мы взяли. Если смотреть не в процентном выражении, а в абсолютном — то берем мы все-таки многих. Во всяком случае, в Петербурге. А в Москве, Новосибирске или, например, Бостоне, пока не получается взять столько.
— Какие качества студента являются для вас определяющими при наборе?
— Одно из основных качеств, которое мы в JetBrains очень ценим — это самостоятельность, способность студента принимать участие в формулировании задачи и более-менее самостоятельно эту задачу решить. Время, которое ментор может выделить для руководства студентами, ограничено, как и количество менторов. В этом, кстати, одна из главных причин, почему мы не можем взять всех желающих. Поэтому самостоятельность студентов ценится очень высоко. Второе качество — мотивация. В JetBrains человек должен хотеть учиться, им не должно двигать только одно стремление заработать побольше денег – хотя в этом желании ничего плохого нет, но основной целью это быть не может. Студенту должно быть интересно программирование. Обычно люди, которые поступают к нам на практику, знают, что такое JetBrains, чем мы занимаемся, у них есть кое-какие идеи для проектов, в которых они хотели бы принять участие. И, наконец, в-третьих, студент должен быть хорошо обучен, знать хотя бы основные вещи, связанные с программированием. Как минимум.
— Как формируется учебный план на кафедрах в вузах, с которыми вы сотрудничаете?
— Прежде всего мы изучаем существующую программу. В обучении программированию есть базовые вещи, которые в программе должны быть представлены и читаться на высоком уровне — например, курс алгоритмов. Если каких-то таких курсов в программе нет или они читаются не на должном уровне — мы помогаем. Кроме этого, мы постоянно разрабатываем новые учебные курсы, отражающие развитие компьютерных наук в мире, и добавляем их в программу в качестве курсов по выбору. Наконец, мы считаем ключевым для обучения программированию практику — чтобы научиться программировать, надо программировать. Поэтому в наших партнёрских программах проектная работа является обязательной на протяжении всего обучения.
А вообще интересно взглянуть в ретроспективе на то, как мы начинали еще в 2005 году, когда уровень обучения в университетах был настолько низким, что нам фактически приходилось университеты подменять. И учить студентов всему с нуля — у нас работали свои курсы языков, свои курсы алгоритмов и, конечно, практика — без этого никак. Сейчас ситуация меняется в лучшую сторону, во многих вузах (точнее, во всех, с которыми мы сотрудничаем), базовое обучение удалось наладить. Поэтому нам уже не нужно давать ни курсы алгоритмов, ни курсы по языкам программирования, наши студенты уже успели изучить их в университете. Мы делаем более продвинутые учебные программы в разных направлениях. Для каждого студента может быть составлена индивидуальная траектория обучения с учетом того, что он знает и хочет знать в конце. Это может быть специализация в сторону анализа данных и машинного обучения, в этом направлении наши университеты, к сожалению, пока не очень продвинулись, многих студентов нам приходится учить с самых азов. Могут быть более продвинутые вещи: написание компиляторов, углубленная работа с языками программирования. Базовые уровни в вузах уже есть, но если требуется работать глубже, приходится искать знания самим. Мы делаем наши курсы доступными, причем в том виде, в котором вузы могут зачитывать их в свою учебную программу.
— А как вообще совмещается стажировка у вас с учебой в вузе?
— Я уже упомянул ранее про обязательность проектной работы. Для студентов старших курсов это участие в реальных проектах — в том числе, например, стажировка у нас.
— Что, на ваш взгляд, мешает вузам самим готовить самых востребованных сегодня на рынке труда специалистов? И почему некоторым вузам это все-таки удается?
— Вуз, да и вообще любая программа обучения, очень сильно зависит от того, кто учит и кого учит. Если в университет приходят сильные абитуриенты — во многом благодаря репутации самого университета — то они вряд ли успеют «испортиться» за годы, проведенные в вузе. Скорее, наоборот — у многих вузов есть сильные стороны, основанные, главным образом, на сильных кадрах. Даже базовый курс алгоритмов, который есть во всех учебных программах, можно прочитать так, что человек, послушав его, вырастет над собой очень сильно. Сильные выпускники вырастают из сильных абитуриентов, где набор хороший, там и выпуск хороший.
Еще один момент, очень важный — не все успевают угнаться за быстро меняющимся миром. Если не обновлять постоянно свою учебную программу, вы обречены на безнадежное отставание. В этом, к сожалению, кроется большая проблема наших университетов, которые очень сильно скованы системой учебных планов. Сейчас, правда, стало получше, сегодня уже можно добавить вариативности, но это все равно не XXI век, возможности гибкой учебной программы реализуются пока довольно слабо. Но самое важное — это люди, которые ведут занятия. Человек гораздо важнее, чем то, какие курсы он читает. Если преподаватель действительно «заряжен» своей темой, то после встречи с ним студенты выйдут более сильными специалистами, чем до нее. И те вузы, которые смогут привлечь и удержать харизматичных преподавателей, окажутся в первых рядах.
— Вы готовите талантливых студентов совместно с «Яндексом», которому тоже нужны кадры — не приходится ли потом конкурировать за выпускников?
— Идеальный вариант — это когда всем хватает студентов нужных специальностей: кому-то интересно писать компилятор языка Kotlin, у кого-то страсть к оптимизации поисковых алгоритмов. А вот когда студентов мало, могут и в самом деле возникнуть сложности. А такое может быть именно на старте. Мы с этим столкнулись в первый год работы CSC — тогда были с нашими коллегами дискуссии в стиле «а почему он к вам пошел, мы думали, к нам пойдет». Но такие проблемы легко решаются, на втором году в Питере их уже не было. Каким способом это можно решить? Прежде всего, сделать проект достаточно хорошим, чтобы тех, кто хочет учиться на нем, всегда хватало: когда студентов много, среди них достаточно желающих работать во всех компаниях. И если посмотреть на JetBrains, сейчас проблем с желающими у нас работать нет. Я отвечаю за образовательные проекты и могу сказать, что в моих KPI нет ничего связанного с тем, сколько человек после учебы придет работать в компанию — этого никто не спрашивает. Оценивая мой результат, спрашивают обычно другое: сколько студентов в этом году училось по разным программам, сколько выпустилось, какие результаты, какие появились новые курсы. При этом выпускники, конечно, к нам приходят, но для этого не приходится предпринимать никаких специальных усилий именно в образовательных проектах. И в «Яндексе», я думаю, похожая ситуация. Подытоживая: даже если сложности и возникают, они носят временный характер, это нечто вроде скоротечной болезни, которой болеют в молодости. Когда проект набирает обороты, студенты уже сами решают, что им интересно – именно они выбирают, а не «мы делим». Нам остается только радоваться за них.
— Но все же многие ваши выпускники потом устраиваются в JetBrains. Даже если вас не спрашивают об этом ваши коллеги – какой процент «своих» выпускников лично вы считаете оптимальным?
— Интересный вопрос — в том смысле, что я никогда таких оценок не давал. Если предположить, что выпускник CSC мечтал работать в JetBrains, прилагал все усилия и в итоге не смог… Возможно, такие примеры и есть, но встречаются они крайне редко. Если человек ставит перед собой цель и хорошо учится, хорошо выполняет проектные задания, работу в JetBrains он получит. Это просто устроено немного не так, как для всех остальных.
Вот представьте себе: человек ищет работу. Просматривает сайты, соцсети, рекомендации, потом выбирает, созванивается, приходит, говорит с HR, с инженерами, решает тестовые задания… В итоге либо проходит, либо нет. И причиной отрицательного ответа наряду с объективными факторами зачастую могут оказаться и субъективные. Вы наверняка слышали про такой термин, как Interview anti-loop. Во многих компаниях — например, в Google — есть особое правило найма инженеров: каждого кандидата должны независимо друг от друга проинтервьюировать несколько человек и нужно, чтобы каждый согласился его взять. Если хоть один проголосует против — не возьмут. Они могут себе такое позволить, у них желающих работать еще больше, чем у нас. Из этого принципа вытекает правило, которое сформулировал один из сотрудников Google в своей публикации. Его суть: никогда не надо сдаваться, если вы хотите работать в Google, и даже если вам отказали, нужно пробовать еще и еще. На каждого сотрудника Google найдется другой сотрудник Google, который мог сделать так, чтобы первый не попал в компанию — вот так он сказал. Вот это и есть субъективный фактор — и без этого никак. В том числе и у нас. И он может помешать талантливому, в общем-то, человеку получить работу. Потому что узнать человека при быстром и сжатом общении на интервью сложно, какими бы хорошими не были HR и программа рекрутинга. А теперь посмотрим на студента: в облегченном режиме он попадает на практику еще на первом году учебы. Знакомится с руководителем, выполняет какие-то задачи, понимает сам для себя, нравится ему это или нет. Если нравится — практика продолжается второй семестр, потом он может прийти на летнюю стажировку и работать уже full-time над задачами, приближенными к реальным. К тому времени, когда он выпускается из CSC, вопрос о том, возьмут или нет, в принципе не встает — он уже взят. Он просто продолжает делать то, чем занимался во время учебы. Потому что процесс его, скажем так, «найма» занял полтора — два года, которые он учился. Повторюсь, если человек действительно хочет попасть к нам на работу и он поступил в CSC, то, скорее всего, он попадет.
— Некоторые маркетологи, работающие в информационном и образовательном бизнесе, считают, что ученика нужно всегда оставлять слегка «голодным» в плане знаний, чтобы он сам тянулся за «добавкой», в том числе и за отдельную плату. Насколько, как вы считаете, действенна такая методика?
— По поводу продавцов сказать ничего не могу, бизнес в образовании — не наш профиль. То, чем мы занимаемся — мы хотим, чтобы вокруг было больше умных людей. Чем больше мы их обучим, тем больше их вокруг будет. Первостепенная задача – не получить с них деньги и даже не получить их труд, а просто сделать так, чтобы они были.
Что касается того, «недокармливать» или «перекармливать» — тут, на мой взгляд, выбор очевиден. Набивать человека знаниями под завязку бесполезно, знать абсолютно все невозможно в принципе, ведь знаний становится больше с каждой секундой. И вы всегда будете «голодным», если вы человек любознательный и ищете новые знания, этот поток для вас никогда не закончится. Так что никаких причин не учить человека тому, чему он хочет научиться, «недокармливать» его нет.
Перекармливать, впрочем, тоже не стоит. Итак, мы поставили задачу человека обучить — как это сделать? Впихивать как можно больше знаний или нет? Нет, это бесполезно, ресурсы человека в плане усвоения информации, как известно, ограничены. И на эти грабли, к сожалению, наступают многие вузы, в том числе топовые, там студента набивают знаниями до такой степени, что они перестают усваиваться. Мы сами убедились в этом опытным путем: у нас был проект с одним из петербургских вузов, где мы совместно вели студентов четыре года по бакалавриату — по схеме «чем больше, тем лучше». Набрали хороших преподавателей и через три года проверили, сколько наши ученики запомнили – оказалось, что очень немного. Что человек запоминает лучше всего? Первое — то, что ему было интересно, второе — то, что он применял на практике, для решения задач, программирования и так далее. Если один из пунктов срабатывает, студент запоминает предмет, если сразу оба – он у него от зубов отскакивает. Многие учебные курсы, в том числе платные, тоже стараются напихать в головы учащихся в сжатые сроки как можно больше информации – с моей точки зрения, это скорее вредит, чем помогает. Потому что в то же время, пока студент пытается заучить предмет, в котором он не видит надобности, он мог бы заняться чем-то полезным. Программированием, например. Так что да, перекармливать знаниями не надо — как и едой. Это вредно.
— Вы в компании разрабатываете не только учебные программы, но и создали кластер научных стартапов – для чего он нужен, какие задачи решает?
— Когда мы еще только обдумывали создание JetBrains Research, наша цель была примерно такой: с одной стороны, находить близких по духу людей, которые заинтересованы в новых знаниях, хотят участвовать в поисках ответов на сложные вопросы в движении вперед. Дальше мы стали смотреть, где такие люди водятся, какое-то время я потратил на изучение мира стартапов, который, к сожалению, очень зашумлен, особенно в России. Есть люди, которые занимаются откровенной ерундой, кто-то делает стартап, не особо представляя, каким он будет — получается просто «стартап ради стартапа». В итоге мы от этой затеи отказались и пошли в Research-сектор, чтобы посмотреть, что там происходит. Там оказалось несколько получше — нашлись люди, которые близки нам по духу. Плюс нам нужно было закрыть кое-какие потребности, связанные с образовательными проектами: если вкратце, человек, который преподает, должен сохранять связь с реальным миром. То есть, если преподаватель, допустим, читает курс по программированию, а последнюю книгу по этой теме он прочитал 25 лет назад и до сих пор учит студентов по ней — курс никуда не годится. К сожалению, в российских университетах таких людей и таких программ пока что очень много. Актуализировать свои знания можно двумя способами. Первый — это уйти в индустрию и заниматься наукой оттуда. В этом случае вы через некоторое время, скорее всего, полностью переключитесь на индустрию: людей, которые ушли работать в реальный сектор и не бросили при этом преподавать — единицы. Приоритеты в какой-то момент смещаются туда, где нужно улучшать продукт, а не учить студентов, даже если применить, например, 20%-ную программу, где человек может четыре дня работать, а пятый преподавать, не теряя в зарплате. Но если взять второй вариант — то есть уход в Research — здесь человек, скорее всего, продолжит преподавать: работать со студентами ему интересно, в них он видит своих будущих учеников, соавторов, коллег. Этот аспект и лег в основу JetBrains Research — мы хотели создать место, где люди могли бы заниматься наукой и учить студентов. Все это выросло от преподавания.
— С чего начался JetBrains Research?
— Первой была лаборатория языков программирования в СПбГУ, ее мы создали как раз для того, чтобы у людей была возможность заниматься чем-то, кроме преподавания и чтобы они концентрировали вокруг себя любознательных студентов, чтобы они могли прийти в эту лабораторию и поговорить о чем-то интересном.
— Как в JetBrains Research появляются новые лаборатории?
— По-разному. Сейчас у нас около десятка лабораторий. Какие-то мы просто решили поддержать — увидели, что что-то есть, что работает, но не хватает финансирования –
и помогли. Какие-то создали сами, потому что нам интересны были исследования в соответствующих областях. Машинное обучение применимо не только для распространенных задач (поисковые системы и т.д.), но и для software engineering, то есть для работы с кодом. И мы организовали лабораторию, которая занимается исследованиями именно в этой области, потому что она нужна нашему бизнесу.
Вот так и возникали новые подразделения, по разным причинам, в разные моменты. JetBrains Research — объединение таких независимых друг от друга лабораторий, у каждой из них своя история. Сейчас у нас уже около десятка лабораторий.
— Может, расскажете про те, что работают у нас в городе? Какой вообще вклад в работу JetBrains Research вносит Новосибирск?
— Новосибирск для нас место достаточно новое. Есть в вашем городе, например, Сергей Федорович Кренделев, который занимается криптографией со студентами — мы поддерживаем его исследования, его аспирантов, студентов. Это один из примеров того, как человеку, кроме преподавания, надо еще чем-то заниматься, и мы такие занятия поддерживаем. На сегодня это единственная лаборатория с новосибирскими корнями, но мы планируем дальше двигаться в этом направлении. Хотя это вопрос скорее завтрашнего дня, чем сегодняшнего.
— По итогам вашего визита в НГУ и Новосибирск — каких новых планов и проектов от вас теперь можно ожидать?
— Одна из целей моего визита в Новосибирск: мы планируем с факультетом информационных технологий НГУ и «Яндексом» обсудить вопрос… нет, наверное, все-таки не создания — у «Яндекса» уже есть совместная магистратура с ФИТ. Лучше сказать — «присоединения», мы можем сделать то же, что уже проделали с ШАДом. Создать совместную магистратуру на троих: «Яндекс», JetBrains и ФИТ — надеюсь, у нас получится, пока еще продолжаются переговоры.
Помимо общей магистратуры, возможно, в какой-то момент мы можем организовать с НГУ общий бакалавриат, как уже делали в Санкт-Петербурге. CSC в Новосибирске еще далек от того, чтобы этот проект можно было назвать завершенным — не забывайте, ему всего год.
Еще один аспект — в городах, где мы присутствуем, мы стараемся общаться и работать не только с вузами, но и с общеобразовательными организациями, которые учат талантливых детей. Так, в Питере мы сотрудничаем с физико-математическим лицеем №239, №30 тоже, хоть и в меньшей степени. В Новосибирске тоже есть такие заведения, есть и кружки: например, «Совенок» или клуб «Диоген». Короче говоря, есть люди, с которыми можно сотрудничать и делать хорошие вещи, помогая деньгами и целеполаганиями — вот туда мы тоже хотим пойти. Мы хотим создать либо поддержать проекты, работающие со средней школой. Это на близкую перспективу.
Обычно, когда у нас появляется магистратура, за ней идут Research-группы, которые затем интегрируются в JetBrains Research — надеюсь, что когда мы с вами встретимся здесь же через год, то сможем обсудить уже что-то большее в этом смысле. А вообще в Новосибирске и без нас все прекрасно — у вас же здесь практически полноценный наукоград.
— Очень рад такое слышать, но сибирская наука прирастает не одним Новосибирском, есть еще, например, Томск, Красноярск с его Сибирским федеральным университетом. Планируете ли вы расширять свои образовательные проекты в этих городах – и вообще развиваться в Сибири?
— Развиваться — да, у нас есть такие планы, но не внутри Сибири, а внутри России. И не в ближайшей перспективе — сегодня наша тарелка уже полная и будет такой оставаться еще как минимум год. Тут проблема еще в том, что людей, которые в JetBrains могут этим заниматься, меньше, чем необходимо для того, чтобы работать с уже запущенными проектами. В Питере после двух лет работы случился экспоненциальный рост числа проектов, все они требуют людей, в Новосибирске тоже нужно развиваться. Поэтому в ближайшее время мы совершенно точно в Томск не поедем и вообще никуда не поедем — будем доделывать то, что уже работает в Питере, Новосибирске и Москве. Обычно получается так, что проходит год-два и ситуация налаживается – проекты работают, людей хватает и тогда можно говорить о расширении. Поедем ли мы в Томск или в Казань, или в Екатеринбург — пока не знаю, посмотрим по ситуации. Хотя я слышал, что действительно в Томске научная картина довольно близка к новосибирской, поэтому проект в этом городе может оказаться очень интересным.
Текст: Федор Туров
Опубликовано на сайте издания «Континент Сибирь»