Как я пытался быть аспирантом

Published by @9000 on 2019-04-18

В аспирантуру я поступил после слегка досрочного окончания института (http://ssau.ru) с красным дипломом в 1995. На военной кафедре я занимался, что давало отсрочку на время учёбы, но после того по контракту, который мы все подписывали, мы могли быть призваны на срочную военную службу минимум на год. Перспектива ехать обслуживать боевую авиацию куда-нибудь в Чечню, где тогда была вялотекущая война, мена радовала слабо.

Поэтому я пришёл на свою кафедру и спросил, как податься в аспирантуру. Нашёлся профессор (который у нас на потоке мало что вёл), который меня согласился взять. Мне предложили список тем, и я выбрал из него “визуальное программирование”. (Другая тема, которую я хотел взять, была про 3D-графику; я написал в качестве затравки общую механику рендеринга для движка Doom, как я её понимал; потом оказалось, что примерно похоже на реальную.) Отдельно смешные детали: основное, что я изучал в вузе, крутилось вокруг встроенных систем; когда-то я работал ещё и на кафедре двигателей, где таковые знания применял с паяльником и программатором в руках, строя измерительный прибор. Но туда я в аспирантуру не пошёл.

Вместо того параллельно с аспирантурой я пошёл работать за деньги. Работал я с 3-го курса и вообще в институте появлялся на лабораторки и экзамены (чаще досрочно); прежняя работа моя была про desktop publishing, приносила хорошие по тем временам деньги, и жить опять на стипендию и зарплату матери я не собирался. Но та работа кончилась, и я пошёл наконец работать программистом в индустрию, оговорив, что я аспирант.

На работе у меня был интернет, и я начал в хвост и в гриву использовать его, чтобы искать и читать papers в своей области. Нашёл много очень интересного, сколько-то дельного, сколько-то эстетически восхитительного, но совершенно не практичного: “и на этом люди делают PhD?”. Последнее меня должно было бы насторожить, в смысле несоответствия mindset-а академическому.

Постепенно я осознал, что хочу построить: IDE, которая содержала бы исходную форму (не текст) программы прямо в виде AST, позволяла бы менять визуальное представление, а также, главное, могла бы манипулировать с ним сразу на уровне семантики (тогда ещё, кажется, не появилось слово refactoring) и следить за корректностью (вплоть до недопуска некорректного состояния, но потом я одумался и ослабил ограничение). Разумеется, текстовый импорт и экспорт, а также отображение в виде привычного почти-текста, были в списке фич. В качестве модельного языка я взял Java, которая в те времена была скандально проста и остро модна, как сейчас #golang.

Я написал какое-то количество текстов с идеями и нарисовал к ним увлекательных картинок. Что-то из этого пошло потом в простецкие статьи в какие-то межвузовские сборники. Сборники были унылые, конференции тоже были унылые по виду, так что я не ездил ни на одну(!). Ну, состояние российской академии в 1996-97 было в целом хреновым, может, не настолько, как в 1992, но всё равно. Исследовательская работа, как я её видел, меня скорее радовала, а академия — категорически нет.

Кстати, примерно в 1996 мне показали fte, но я не впечатлился идеей разбора на лету и минимального отхода от текстового представления, увы.

Я сделал три главные ошибки:

  • Я не нашёл людей, с которыми можно было бы часто обсуждать работу и думать. Я работал один, а работы других исследователей только читал. Даже не написал никому ни одного email-а, ужас.
  • Я придумал ряд грандиозных идей, которые был далеко не в силах воплотить, и не сообразил вовремя и достаточно уменьшить scope работы.
  • Я надеялся на помощь научного руководителя в этих областях. Но увы, ему было не до меня, похоже, и, вероятно, я также провалил коммуникацию с ним.

Вообще ине никто в ближнем круге не рассказал, что научная работа — она во многом про широкую двустороннюю коммуникацию, а сам я, будучи довольно интровертен, не догадался.

В результате к середине третьего года у меня не было ни прототипа чего-либо, ни контактов с людьми, делающими похожее. У меня было зато хорошее понимание области и ощущение, что серьёзные люди, типа в IBM, MS Research и подобных местах копают примерно в ту же сторону, что как-то валидировало мои (в принципе нехитрые) идеи.

Будь я настоящий учёный, я бы сказал, что наука требует столько времени, сколько надо, и надо продолжать копать, и там уж раскопать по уму. Но я изначально смотрел на это как на проект, а также всё время следил за тем, что делают серьёзные industrial researchers в этой области. А они шли к той же цели быстрее меня; копаться ещё 5 лет смысла уже, как мне казалось, не имело, всё уже сделают другие люди.

Поэтому я бросил это дело, формально по завершении срока аспирантуры в начале 1998, а по факту раньше, и более глубоко окунулся в работу, а также осознал, что в текущем месте работы всё интересное, кажется, исчерпано, я пошёл искать работу в Москве, что резко вывело меня в другие круги общения и открывающихся возможностей. К тому же личная жизнь стала отнимать всё возрастающее количество времени. Мне очень понятно, почему и зачем настоящие учёные часто ограничивают личную жизнь (хотя, конечно, у настоящих зубров, вроде Фейнмана или Эйнштейна, хватало сил на буйную активность и в этой сфере).

Лет 10 после этого я занимался всяким всячеством (пара стартапов, один условно купил IBS, я перешёл туда, outsourcing и знакомство с западной индустрией вблизи, потом яндекс), а всякое про языки копал в качестве хобби, писал про это в ЖЖ и прочее. Кстати, в однои из стартапов мы использовали (пиратский, конечно) VisualAge for Java, и я видел, что таки да, индустрия идёт туда, куда я когда-то копал. Потом в результате большого везения в 2008 на меня вышел @yole и позвал в JetBrains делать PyCharm. Разумеется, я к тому времени был знаком с IDEA и видел там много знакомых идей (no pun intended). Тут я, натурально, всё бросил и принял предложение. Глядя на это изнутри, я убедился ещё раз, что базовые идеи когда-то у меня был здравые, но воплощать их стоило по-другому.

Но со времён ухода из JetBrains я к этой теме не возвращался. Оно теперь стандарт и мэйнстрим. Меня очень радует, однако, что дело пошло в сторону модуляризации, и теперь нормальным подходом является написать language server, который делает примерно то, над чем я (вместе с тысячами других) думал условные 25 лет назад.

На знакомых, оставшихся в академии (на напр. всесторонне прекрасную @bylin) я смотрю как на героев, подвиг которых мне не под силу.

[#personal]