Про выбор профессии
В детстве я не знал, что выбрал профессию, я просто увлекся программированием. У меня был супердревний компьютер, на нем даже программировать было невозможно, потому что не было никакого компилятора. Там был только DOS, где можно было писать команды, чем я и занимался маниакально, пока мне приятель не дал на дискетке Basic. Так я и стал программировать.
Это было смешно: я ничего не знал про Basic, взял дискету, запустил и смотрел в монитор. А потом я вспомнил, что где-то дома валялся советский учебник «Основы информатики и вычислительной техники. Том 2». Я ее раскопал, полистал и там было две страницы про Basic. Но, к счастью, на той дискетке еще был русский Help. Поэтому те две страницы про Basic и кнопка F1 позволили мне научиться писать какие-то вещи.
Потом мне еще кто-то дал книжку про что-то более осмысленное, и я стал набирать информацию. А еще позже у меня появился интернет, а вместе с ним — возможность начать лучше во всем разбираться.
Про создание Kotlin
Еще в аспирантуре я занимался направлением, которое называется «Предметно-ориентированные языки». Это похоже на языки программирования, но это не языки общего назначения, на которых можно писать все, что угодно, а языки, заточенные под узкие задачи. В определенных кругах это является довольно популярной темой, хотя мейнстримовой ее не назовешь.
Один мой знакомый, с которым мы занимались образовательными задачами, в какой-то момент рассказал мне, что в JetBrains тоже есть люди, которые занимаются предметно-ориентированными языками и что у них есть мысли по созданию нового большого языка. Поначалу у меня сложилось впечатление, что люди сошли с ума. В тот момент я был на стажировке в Эстонии, но все равно время от времени бывал в Питере. Меня пригласили зайти в JetBrains поговорить, и я решил попробовать.
На встрече оказалось, что действительно есть идея сделать полноценный язык программирования, потому что у этого есть определенные перспективы. Мы поговорили, причем, кажется, я пришел в офис в шесть часов вечера, а ушел около полуночи. Сначала мы обсудили ситуацию на рынке, почему тот или иной язык не годится и почему у JetBrains есть шанс вывести свой язык на рынок. Я понял аргументы, очень проникся этой идеей. В итоге большая часть этого разговора была посвящена уже обсуждению конкретных деталей, как можно делать новый язык программирования. На месте мы накидали какие-то идеи, а уже осенью того года начали работать над Kotlin полноценно.
Как придумать новый язык программирования
Люди придумали гораздо больше языков программирования, чем написано в Википедии. Новые языки программирования придумываются каждый месяц, достаточно часто они появляются и в публичном поле. Это не является чем-то невероятным. В большинстве университетов, где учат программистов, преподается специальный курс. Называться он может по-разному: «Языки-трансляторы» или «Теория языков программирования» и так далее. Эти курсы есть практически на любой Computer Science специальности, поэтому инструменты есть у всех.
Вполне возможно не только придумать новый язык, но и реализовать его таким образом, чтобы на нем вполне успешно можно было писать программы. Есть много примеров, когда всего один человек придумал язык, который стал вполне популярным.
Сложно, во-первых, сделать так, чтобы кто-то другой стал им пользоваться, а во-вторых, создать его таким, чтобы он был заметно лучше других языков. Если взять существующий рынок, где достаточно много мейнстримовых языков (у них большое число пользователей и уже достаточно много закрытых вопросов), здесь довольно сложно создать новый язык, который станет популярным. С одной стороны, менять язык программирования достаточно дорого: если вы уже разрабатываете какой-то проект или просто изучили какой-то язык достаточно хорошо, вам невыгодно переходить на другой, ведь это потеря сил и времени на изучение чего-то нового. А если вы хотите что-то переписать на новый язык, то тут вообще сойти с ума можно, это огромный пласт работы. Поэтому, как вы понимаете, люди не очень жаждут менять язык программирования.
Чтобы мотивировать их сделать это, необходимо им что-то предложить. Предложить можно не всем, так как у многих людей в принципе ничего не «болит» по этому поводу. Мы, в свою очередь, нашли довольно большую группу людей, у которых «болит». Изначально это были программисты на Java, хотя сейчас мы смотрим гораздо шире. Мы увидели, что есть достаточно много людей, которые пишут на языке, на тот момент практически не развивавшемся. Им было настолько плохо, что они были готовы вложить силы в переход на новый язык.
Мы постарались сделать так, чтобы им было легко перейти. И это, на самом деле, самый большой челлендж нашей работы. Ведь одно дело — разработать с чистого листа, создать новый язык, который никак не сообразуется с тем, что есть. Тут все просто. Другая история с Kotlin. Мы сделали язык, который позволяет вам использовать все, что было написано на ряде других языков раньше. Это не первый случай в истории. Тот же C++ старался сделать так относительно С.
Наша идея заключалась в том, чтобы люди, которые пишут сегодня на Java, могли максимально легко перейти на Kotlin. То есть, во-первых, мы хотели позволить людям переиспользовать то, что у них уже написано, с другой — сделать так, чтобы концепции, которые есть в новом языке, были им уже знакомы, чтобы они не изучали Kotlin как какой-то марсианский язык, а могли использовать то, что они уже знают.
В 2017 году Google назвала Kotlin официальным языком программирования для Android
Есть большое количество людей, которые зарабатывают на жизнь тем, что пишут программы для телефонов под Android. Для них Google является основным владельцем их экосистемы. Если Google говорит, что определенный язык поддержан официально, это, безусловно, является дополнительной гарантией надежности: на этом языке писать безопасно, потому что он не исчезнет. И мне кажется, это было самым главным для разработчиков.
История пошла именно снизу. Не то что бы две компании Google и JetBrains договорились между собой и заставили всех писать на Kotlin. Все было наоборот: вирусное распространение языка привело к тому, что пользователи просто закидали Google просьбами признать Kotlin официальным языком под Android. И через год это случилось. С точки зрения сообщества этот шаг означал глобальную модернизацию системы и повод доверять языку.
С нашей точки зрения, это означало, безусловно, огромный приток пользователей. За 2018 год уже почти два миллиона человек использовало Kotlin. Мы, определенно, хотим сделать так, чтобы Kotlin стал одним из самых популярных языков. Я считаю, что попасть в пятерку более чем возможно, и мы уже работаем в этом направлении.
Про сервис Alter
Alter — сервис, который помогает подобрать психолога на основе специального алгоритма, разработанного совместно со специалистами Психологического института Российской академии образования.
Говоря об истории его создания, наверно, лучше начать с моего знакомства с психотерапией. Мне всегда было любопытно знать про людей. Я человек рефлексирующий, поэтому всегда хотел понять, как внутри устроено у меня и у других людей. В какой-то момент у меня появились знакомые, которые учились на психологическом факультете. Мы много спорили, и, конечно, в таких разговорах рождалось большое количество наблюдений. Несколько лет подряд я обещал себе, что когда-нибудь я обязательно поделюсь этим с психотерапевтом.
Прошло несколько лет, и я все-таки пошел на психотерапию. И оказалось, что это очень полезно, я получил замечательные результаты. У меня сложилось ощущение, что это такая прорва возможностей! Я увидел, что у меня есть достаточно большое количество знакомых, которым это может пригодиться.
В процессе общения я заметил несколько вещей: во-первых, люди обо всем этом не знают, во-вторых, относятся с недоверием. У меня возникла мысль, что надо популяризировать эту историю. Но в то же время я понял, что если я сейчас пойду об этом рассказывать, то у меня спросят: ну ладно, прикольная штука, но где мне взять психотерапевта? И на этот вопрос ответа у меня нет.
Поначалу я собирал какие-то контакты со знакомых и рекомендовал в частном порядке. Но стало понятно, что надо делать что-то другое. Оказалось, что такие мысли есть не только у меня. Мы встретились с людьми, которые тоже хотят делать что-то подобное и вот уже полтора года мы создаем Alter. Сейчас в нашей базе более ста специалистов.
Процедура отбора примерно такая: у нас есть методология оценки, разработанная моими коллегами совместно со специалистами из Психологического института Российской академии образования. Безусловно, мы спрашиваем дипломы о высшем образовании, о специализации, обязательно смотрим, чтобы человек ходил на личную психотерапию сам. Кроме того, у нас есть довольно большой опросник, где проверяются важные профессиональные факты. По результатам этого опросника мы можем также устроить интервью кандидата со специалистами Психологического института, после чего зачисляем человека в базу либо нет. Процедура длится, безусловно, не один день, но пока дает отличные результаты.
Если говорить в целом про доверие к технологическим продуктам, с этим все довольно сложно. В ситуации, когда в принципе сложно найти опору, люди, как правило, прибегают к самым базовым вещам — к рекомендациям знакомых. В Alter мы понимаем, что это не очень хорошо, потому что ходить к одному и тому же специалисту с вашими знакомыми — плохая практика. Во-первых, если кому-то этот человек подошел, это не значит, что он подойдет вам. Во-вторых, если вы ходите со своим относительно близким знакомым к одному психотерапевту, то прежде всего у вас будут возникать мысли, что вы не сможете ему что-то рассказать, да и самому психотерапевту будет довольно непросто работать.
Как все успевать
Иметь две работы — довольно сложно. Я трачу на Alter один день в неделю, остальные рабочие дни я провожу в JetBrains. Мне достаточно тяжело переключаться, поэтому я выделил на проект строго один день, так можно сделать что-то действительно полезное.
Что касается тайм-менеджмента, надо мной коллеги посмеиваются, что я все записываю. В какой-то момент я понял, что много всего забываю, пропускаю какие-то договоренности, поэтому с тех пор я веду календарь, где записана каждая встреча, которая у меня есть, и каждое заметное дело.
Но время на отдых у меня тоже есть: в календаре каждый день есть очень важное событие «обед». Все как положено. Я также заранее отмечаю отпуск, чтобы его не занимать. Иначе я просто умру, невозможно в таком режиме работать и не отдыхать.
Про профессиональное выгорание
Программирование и в целом инженерная деятельность — это то, что вызывает привыкание. Например, в детстве я программировал много-много часов напролет. Пока организм позволяет, работать можно, не замечая усталости, и при этом не вредить здоровью. Безусловно, если вы программируете очень много, вы сильно поднимаете свою квалификацию.
Но потом, когда человек взрослеет, у него появляются всякие другие обязательства в жизни. Человек начинает уставать, даже не замечая этого. У него падает продуктивность, портится настроение, люди выгорают, так бывает. Для работодателя это очень опасная история, компаниям очень выгодно, чтобы люди оставались здоровыми. Я как-то был на стажировке в Microsoft. Наблюдал, как там собрали всех сотрудников в большом зале и сказали им: «Мы ни в коем случае не хотим, чтобы вы маниакально работали, вы нам нужны живые и здоровые».
Если мне кто-то говорит в компании, что он что-то не успел и работал в субботу, я прошу его взять потом выходной, потому что, если забывать отдыхать, потом можно получить гораздо худшие результаты в целом. Я видел разных коллег, которые выгорели по тем или иным причинам, и это очень грустно.
Жизнь без программирования
Сложно сказать, какую профессию я бы выбрал, если бы не стал программистом. Но сейчас, если я вдруг перестану программировать, точно попробую позаниматься публицистикой. У меня накопилось очень много мыслей и хотелось бы их как-то выразить. Любопытно также позаниматься какой-то организаторской деятельностью, хотя я понимаю, что надолго меня не хватит, быстро устану. Мне также интересно наконец научиться нормально управлять кораблем, я немного это умею, но недостаточно хорошо. Но это, опять же, не профессия, а просто дополнительный навык.
Преподавателем я побыл, подустал, но, может быть, когда-нибудь вернусь к этому. Можно много чем заняться, но основной вопрос в том, сколько сил нужно вложить, чтобы получить какой-то результат. В программировании большой мультипликатор: программист напишет программу один раз, а ей дальше могут воспользоваться сколько угодно людей. Это одна из вещей, которая останавливает меня от того, чтобы начать учиться на психотерапевта. Я понимаю, что, будучи психотерапевтом, я смогу за один час помочь только одному человеку. Для кого-то это нормально, для меня нет. Мне хотелось бы вложить свои силы во что-то с большим выхлопом.