Через пару дней пришел закономерный ответ: отбор я не прошел, но через год можно попробовать снова. Это был большой удар по самолюбию. Самым обидным казалось то, что задания были вполне проходимыми. Главная сложность – ограничение по времени. Я решил бы каждую задачу в отдельности за два-три часа, но не за сорок пять минут – и так пять раз подряд. Как я уже говорил, скорость мышления – один из навыков, которые особенно ценят большие компании. Немного прибавить терпения и упорства, чуть больше математики и решенных задач – и все бы получилось. Но история не знает сослагательного наклонения.
В профессиональном спорте поражение – это часть жизни, обязательный этап роста. «Из одной проигранной партии можно узнать больше, чем из ста выигранных», – утверждал чемпион мира по шахматам Хосе Рауль Капабланка. И был абсолютно прав. Через три года, сделав работу над ошибками, я взял реванш у Google. К несчастью, а возможно и к счастью, именно в ту неделю, когда меня поздравили с успешным прохождением собеседования, Google объявил о приостановке найма. Сначала на две недели, затем – на два месяца, а потом и вовсе на неопределенный срок. Поэтому мечта так и осталась мечтой.
IBM Research
Живя в Цюрихе, я поддерживал отношения с бывшими коллегами из IBM Research. Через пару дней после фиаско в Google я получил звонок от Йенса Йелитто (нем. Jens Jelitto), коллеги, с которым мы делали блокчейн-проект для логистики: «Илья, мы нашли для нашего проекта партнера в индустрии. Готовы взять тебя на постоянную позицию. Что ты об этом думаешь?»
Стоит отметить, что попасть в IBM Research совсем не просто. Это в первую очередь научная организация, поэтому карьера многих ученых там начинается с прохождения докторантуры (PhD) или постдока. Собственно программистов в 2019-м было мало. Я вложил много сил в свой проект на стажировке и очень обрадовался шансу довести его до конца, как и возможности вернуться в одну из самых технологических компаний в мире.
Собеседования прошли успешно, мне сделали предложение в предпоследний рабочий день марта. Прежде чем на него согласиться, я поговорил со своим менеджером. Уходить надо так, чтобы не подставить команду и компанию. Наш проект находился в финальной фазе, и еще месяц я был готов работать без выходных. Руководство сочло это разумным компромиссом без потери репутации с чьей-либо стороны.
Тридцатого апреля я купил угощение, чтобы вспомнить хорошие моменты и отметить мой уход с коллегами в Credit Suisse. Второго мая, полный оптимизма и желания творить, я пришел в офис IBM Research.
Итак, круг замкнулся: я вернулся туда, куда не планировал возвращаться. В начале своего пути я и мечтать не мог о таком месте работы. Именно этот момент я считаю завершением моего карьерного дебюта. Он получился насыщенным, полным неожиданностей и удач. Я пожертвовал несколько «пешек» вначале, но полностью завладел инициативой. Была допущена как минимум одна серьезная ошибка. Но ведь не ошибается тот, кто ничего не делает.
Сейчас я нахожусь в стадии миттельшпиля и планирую его элегантно разыграть. Пара ходов в середине партии получилась очень удачной. Я возглавил реализацию первого государственного блокчейн-проекта в Германии для Федерального ведомства по делам миграции и беженцев (BAMF – Bundesamt für Migration und Flüchtlinge). Мы объединили в одну сеть несколько регионов (Bundesland) для автоматизации обмена данными о беженцах и мигрантах. На момент написания этой книги (2024 год) в Европе по-прежнему царит миграционный кризис, и наша система делает жизнь людей лучше, ускоряя их интеграцию в немецкое общество.
Вторым моим успешным проектом стали «ковидные паспорта». IBM Digital Health Pass – это была одна из первых в мире реализаций вакцинных паспортов. Мы внедрили ее в Нью-Йорке на полгода раньше, чем аналогичная система заработала в Европе. Я потрудился и над европейской реализацией. Немного моего кода исполнялось на Андроид-телефонах во всех европейских странах.
Вторую часть книги я назвал «Миттельшпиль». Как правило, дебют можно хорошо подготовить и просчитать. А вот миттельшпиль всегда уникален, поэтому надо импровизировать. Чтобы импровизация была более осознанной, я проанализирую разные аспекты профессии на реальных примерах и попробую предсказать, куда мои ученые коллеги тащат IT-мир и к чему нам, программистам, стоит заранее подготовиться.
Часть 2. «Миттельшпиль»
Чем глубже фундамент, тем выше здание можно построить
Корни образования горькие, но плоды сладкие.
Аристотель
Бурдж-Халифа – небоскреб высотой 828 метров в Дубае. На данный момент (2024 год) это самое высокое здание в мире. Безусловно, Бурдж-Халифа – памятник человеческой мысли, смелости, богатству. Но отличает этот небоскреб не только то, насколько он возвышается над поверхностью, но и то, на какой глубине расположен его фундамент.
Аравийский полуостров сформирован донными отложениями древнего океана, то есть преимущественно из песчаных пород. В отличие от Манхэттена, где пригодный для высоких и тяжелых зданий скалистый грунт лежит близко к поверхности, здесь относительно твердые породы встречаются значительно реже. Этот фактор приходилось учитывать чикагскому архитектору Эдриану Смиту. Чтобы построить здание в 828 метров, в землю вкрутили 192 сваи диаметром полтора метра и длиной 45 метров (половина футбольного поля). Далее над ними надстроили бетонную плиту шириной 3,7 метра. Эта сложная конструкция и образует фундамент самого высокого здания в мире. Именно благодаря такой мощной базе проект был успешно доведен до конца и ежегодно притягивает сотни тысяч туристов.
Что является фундаментом для программиста в быстро меняющемся мире? Нужен ли вообще этот фундамент? Стоит ли строить его с помощью учебы в университете? А может, лучше выбрать хорошие курсы или самообразование? Обязательно ли учить математику? На эти фундаментальные вопросы я отвечу в следующей главе.
IT-фундамент
Поработав в разных отраслях, огромных корпорациях и маленьких стартапах, с умными и очень умными людьми, я сформулировал конкретный ответ: фундамент для программиста – это продвинутые базовые технические навыки в информатике, широкий кругозор и хорошая математика.
Базовые технические навыки в информатике – это структуры данных, базы данных, алгоритмы и низкоуровневый язык Си. Глубоко освоив эти вещи, можно будет без особых проблем выучить 80 % высокоуровневых языков и программировать на них так, чтобы было не очень стыдно показать другим людям. Не стоит в начале обучения гнаться за какой-то конкретной модной технологией, в некоторых отраслях тренды полностью меняются за пять-семь лет.
Когда я начинал заниматься веб-разработкой, главной библиотекой считалась jQuery (релиз в 2006 году), использовавшаяся для анимации и придания динамики сайтам. Мне казалось, что jQuery будет вечной, потому что ничего лучше придумать нельзя. В 2013-м Facebook опубликовал первую версию ReactJS для создания сайтов и веб-приложений. Эта библиотека полностью поменяла все парадигмы. Но если веб-разработчик хорошо разбирался в базовых технологиях браузера, то переучиться не составляло труда. Аналогии можно привести и в совершенно других областях. Например, если программист хорошо знает один из базовых языков – Java, – он может одинаково эффективно использовать серверную библиотеку Spring и писать программки для пластиковых карт с чипом NFC.
Наилучшим доказательством моих слов будут требования к кандидатам в больших компаниях, таких как Google, Amazon, Microsoft. За исключением узкоспециализированных вакансий (например, криптограф), знания требуются очень широкие и в то же время базовые (см. выше). Я дважды проходил собеседования в Google, по совокупности около четырнадцати испытаний – и второй раз даже успешно. Интервьюеров в первую очередь интересовали скорость мышления и знание основ. Причина таких требований состоит вот в чем: после выхода на работу новый сотрудник получает около трех месяцев на обучение конкретным технологиям для конкретного проекта. Считается, что при наличии соответствующей базы этого времени будет достаточно, и поначалу компания готова в него инвестировать.