Новости
Николай Иготти о том, что важно для инжиниринга, и где лучше жить и работать программисту
Интервью с Николаем Иготти — техническим руководителем Kotlin/Native, JetBrains и приглашённым спикером SECR 2018.
Вы участвовали в разработке VirtualBox, когда использование виртуальных машин еще не было таким привычным, как сейчас. А сейчас занимаетесь разработкой компилятора с Kotlin, одного их самых молодых языков программирования, в байт-код LLVM (Low Level Virtual Machine). Вы специально выбираете себе работу на переднем крае технологий, или Ваши интересы с давних пор так удачно совпадают с тем, что скоро станет передним краем технологий?
Вопрос очень глубокомысленный, потому что, парадигмы, стоящие за технологиями, которые Вы назвали, являлись передним краем в 70-е гг XX века. А сейчас то, что мы делаем, это донесение этих идей и технологий до широких масс. Потому что виртуальные машины были придуманы IBM в 60-ых годах и использовались в очень специальной области очень долго. Но большинство людей просто их никогда не знали и ими не пользовались. А то, что мы делали в VirtualBox, это, собственно, создание доступных виртуальных машин, которыми могут пользоваться все. Похожая ситуация с Kotlin. Идеи, лежащие за Kotlin, т.е. идеи функционального программирования, а точнее идеи лямбда-исчисления, которые лежат в основе функционального программирования, разработаны американским математиком Чёрчем в 30х годах XX века. Так что, в определенном смысле, нового там тоже нет, если говорить в научном смысле. Но, что важно, это перенос того, что люди уже знают, в то, что все люди используют. Это видно на компьютерах, на мобильных устройствах. Еще 20 лет назад тот же интернет уже существовал, но он не был такой «commodity» как сейчас. А теперь, это технология, которая меняет жизнь всех на планете. Это очень важно. Поэтому мой выбор технологии, над которой работать, частично обусловлен тем, что сейчас нужно и популярно, а частично — тем, что это просто очень интересно. Кроме того, интересные проекты собирают вокруг себя очень интересных людей, и мне страшно нравится работать с умными и творческими коллегами.
Кажется ли Вам, что за последние лет 25-30 разработчики сильно специализировались? В 1980-е и начале 1990-х программист часто был довольно универсальным специалистом, а теперь можно встретить, например, веб-разработчика, имеющего довольно смутные представления о том, как работает СУБД (Система управления базами данных). Это — естественный процесс, а видите ли Вы какие-то его негативные эффекты? Можно ли их как-то учесть в будущем, например, при обучении разработчиков?
Вообще по образованию я не программист, а физик. Как и многие мои коллеги. В определенном смысле, то, что обеспечивает успешность людей с фундаментальным физическим или математическим образованием в программировании, это хорошо развитые когнитивные навыки. Лично я не очень верю в специализацию на технологию, я больше верю именно в сильно развитые когнитивные навыки конкретного человека. Я довольно долго преподавал и сейчас преподаю, и, мне кажется, студентов почти всё равно чему обучать. Можно обучать примерно любой дисциплине до тех пор, пока это развивает их когнитивные навыки. То есть, наверное, можно креативно обучать бухучету так, что выйдет кандидат, которого я возьму завтра на работу, если у него действительно хорошие мозги. Поэтому специализация, о который Вы говорите, это, скорее всего, свойство рынка, а не свойство людей. И, в том числе, JetBrains редко ищет специалистов, знающих ту или иную технологию от начала и до конца, потому что технологии приходят и уходят, а люди остаются. И важно, чтобы человек умел логически мыслить, умел понимать суть того, чем он пользуется. Ну и естественно, должно быть базовое образование и представление о том, чем является вычислительная техника. Булева логика, архитектура фон Неймана, формальные грамматики и т.п. Эти основания уже вряд ли куда-то денутся. Конкретные технологии, базы данных, фреймворки — как мне кажется, это больше удел специалиста, только входящего на рынок, ему важно сказать, что он в этом разбирается. Если посмотреть не только на мое резюме, но и на резюме коллег, с которыми я работаю, они делали самые разные системы: кто-то делал финансовые системы, кто-то делал системное программное обеспечение, но важно то, что они могут думать, обучаться, создавать.
А как Вы сами перешли от физики к разработке?
Я не то чтобы из физики перешел, я в физику никогда не приходил. После окончания бакалавриата в 1998 году, когда физику зарабатывать деньги не представлялось возможным, я достаточно быстро нашёл работу программиста, осознал, что мне это интересно, и у меня получалось делать какие-то нетривиальные вещи. Поэтому, по сути, я физик только по образованию и по складу ума. А сама разработка программ — процесс чрезвычайно приятный, по сути — чистое творчество, из ничего вдруг получается что-то, это меня затянуло и назад в науку я уже не смотрел. И кроме того, этот процесс достаточно неплохо оплачиваемый.
Среди разработчиков можно встретить людей, которые стремятся (или говорят, что стремятся) изменить мир к лучшему. За последние годы мир действительно поменялся, и в некотором смысле к лучшему, благодаря интернету, YouTube, видеосвязи и многому другому. Стремитесь ли Вы в своей работе повлиять на мир, сделать его в чем-то лучше, если да, то в чем?
Мне кажется, любой человек в каком-то смысле пытается поменять мир к лучшему. Это какая-то очень естественная базовая потребность. Просто каждый по-своему понимает, что это в точности значит. Я стараюсь быть осторожным и не столько сам менять мир, сколько давать людям инструменты, чтобы они могли ту свою область, в которой они разбираются, менять к лучшему. Это не какие-то глобальные изменения, а скорее, если человек, допустим, системный администратор и пользуется гипервизором для управления виртуальными десктопами, значит, ему это должно быть легче при помощи VirtualBox. Если это программист мобильных приложений, ему должно быть легче и быстрее создавать эти мобильные приложения при помощи Kotlin. Думаю, люди сами лучше знают, как лучше, нежели я им буду это говорить. Я просто стараюсь дать им для этого инструмент. А для меня мир, в котором каждый человек лучше и с большим удовольствием делает свою работу, и является лучшим.
Вы работали в нескольких крупных международных компаниях (EMC, Oracle, Google). Это был полезный опыт для Вас? Посоветовали бы Вы другим людям пройти такой же путь?
Этот тоже очень сложный для меня вопрос. К примеру, через месяц после того, как я переехал в Кремниевую долину, всю организацию на 300 человек, в которой я работал, разогнали. Всем людям сказали, чтобы они в течение месяца нашли новую работу, иначе их выгоняют из компании, а многих и из страны. Некоторые женщины плакали во время этого собрания. Безусловно, такого опыта я бы не желал пережить, это был большой стресс, но, в целом, работа по миру очень расширяет перспективы. В частности, позволяет более адекватно оценить даже свою страну и свое окружение. Если ты видел много разного, то ты можешь более или менее объективно сравнивать, не слушая, что тебе говорят медиа, и какая в твоей стране мифология, а смотря на это собственными глазами. Так что я бы советовал молодым людям и девушкам, которые начинают свою карьеру, попытаться поработать в крупных международных компаниях, понять, что им нравится, чему-то поучиться, а дальше самим решать, что делать. Для развития профессионализма это очень полезно, а вот свою способность творить, инициативу и веру в себя нужно оберегать, потому что многие большие компании — это гигантские машины, в которых эти качества, по крайне мере на уровне рядовых инженеров, могут не приветствоваться. Если важно именно это, то лучше поработать в небольшой компании или организовать стартап.
А почему Вы решили работать в Петербурге? Почему выбрали петербургский офис JetBrains, хотя, наверное, могли бы поехать работать и в офисы в других городах?
Я работал в Google в Петербурге, а после закрытия их питерского офиса я попал в Google в Швейцарию. Проработав там год, я вернулся, как и запланировал ещё при переезде. А дальше уже искал здесь работу — я целенаправленно переезжал в Петербург. Мне нравится город, тот факт что это мегаполис, но не очень большой, красивый, интересный, с хорошей инфраструктурой и не очень быстрым темпом жизни. А здесь уже нашлось что-то интересное для меня в JetBrains.
Сейчас можно нередко слышать, что одни мечтают поехать работать в Кремниевую долину, другие — наоборот, стараются оттуда уехать (кто куда — кто в Сиэтл, кто в Европу, кто домой поближе к родителям). Как Вам кажется, какие преимущества есть там и здесь? И для какого типа людей?
Это вопрос, очень часто возникающий у людей моей профессии, особенно в 90-х и 00-х, когда многие уезжали кто куда. И, по моим наблюдениям, Кремниевая долина уже переросла себя и стала спорным местом для пребывания, особенно семейного человека. Если говорить о молодом, энергичном вчерашнем студенте, наверное, какое-то время пожить в Кремниевой долине, поучительно. Не скажу, что особенно комфортно или приятно — там очень много людей, гораздо больше, чем это место способно принять, сплошная застройка. Это очень дорогое и непропорционально некачественное жильё, некачественная еда. Есть и достоинства, в виде гигантского рынка труда, кучи инвестиционных денег, хорошего климата и возможности познакомиться с людьми со всего мира. При этом я тепло к Долине отношусь, потому что первый раз я оказался там лет 20 назад. Я практически каждый год туда езжу с разными оказиями. Наверное, у этого места есть какая-то своя прелесть, у некоторых его кусочков, но чтобы работать там и жить, особенно с детьми, мне кажется, надо быть самоотверженным и очень любить Америку. Касательно Сиэтла, я несколько раз там был, но никогда не жил, ничего не могу сказать плохого или хорошего, но многие хвалят. Там вроде не так тесно. Швейцария — интересное место. Там с семьёй неплохо жить, я туда уехал с женой и тремя детьми. В общем, мы все были вполне довольны жизнью. И у нас жить хорошо. Мне больше всего у нас нравится жить!
Что в корпоративной культуре, в общении людей в крупных ИТ-компаниях было особенно комфортным для Вас? А что Вам нравилось во взаимоотношениях и в поведении людей в других странах?
Я почти всегда работал в компаниях с достаточно плоской иерархией и инженерно-ориентированной культурой, то есть, где на работу никто и никогда не ходил в костюмах и галстуках, а все приходили в джинсах и шортах. И я, безусловно, считаю, что очень важен для инжиниринга такой «no bullshit environment», то есть ситуация, в которой все люди понимают, что они делают. Не происходит ненужного сотрясения воздуха на совещаниях, а все просто согласованно решают какую-то сложную задачу и идут от точки «А» к точке «Б». Такое окружение очень комфортно для любого инженера, который ориентирован на решение задач, на достижение цели. Я видел такое в Google до определённого момента. Но компании по мере роста, к сожалению, утрачивают это свойство.
Вы думаете, это происходит из-за роста компании?
Я думаю, это очень сложная тема, мы можем говорить об этом не один час. Это скорее связано с характером людей, которые стремятся в ту или иную организацию. То есть, если в ранний Google стремились люди, желающие сделать что-то действительно суперское, то сейчас туда стремятся за большой зарплатой и спокойным дожитием до пенсии. Это, к сожалению, влияет на рабочую психологию сотрудников, на то, каких целей они пытаются достигнуть на работе, и как они их достигают. Это может быть демотивирующим.
Николай, вы посещаете конференции?
Необходимость бывает часто, в основном в связи с тем, что нужно рассказывать о том, что делаю я и моя команда. И, если я считаю, что смогу рассказать об этом адекватно — участвую.
В чем, по-Вашему, главный смысл в подобных мероприятиях?
Я в достаточной мере интроверт, и мне проще провести общение онлайн. Но прелесть некоторых конференций не в технической составляющей, а скорее такой околорелигиозной активности. Это создание определенной группы единомышленников, которые ощущают себя единым целым, которые собрались по общему, интересному для всех поводу, и способные по этому поводу общаться.
А вы были раньше на SECR?
Да, я был на SECR в 2009 г. Я тогда работал над VirtualBox и рассказывал про использование этого гипервизора для управления нагрузкой.
Какие у Вас ожидания от конференции в этом году?
Я надеюсь рассказать что-то интересное, что может сподвигнуть людей улучшить свою жизнь и узнать что-то новое, может быть, как-то это использовать.
Расскажите в двух словах о предстоящем выступлении.
Я попытаюсь рассказать о том, что я и моя команда Kotlin/Native делали последние два года. Мы создаем возможность программировать на языке Kotlin, который был придуман в Петербурге в этом самом офисе JetBrains ещё до нас. Мы его адаптировали, чтобы его можно было использовать для гораздо более широкого спектра задач. А именно для программирования на телефонах или планшетах Apple, для использования в каких-то встроенных устройствах — для всех сценариев нативной компиляции. То есть для создания абсолютно самодостаточных программ, для исполнения которых не нужны никакие другие дополнительные среды исполнения, например, виртуальные машины. Думаю, что аудитория, послушав меня, поймет, что можно создавать программы быстрее и эффективнее — не писать их, грубо говоря, два раза. Потому что сейчас большинство мобильных приложений пишется один раз под операционную систему iOS и второй раз под операционную систему Android. Это неэффективное использование ресурсов человечества, и мы пытаемся создать такую среду, в которой, с одной стороны, эти программы можно писать по большей части один раз, с другой, не мешать людям использовать возможности, которые специфичны только для Android и iOS, чтобы люди могли использовать всё богатство платформ. Одновременному решению этих двух, на первый взгляд, несовместимых задач, и будет посвящен мой доклад.