Читать книгу: «IT Компас: как правильно программировать IT-карьеру», страница 4

Шрифт:

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), Meta1 (Facebook, Instagram), Microsoft (Windows, Azure), Amazon Web Services и т. д.

«IT-исследования». Компания или исследовательский институт (далее – «академия»), главным активом которых являются интеллектуальная собственность, ученые и лаборатории с оборудованием. Исследовательский институт обычно относится к «чистой» науке и занимается фундаментальными инновациями. Может финансироваться как государством, так и частными компаниями, взимать плату за образование. Например: MIT CSAIL (Massachusetts Institute of Technology Computer Science and Artificial Intelligence Laboratory) или ETH Zurich Department of Computer Science. Корпоративные исследования обычно касаются прикладных инноваций, то есть таких, которые в ближайшие пару лет можно будет внедрить в реальную жизнь и заработать на этом деньги. Яркими примерами являются IBM Research, Intel Labs, Xerox PARC. В этих лабораториях придумали дискеты, многоядерные процессоры и лазерную печать. Изобретения, которые перевернули весь мир. Пора «распотрошить» эти фирмы изнутри!

IT-консалтинг

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

Проект по имплементации «Крипто биржи» для EMOB (имя изменено по причинам конфиденциальности), который делала моя экс-компания, сильно отставал от сроков из-за постоянных изменений в требованиях и периодической смены членов команды. В первом были виноваты аналитики EMOB, во втором… Тут мнения разнятся, но думаю, что ответственность обеих компаний примерно одинакова. В какой-то момент проект вошел в неуправляемое пике пропуска дедлайнов, и никто не понимал, как и когда это закончится. Именно тогда заказчик начал проводить доскональные аудиты отчетов программистов.

Это был далеко не тонкий намек, что если проект не будет сдан в срок (уже третий по счету), то часть денег придется вернуть. Такие ситуации случаются, когда в коллективе царит негативная атмосфера: пара менеджеров среднего звена с разных сторон перессорилась между собой, а проект находится на грани краха. Но как только мы убрали тех людей, которые действительно безответственно относились к работе, написали понятный план действий и начали его реализовывать, появился свет в конце туннеля, и напряжение сразу спало. Клиент больше не проверял наши отчеты, и проект запустился относительно спокойно.

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

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

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

IT-продукты

Компании, которые создают IT-продукты, куда более известны, прибыльны и обладают большей капитализацией, чем их партнеры в консалтинге. Любому обывателю известны такие софтверные продукты, как Google Search, Windows или Instagram. Если сравнивать прибыльность, то Accenture при 733 000 сотрудников в 2023 году имела чистую прибыль в 7 миллиардов долларов, а Alphabet при 183 000 сотрудников – 73 миллиарда долларов (тот же 2023 год). То есть компания Accenture, имея в четыре раза больше сотрудников, заработала в десять раз меньше. Конечно, такое сравнение не совсем корректно, это все равно что сравнить шоколадный торт с какао-бобами, но зато получилось наглядно. Цифры говорят сами за себя.

Как известно, продукты бывают двух типов: B2B (business to business) и B2C (business to client).

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

B2C-продукты – это решения, созданные компанией для физических лиц. Например: YouTube, Spotify, Crunchyroll.

Некоторые продукты могут одновременно использоваться как компаниями, так и отдельными людьми. Например, Google Workspace (Gmail, Google Drive, Google Docs и т. д.). У многих из нас есть личный почтовый ящик Gmail, мы пользуемся онлайн Google Docs, то есть это B2C-продукт. В то же время многие компании используют эти сервисы для корпоративной почты и документооборота.

Теперь, когда мы познакомились с IT-продуктами, поговорим о нюансах работы в разных типах компаний.

Начнем с ситуации, когда команда разрабатывает уже устоявшийся и успешный продукт. То есть ему уже несколько лет, он стабильно приносит деньги. Главные задачи такого проекта – это поддержка, устойчивость и развитие. Именно в этой последовательности.

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

Совсем другая ситуация наблюдается, когда продукт только начинают разрабатывать – либо внутри большой организации, либо в стартапе (маленькой новой компании, которая была создана именно для реализации этого проекта). На данный момент в моей карьере было три продукта, которые я разработал с чистого листа. По опыту могу сказать, что спокойствия и стабильности тут ожидать не стоит.

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

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

Хорошим примером является ракета компании SpaceX – Falcon 9. Это многоразовая ракета-носитель тяжелого класса. 12 апреля 2007 года SpaceX объявила, что основная часть первой ступени многоразового тяжелого носителя Falcon 9 закончена. 22 ноября 2008 года все девять двигателей первой ступени ракеты-носителя Falcon 9 прошли испытания длительностью полета. Первый запуск был назначен на конец 2008 года. Но из-за постоянно обнаруживающихся проблем и неудачных тестов первый полет с успешным приземлением первой ступени произошел только 22 декабря 2015 года, на семь лет позже, чем было запланировано первоначально. SpaceX – исключительный случай. Безусловно, их проблемы были экстраординарного уровня, и весь проект имел огромную сложность. Но в плане сроков эта история типична: такой же паттерн будет наблюдаться в любом инновационном продукте, хотя и в меньших масштабах.

Еще одна часто встречающаяся проблема новых проектов – неправильная постановка бизнес-задачи. Например, продукт пытается решить проблему, которой не существует. Или существует, но решать ее надо совсем по-другому. Одним из ярчайших примеров такой ошибки является использование блокчейн-технологий для решения проблем с логистикой в транспортном секторе. Все участники хотят абсолютную прозрачность и безопасность транспортных процессов, но одновременно абсолютную приватность, потому что своими данными с конкурентами они делиться не готовы. Платформа TradeLens, созданная IBM (технологии) и Maersk (логистика), была предназначена для ускорения документооборота между участниками транспортных процессов. Однако бизнес-аналитики этого проекта не учли простую истину: коммерческая тайна в логистике в разы важнее бумажных издержек. Как итог, система TradeLens была громко запущена, ярко, хоть и недолго, работала и так же ярко горела перед закрытием. N миллионов долларов было потеряно инвесторами.

Новый продукт – это всегда риск. В каких-то случаях он проваливается, как в примере выше, а иногда становится успешным, тогда это дает шанс на быструю и головокружительную карьеру. Обрастая клиентами, проект начинает приносить деньги, что очевидно положительно влияет на команду. Она растет вместе с продуктом: программисты получают повышения и создают свои команды для реализации нового функционала. Это своего рода награда за взятые на себя риски и стрессовую работу. Последнее свое карьерное ускорение я получил именно за новый продукт в области электронных ковид-сертификатов – IBM Digital Health Pass. Благодаря этой (и не только) разработке в 2021-м IBM была признана одной из самых инновационных компаний в США. Репутационный, маркетинговый и финансовый успех продукта позволили моему менеджменту (за что я им очень благодарен) представить меня к повышению, которое было одобрено головным офисом. Этот проект положительно сказался не только на моей карьере, но и на карьерах еще восьми моих коллег из Швейцарии и США.

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

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

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

Начинающим программистам, которые еще не знают точно, в какой именно области они хотят работать, я бы посоветовал начать именно с разработки продуктов. Это даст возможность попробовать больше разных технологий и понять, что именно нравится, а что вызывает трудности. Как правило, чем меньше команда, тем более разнообразная деятельность у каждого ее члена.

1.Компания признана в РФ экстремистской и запрещена.

Бесплатный фрагмент закончился.

Бесплатно
490 ₽

Начислим

+15

Покупайте книги и получайте бонусы в Литрес, Читай-городе и Буквоеде.

Участвовать в бонусной программе
Возрастное ограничение:
0+
Дата выхода на Литрес:
18 июля 2024
Дата написания:
2024
Объем:
225 стр. 10 иллюстраций
Правообладатель:
Автор
Формат скачивания:
Текст PDF
Средний рейтинг 5 на основе 1 оценок
Текст PDF
Средний рейтинг 4,6 на основе 9 оценок
Текст PDF
Средний рейтинг 3,7 на основе 70 оценок
По подписке
Текст, доступен аудиоформат
Средний рейтинг 4,3 на основе 43 оценок
По подписке
Текст PDF
Средний рейтинг 0 на основе 0 оценок
По подписке
Текст PDF
Средний рейтинг 3,7 на основе 30 оценок
Текст
Средний рейтинг 5 на основе 4 оценок
По подписке
Текст, доступен аудиоформат
Средний рейтинг 5 на основе 3 оценок
По подписке
Аудио
Средний рейтинг 1 на основе 1 оценок
По подписке