Часть 2. «Миттельшпиль» Чем глубже фундамент, тем выше здание можно построить

Корни образования горькие, но плоды сладкие.

Аристотель

Бурдж-Халифа – небоскреб высотой 828 метров в Дубае. На данный момент (2024 год) это самое высокое здание в мире. Безусловно, Бурдж-Халифа – памятник человеческой мысли, смелости, богатству. Но отличает этот небоскреб не только то, насколько он возвышается над поверхностью, но и то, на какой глубине расположен его фундамент.

Аравийский полуостров сформирован донными отложениями древнего океана, то есть преимущественно из песчаных пород. В отличие от Манхэттена, где пригодный для высоких и тяжелых зданий скалистый грунт лежит близко к поверхности, здесь относительно твердые породы встречаются значительно реже. Этот фактор приходилось учитывать чикагскому архитектору Эдриану Смиту. Чтобы построить здание в 828 метров, в землю вкрутили 192 сваи диаметром полтора метра и длиной 45 метров (половина футбольного поля). Далее над ними надстроили бетонную плиту шириной 3,7 метра. Эта сложная конструкция и образует фундамент самого высокого здания в мире. Именно благодаря такой мощной базе проект был успешно доведен до конца и ежегодно притягивает сотни тысяч туристов.

Что является фундаментом для программиста в быстро меняющемся мире? Нужен ли вообще этот фундамент? Стоит ли строить его с помощью учебы в университете? А может, лучше выбрать хорошие курсы или самообразование? Обязательно ли учить математику? На эти фундаментальные вопросы я отвечу в следующей главе.

IT-фундамент

Поработав в разных отраслях, огромных корпорациях и маленьких стартапах, с умными и очень умными людьми, я сформулировал конкретный ответ: фундамент для программиста – это продвинутые базовые технические навыки в информатике, широкий кругозор и хорошая математика.

Базовые технические навыки в информатике – это структуры данных, базы данных, алгоритмы и низкоуровневый язык Си. Глубоко освоив эти вещи, можно будет без особых проблем выучить 80 % высокоуровневых языков и программировать на них так, чтобы было не очень стыдно показать другим людям. Не стоит в начале обучения гнаться за какой-то конкретной модной технологией, в некоторых отраслях тренды полностью меняются за пять-семь лет.

Когда я начинал заниматься веб-разработкой, главной библиотекой считалась jQuery (релиз в 2006 году), использовавшаяся для анимации и придания динамики сайтам. Мне казалось, что jQuery будет вечной, потому что ничего лучше придумать нельзя. В 2013-м Facebook опубликовал первую версию ReactJS для создания сайтов и веб-приложений. Эта библиотека полностью поменяла все парадигмы. Но если веб-разработчик хорошо разбирался в базовых технологиях браузера, то переучиться не составляло труда. Аналогии можно привести и в совершенно других областях. Например, если программист хорошо знает один из базовых языков – Java, – он может одинаково эффективно использовать серверную библиотеку Spring и писать программки для пластиковых карт с чипом NFC.

Наилучшим доказательством моих слов будут требования к кандидатам в больших компаниях, таких как Google, Amazon, Microsoft. За исключением узкоспециализированных вакансий (например, криптограф), знания требуются очень широкие и в то же время базовые (см. выше). Я дважды проходил собеседования в Google, по совокупности около четырнадцати испытаний – и второй раз даже успешно. Интервьюеров в первую очередь интересовали скорость мышления и знание основ. Причина таких требований состоит вот в чем: после выхода на работу новый сотрудник получает около трех месяцев на обучение конкретным технологиям для конкретного проекта. Считается, что при наличии соответствующей базы этого времени будет достаточно, и поначалу компания готова в него инвестировать.

Вторая важная составляющая IT-фундамента – широкий кругозор: история, география, литература, философия, экономика. Прошло то время, когда программисты работали поодиночке. Сейчас создание любого инновационного продукта – это долгая работа в больших командах под руководством эффективных менеджеров. Нельзя построить квантовый компьютер за полгода в гараже с друзьями.

Рабочие дни программиста – далеко не только сидение за компьютером. Вы выходите с кем-то из коллег пообедать, выпить кофе, общаетесь на отвлеченные темы. Умение работать и взаимодействовать в команде – такой же навык, как язык программирования. Чтобы с тобой хотели работать месяц, достаточно быть приятным в общении. Чтобы с тобой хотели работать годами, ты должен быть еще и интересным собеседником. Чтобы руководить и вести за собой коллектив, ты должен быть приятным, интересным и эффективным. Где эффективность – это профессионализм, помноженный на скорость.

Математика

Третий важный навык – математика. Математику не зря называют царицей наук. Она используется везде: в музыке, в автопилоте машин, при оплате покупок в магазине.

В музыке нотная грамота подчиняется строгим правилам сложения дробей. Если половина мелодии написана в размере 2/4, а другая половина – в 3/4, и все такты перемешаны вразнобой, то человеческое ухо быстро это распознает, такая музыка вызывает дискомфорт.

Автопилот (в 2024-м) – это натренированный искусственный интеллект, который с помощью камер распознает предметы и принимает решения. Сам процесс тренировки и последующей оптимизации включает в себя операции над огромными (100…000 × 100…000) математическими матрицами из раздела дискретной математики. При оплате покупок кредитная карта вместе с платежным терминалом каждый раз исполняют криптографические протоколы, которые в 2024 году основаны либо на больших числах и дискретном логарифме, либо на эллиптических кривых.

«Ну мне-то точно эта сложная математика не понадобится. Где я и где автопилот последнего поколения» – так думали и я, и мои одногруппники в университете. И действительно, максимум 1 % программистов используют в работе математику. Однако впоследствии я понял, что нужна она не только тем, кто ее применяет впрямую или косвенно, а действительно всем – как гимнастика для ума. Мозг – это своего рода мышца, его можно и нужно тренировать. Математика – отличный способ заставить мозг работать быстрее и дольше. Один из базовых тренировочных процессов в шахматах – решение задач: мат в два хода, выигрыш ферзя в три хода и т. д. Чем быстрее шахматист решает задачи, тем быстрее и дальновиднее он действует в реальной игре. Так же и с математикой в жизни – она раскачивает мозг и позволяет думать быстрее, глубже и дальше.

Я вижу это на примере своих коллег-криптографов. Специалист по криптографии – это в первую очередь высококлассный практикующий математик. Когда мы вместе играем в викторины, становится очевидно, что они думают раза в полтора быстрее, чем я.

Невероятную историю я услышал недавно на круизном лайнере от ученого, занимающегося физикой элементарных частиц, который много лет трудился над созданием Большого адронного коллайдера (БАК) под Женевой в ЦЕРНе. БАК – это кольцо длиной примерно двадцать семь километров, предназначенное для разгона протонов, тяжелых ионов и других элементарных частиц с целью их соударения. Главный смысл его создания – изучение устройства Вселенной начиная с самых маленьких ее частиц и попытка заглянуть в прошлое, вплоть до Большого взрыва. Невероятность этой истории заключается вот в чем: человек тридцать лет жизни посвятил физике элементарных частиц, его статьи были процитированы более 10 000 раз (это очень много в академическом мире), а потом ушел в американский стартап, чтобы заниматься расшифровкой ДНК по волосам, потому что там платят в несколько раз больше.

«Но как можно перейти из такой физики к расшифровке ДНК?!» – спросил я его жену, когда он отошел, чтобы ответить на звонок по работе. Ответ был прост: «Если понимать физику и математику такого уровня, то другие области – сущий пустяк. За пару месяцев он вник в процесс на уровне профессионального биолога». Эта история лишь подтвердила, что себя надо тренировать не только физически, но и ментально.

Университет или самообразование?

Большинство воспринимает университет как место, где можно приобрести специальность. Это утверждение верно лишь наполовину. Университет дает не просто определенный объем информации, здесь можно получить структурированные, комплексные знания от экспертов в самых разнообразных областях, которые, на первый взгляд, абсолютно не связаны между собой. Я делаю акцент именно на структуре, которой крайне сложно следовать самостоятельно. Ну кто в здравом уме будет по собственному желанию заниматься философией или дискретной математикой в восемнадцать-двадцать лет? В этом возрасте есть тяга к конкретным результатам, и порой кажется, что занятия философией только тормозят учебный процесс. Однако в долгосрочной перспективе для построения успешной карьеры нужно иметь развитое критическое мышление, а комплексное образование как раз способствует его формированию. Корпоративный мир – это не зоопарк, а джунгли. Нередко там встречаются политические игры, манипуляции и полуправда. Именно критическое мышление и правильная оценка ситуации помогут принимать адекватные решения.

Помимо системности образования, университет дает еще одно большое преимущество: живое общение с преподавателями. Казалось бы, книга и профессор могут дать одинаковые знания. Возможно, хороший учебник даст их даже в большем количестве. Зато профессор может указать на то, чего вы не знаете. Задавая каверзные вопросы, заставляя вас думать и анализировать, он поможет найти слабые места в вашей подготовке и определить направления для дальнейшего развития.

Не менее важными являются связи, которые формируются в университете и зачастую поддерживаются в течение всей жизни. Именно поэтому надо постараться попасть в хороший университет: там, как правило, выше концентрация умных и мотивированных людей, которые в будущем станут топ-менеджерами в разных компаниях. По этой же причине стоит время от времени отдыхать в хороших отелях – там часто попадаются крайне умные и интересные люди.

Университет также предоставляет доступ к огромному количеству стажировок и программ по обмену. Я смог поехать на стажировку в IBM Research в Швейцарию только потому, что учился в магистратуре. Если есть возможность полгода провести в другой стране в рамках программы по обмену – это нужно обязательно сделать. Так вы разовьете кругозор и станете чуть больше понимать и принимать другую культуру, что в будущем положительно скажется на выстраивании отношений в мультикультурных командах.

Означает ли все написанное выше, что программисту не особо нужно самообразование, если он окончил университет? Думаю, ответ очевиден: нет. Университет – это фундамент, на котором можно строить IT-карьеру. Насколько высоким получится «дом» в нашем быстро меняющемся мире, будет зависеть от качества самообразования в дальнейшем (в приложении 1 я дам несколько рекомендаций по разным направлениям).

Американские ученые ввели термин «период полураспада компетентности». Он означает единицу измерения устаревания знаний. По статистическим оценкам:

1. Устаревание знаний инженера-выпускника 1940 года наступало через 12 лет.

2. Знания выпускника 1960 года устаревали через 8–10 лет.

3. В 1970 году устаревание знаний происходило через 4–5 лет.

4. Знания выпускника 2000 года устарели через 2–3 года.

В некоторых направлениях IT-сектора знания надо обновлять каждый год. Поэтому подход «один раз выучил – всю жизнь применяю» в XXI веке просто невозможен. Неважно, на какой вы стадии карьеры, чтобы оставаться востребованным специалистом, необходимо заниматься самообучением всю жизнь. Но сначала, как мы помним, надо «выкопать» глубокий образовательный фундамент, чтобы потом на нем строить большую карьеру.

Создание фундамента – один из самых сложных и важных моментов в строительстве. Отнеситесь к этому этапу максимально ответственно. Помните, чем глубже фундамент, тем выше здание можно построить.

Где? Консалтинг, продукты, исследования

Иногда заходишь туда, где никогда не был, но чувствуешь, что ты находишься именно там, где должен быть.

Цитата из сериала «Как я встретил вашу маму»

«Где начинать работать?» «Стоит идти в большую компанию или лучше для начала выбрать маленькую?» «Как быстрее набраться знаний и начать много зарабатывать?» Наверное, каждый молодой программист однажды задавался подобными вопросами. Чтобы найти ответы на них, рассмотрим типы IT-компаний.



Все IT-компании можно разделить на три группы: «консалтинг», «продукты» и «исследования». Часто большие корпорации имеют в своем составе два таких подразделения, а очень большие – все три. Я провел по несколько лет в каждом из направлений и знаком со всеми прелестями, нюансами и «ужасами» работы в них не понаслышке. Итак, начнем с определений:

«IT-консалтинг». Компания, главный актив которой – программисты. Профессионалы и новички, архитекторы и тестировщики – все они работают на разных клиентов, а клиенты платят за них деньги. Оплата либо почасовая, либо за проект. Среди самых больших компаний в этой отрасли – ирландско-американская Accenture (~750 000 человек), индийские InfoSys, Cognizant, французская Capgemini (все – 350 000 человек) (данные на 2023 год).

«IT-продукты». Главный актив такой компании – продукты, которыми пользуются люди. Яркими представителями этого вида являются Alphabet (Google), Meta[1] (Facebook, Instagram), Microsoft (Windows, Azure), Amazon Web Services и т. д.

«IT-исследования». Компания или исследовательский институт (далее – «академия»), главным активом которых являются интеллектуальная собственность, ученые и лаборатории с оборудованием. Исследовательский институт обычно относится к «чистой» науке и занимается фундаментальными инновациями. Может финансироваться как государством, так и частными компаниями, взимать плату за образование. Например: MIT CSAIL (Massachusetts Institute of Technology

Загрузка...