Для начала, не могли бы вы рассказать немного о той лекции, которую прочитаете перед студентами?
В основном я расскажу о том, как мы работаем в компании JetBrains, штат которой сейчас насчитывает около 1200 сотрудников. Мы отличаемся от многих традиционных компаний, в которых есть ряд внутренних барьеров: иерархии, разрешения, зоны ответственности и так далее. Мы будем говорить о достоинствах и недостатках этих внутрикорпоративных барьеров.
О каких же достоинствах и недостатках идет речь?
Отсутствие таких барьеров хорошо тем, что это дает людям больше свободы, возможность делать то, что они хотят. Сотрудник не должен беспокоиться о том, может ли он выполнять ту или иную работу и не выходит ли он за пределы своей компетенции.
Недостатки же заключаются в том, что по мере того, как компания растет, становятся важными вопросы коммуникации, возникает опасность дублирования усилий разных сотрудников, рассогласование работы.
В вашей компании, как я слышал, практически каждый так или иначе занимается программированием, пишет код. Успеваете ли вы делать это или у вас слишком мало времени из-за других обязанностей?
У меня сегодня совсем немного времени для того, чтобы кодить самому, увы.
Скучаете ли вы по тем временам, когда это было вашим основным занятием?
Я скучаю по тем временам, когда я был молод (смеется). А вообще, да, я работаю над кодом настолько, насколько могу, потому что это часть моих обязанностей. Скучаю ли я по тем временам, когда это занимало все мое время? И да, и нет. У меня сейчас есть множество новых обязанностей, я работаю с другими задачами, передо мной стоят новые вызовы, которых не было в тот период времени, когда я большую часть времени занимался написанием кода.
Перейдем к языку программирования Kotlin, которому посвящен ваш подкаст. В чем, по вашему мнению, новые возможности, которые открывает программистам этот язык программирования? В чем его преимущества и недостатки?
Kotlin родился из тех потребностей, которые мы испытывали в JetBrains. Мы нуждались в нем, мы хотели создать язык, который упростит работу разработчиков, подобно тому, как это делают наши продукты. Идея, которая лежала в основе создания Kotlin, – сделать код более кратким, выразительным и, конечно, более приятным. Избавить разработчика от некоторых извечных «болевых точек», с которыми он сталкивался в своей работе.
Многие, не только мы, говорят о том, что это отраслевой язык, который был создан внутри самой отрасли. Он отличается от многих академических, если позволите, языков, и от тех, которые призваны в первую очередь исследовать возможности языка программирования. Для нас это более прагматичный язык, созданный, чтобы решить основные вопросы, с которыми сталкиваются люди, каждый день пишущие обычные приложения.
Сложнее ли им овладеть, нежели Python или другими популярными сегодня языками программирования?
Это лучше спросить у того, кто этих языков не знает – он даст более точный ответ. От себя скажу, что если вы знаете какой-то язык программирования, как то Java, C# или JavaScript, то Kotlin вам будет понять очень просто. Некоторые сравнивают его с Python, который обычно считают языком для начинающих. Так что да, это достаточно простой язык для освоения.
Сегодня многие компании работают с открытым кодом, по принципу Open source, что позволяет им улучшать свой продукт, получать обратную связь…
Мне кажется, что open source не обязательно влияет на то, как вы создаете и дорабатываете продукт. Вы можете его создавать и получить обратную связь без использования этого принципа.
Open source имеет как достоинства, так и недостатки. Одна из проблем – создание устойчивой бизнес-модели на основе формата open source. Когда вы попросите привести примеры устойчивого open source-проекта, вы слышите про Red Hat. Но если вы просите привести второй пример, то, скорее всего, не услышите ничего в ответ.
То есть вы считаете, что open source-проект не может иметь устойчивого развития?
Нет, этого я тоже не говорил. Я лишь считаю, что гораздо сложнее создать бизнес-модель вокруг такого проекта.
Иногда можно увидеть статьи вроде «Какой язык программирования выбрать?». Некоторые считают, что нужно выбрать один язык и выучить его досконально, некоторые считают, что лучше иметь в своем распоряжении несколько рабочих языков, как несколько удобных инструментов. Какой подход вам кажется более правильным?
Мне кажется, те, кто считают, что надо сосредоточиться на чем-то одном, ошибаются. Дело тут не только в возможностях трудоустройства, которые открываются перед вами. Когда вы учите разные языки, особенно когда вы осваиваете разные парадигмы программирования, это расширяет спектр ваших возможностей по решению проблем. Так что я, определенно, отношусь к тем людям, которые говорят, что вам следует выучить столько языков программирования, сколько возможно.
Что, по-вашему, сейчас необходимо молодому IT-специалисту, на чем ему следует сфокусироваться, какие качества в себе развивать?
Лучший совет, который я могу дать тому, кто хочет попасть в IT-сферу – идите в фермеры (смеется). Но, если серьезно, главная вещь – не становитесь узкими специалистами. Не посвящайте всего себя одной технологии, одной области. Пробуйте настолько много, насколько вы можете. Я бы не хотел употреблять слово «эрудит», но в целом да, следует более или менее оставаться эрудитом, если, конечно, у вас нет страсти к какой-то конкретной области. Важно учиться как можно большему числу вещей, постоянно учиться.
А нужно ли быть активным, включаться в сообщество разработчиков?
Все зависит от ваших задач. Быть активным в сообществе разработчиков – это очень полезно для вас самих. Написание кода в программировании важно, но умение общаться с людьми даже важнее. Дело тут даже не в самой коммуникации с другим человеком, а в умении понять, что ему нужно.
Спустя все эти годы, которые прошли с тех пор, как вы в 12 лет сели за компьютер и начали программировать, в вас сохранилась эта страсть к написанию кода?
А я когда-то рассказывал, что я начал программировать в 12? Ничего себе! Да, моя страсть к программированию осталась на прежнем уровне. Я все еще люблю эту отрасль, я люблю технологии и процесс решения проблем. Ничего не поменялось.
Много лет назад вы и многие другие начинали свою карьеру в IT, работая за своим первым компьютером, что-то изобретая на этих примитивных, как нам сейчас видится, машинах, решая проблемы. Сейчас это огромная индустрия, где в офисах работают менеджеры, HR-специалисты, маркетологи. Повлияла ли эта трансформация на атмосферу в мире IT? Сохранилась ли в сердцах людей та страсть, та тяга к свершениям, которые отличали IT-сферу в начале ее формирования?
Мы осознали, что просто создание замечательного продукта – это еще не все. Вам нужно иметь хороший продукт, хорошо его прорекламировать, нужно обеспечить доступ людей к этому продукту. Если вы пытаетесь что-то создать, вам нужно, чтобы вас окружала куча всяких вещей. Вам нужна поддержка и инфраструктура.
Конечно, сейчас гораздо сложнее, чем в те времена, когда на рынке было 20 компаний, и предложение чего-то инновационного уже заставляло людей обратить на тебя внимание. Сейчас не 20 компаний, даже не 200, а 200 000 компаний! Поэтому вам необходимы дополнительные условия. Но мне вовсе не кажется, что это влияет на страсть, на отношение к работе. Мне кажется, что все это все еще там, в отрасли, где люди по-прежнему создают что-то новое.
Есть компании, которые эксплуатируют людей… например, в легкой промышленности, где компании открывают производства в Индонезии, на Тайване, платят людям очень маленькие зарплаты и создают одежду. В IT такое тоже бывает – в Испании, где люди получают по 600 – 700 евро в месяц за 12-часовой рабочий день. Есть компании в Индонезии, где людям практически ничего не платят за модерацию и размещение контента в соцсетях. Многие люди по природе своей злы и будут эксплуатировать тебя, если могут. Это не зависит от отрасли.
Как, по-вашему, сложнее ли стало сегодня сделать человеку первые шаги в IT-сфере, нежели это было много лет назад, когда начинали вы?
Мне сложно сравнивать, ведь я сейчас не на их месте. Но мне кажется, что, когда я только начинал, было очень тяжело себе даже представить, что вы будете работать в крупной компании, получите признание, если у вас не было университетской степени.
Чтобы стать разработчиком сейчас, при всем уважении к университетскому образованию и к тому, что делает Университет ИТМО, вам вовсе не нужно иметь диплом. В этом большая разница. Если у тебя есть университетское образование – хорошо, если нет … (разводит руками). Я не слишком обращаю внимание на диплом. Куда больше меня волнует то, чему человек все же научился в университете.
Другое дело, мне кажется, что в нашей сфере сейчас есть острая нехватка фундаментального образования, фундаментальных знаний. Люди узнают, как делать приложения, как работать с кодом, но они не понимают базиса, программного инжиниринга, алгоритмов – всех этих вещей, которые вы можете выучить в университете. Так что мне кажется, что университетское образование очень ценно. Но мне кажется, что сейчас проще получить работу, чем раньше. Впрочем, конкуренция на рынке труда сейчас тоже выше.
А какой диплом у вас самого?
О, я учился в университете Малаги, в Испании. Я пять лет обучался на курсе Software Engineering.
Сегодня вы занимаете позицию руководителя девелопер-адвокатов компании. Может ли молодой специалист, вчерашний выпускник, при определенных навыках и опыте, полученном за время обучения, стать частью команды девелопер-адвокатов? Что нужно для этого сделать?
Мне кажется, что для того, чтобы стать девелопер-адвокатом, вам нужно иметь опыт работы в отрасли. Роль такого специалиста в том, чтобы помогать другим разработчикам, учить их программированию, учить их технологиям, работе с инструментами. Для этого часто недостаточно просто знать инструменты. Вам важно иметь также опыт. Так что вам нужно иметь несколько лет опыта за плечами, чтобы занять такую позицию.
И я настойчиво не рекомендую какому-либо студенту пытаться получить такую работу в качестве первой. Сперва вам следует несколько лет провести за написанием кода и консультированием и потом, быть может, это вас приведет к тому, чтобы стать девелопер-адвокатом.