4.4.2 Проекты открытого исходного кода
Участие в проектах с открытым исходным кодом – прекрасный способ взаимодействовать с сообществом, демонстрировать позитивный профессиональный бренд и вносить реальный вклад. Соблюдайте правила местного этикета.
В большинстве проектов существует документация о том, как участники могут помочь. Следуйте этим правилам в точности.
Учитывайте советы для веб-сайтов вопросов и ответов (раздел 4.4.1), когда публикуете темы, отвечаете на вопросы и выполняете другие действия в рамках проекта.
Публикуя тему или проблему, убедитесь, что предоставляете всю информацию, которую запрашивают сопровождающие проекта, включая действия, скриншоты, примеры кода и другое. Изучите прошлые проблемы перед публикацией, чтобы выяснить, не сталкивался ли с ней кто-то другой и не была ли она решена.
Внося код, убедитесь, что вы изучили и приняли все существующие соглашения о названиях, шаблонах или других элементах, которым следует проект, как документированным, так и выведенным из существующего кода. Облегчите работу кураторов и тщательно протестируйте свой код, написав соответствующие модульные тесты.
4.5 Упражнения
Ознакомьтесь с техническими сообществами, с которыми уже взаимодействуете. Это могут быть сайты вопросов и ответов, блоги или другие веб-сайты, а также очные собрания или конференции. Ответьте на следующие вопросы:
Кто в этих сообществах лидер? Существуют ли известные люди, чей вклад или участие особенно ценны для вас? Что они делают такого, что вы могли бы сделать сами?
Какую ценность люди получают от этих сообществ? Образование? Помощь? Нетворкинг?
Где вы могли бы сразу же начать приносить пользу? Не разводите руками и не говорите: «Все уже что-то делают, я больше ничем не могу помочь!» Вы знаете, что можете сделать.
Создайте для себя график, с помощью которого будете регулярно вносить вклад в сообщество. Стремитесь быть его частью на регулярной основе, не обязательно ежедневно, но, если вы действительно переживаете о своей карьере, делайте это по крайней мере несколько раз в месяц. Составьте расписание, занесите его в свой календарь и придерживайтесь его.
5
Не переставайте развиваться
Мир технологий постоянно движется и развивается – и, как вы понимаете, ваши навыки должны идти в ногу с этими изменениями. Необходимо не только обновлять имеющиеся навыки по мере развития технологий, но и изучать новые актуальные технологии, которые так или иначе связаны с вашей профессией.
5.1 Новые или актуальные?
Говоря о навыках, я имею в виду, полезные не только для текущей работы, но и для карьеры в целом. То есть мой работодатель требует определенных навыков, которые необходимо поддерживать и обновлять, а моя карьера требует другого (и чаще всего большего) набора навыков, которые помогут быть востребованным на рынке труда.
Одной из моих первых работ была должность системного оператора на компьютере среднего класса на платформе AS/400 компании IBM (теперь IBM iSeries). У меня были определенные профессиональные навыки, которые нужно было постоянно развивать и поддерживать: язык команд OS/400, различные изменения, которые IBM вносила и в операционную систему компьютера, и в само оборудование. Работодатель помогал мне обновлять навыки, отправляя меня на обучение и приобретая для меня соответствующие книги.
Однако в более широком круге операторов работа с IBM AS/400 считалась неактуальной и неперспективной – люди просто не покупали новые компьютеры AS/400. В итоге практически полная зависимость от AS/400 окажется конкурентным недостатком для компании IBM, поскольку появились новые более конкурентоспособные и менее затратные технологии. Скорее всего, я бы мог все 40 лет работать на этой должности и управлять устаревшим AS/400, однако мой доход полностью зависел бы от этой компании, ведь в пространстве AS/400 мало возможностей для трудоустройства. Компания в конечном итоге была выкуплена одним из ее конкурентов, и AS/400 прекратила свое существование. Для меня как для работника это был бы ужасный исход. Обладая только этим навыком, который больше не имел значения на рынке, мне было бы трудно быстро освоить более актуальные навыки, чтобы получить новую работу.
Таким образом, первая задача – сохранить существующие навыки, которые требует работодатель. Вторая задача – следить за тем, чтобы ваш набор профессиональных навыков оставался актуальным. Он должен быть шире, чем требуется вашему работодателю, и для его поддержания может потребоваться значительное личное вложение времени и денег. Ваш работодатель может придерживаться определенного набора навыков, даже если в какой-то момент это повредит конкурентным преимуществам компании, и вам необходимо убедиться, что ваша карьера останется актуальной на конкурентном, постоянно меняющемся рынке технологий.
Эту идею можно выразить в виде диаграммы (рис. 5.1), которая поможет вам решить, на чем сосредоточить свои усилия в обучении.
Рис. 5.1. Распределение навыков
Я распределяю свои навыки по четырем квадратам:
Подходят для текущей работы. Это новые навыки для моей текущей работы, но они могут быть неактуальными для карьеры. Я должен их поддерживать на достаточном уровне, но мне необязательно вкладываться в них лично.
Подходят для карьеры. Это навыки, которые очень важны в отрасли, но я, возможно, недостаточно разбираюсь в них, и они не нужны на моей текущей работе. Я не буду сильно заострять на них внимание, но уверюсь в том, что в случае необходимости смогу быстро в них освоиться.
Не подходят для текущей работы и для карьеры. Это ни новые навыки, полезные для моей текущей работы, ни актуальные в отрасли в целом. Мне нужно проработать их в минимальном количестве, которое необходимо для текущей работы.
Подходят для текущей работы и для карьеры. Это актуальные в отрасли навыки, и именно они должны обновляться. Они идеальны, потому что их можно использовать и на текущей работе, и на других.
Пример заполнения таблицы представлен на рис. 5.2.
Рис. 5.2. Заполненная таблица
Составляем план обучения исходя из этой таблицы.
Я отлично разбираюсь в VBScript, но это уже не актуально, поэтому не буду тратить много времени на его изучение.
Среда iSeries CL также уже неактуальна, и я давно «не в теме». Если этот навык потребуется на новой работе, я его обновлю, если нет, то не буду его изучать.
Языки C# и JavaScript очень актуальны, и мои навыки достаточно развиты. Это те сильные стороны, которые могут помочь мне найти новую работу. Я хочу продолжать использовать и изучать эти языки, возможно, работая над различными проектами в свободное время, даже если нынешняя работа этого не требует.
Знание языка Java 11 – это очень важный навык, и я мало что в нем понимаю. Возможно, я не хочу заниматься Java 11, но этот навык может улучшить мою карьеру. Мне нужно продумать несколько вариантов действий.
Поддержание актуальности навыков, которые требует работодатель, всегда казалось мне простым делом. В мире существует множество обучающих продуктов (я расскажу о некоторых из них позже), и я могу использовать те, которые по договоренности с работодателем позволят выполнить работу. Как правило, мой работодатель сам оплачивает эти навыки и облегчает процесс обучения.
Мне всегда было труднее поддерживать навыки, актуальные для карьеры, ведь бывает трудно решить и понять, что значит «актуально». Вот об этом мы и поговорим.
5.2 Что значит «актуально»?
Какие навыки необходимы для того, чтобы ваша карьера и вы оставались актуальными на глобальном рынке труда? Карьера ваша, а значит, вам определять, что это значит и что может привести вас к успеху. Для начала поймите, какие проблемы работодателей вы можете решить. Вы занимаетесь обслуживанием сетей? Пишете проприетарные настольные приложения? Создаете веб-приложения? Поддерживаете работу серверов? Сколько бы решений у вас ни было, именно на них нужно сосредоточиться. Сейчас немногие могут выполнять кучу разных задач и быть настоящими мастерами на все руки, поэтому стоит сосредоточиться на широком выборе решений и задач.
ВЫ, БЕЗУСЛОВНО, МОЖЕТЕ ИЗМЕНИТЬ НАПРАВЛЕНИЕ СВОЕЙ КАРЬЕРЫ
К примеру, нельзя сказать, что инженер сети никогда не сможет стать разработчиком программного обеспечения. Абсолютно точно сможет! Однако это полностью изменит его сферу деятельности и, как следствие, карьеру. Это масштабные изменения, и мы не будем касаться их в этой главе.
Когда вы определите свое пространство решений, необходимо начать изучать тенденции рынка в этом пространстве. Каких специалистов работодатели нанимают?
Один из способов ответить на этот вопрос – использовать свою сеть знакомств. Пообщайтесь с коллегами из других компаний: это безусловно поможет получить более широкое представление о том, что происходит в отрасли.
Также я обычно просматриваю списки вакансий со всей страны и даже со всего мира. Я использую как можно больше сайтов, чтобы получить как можно больше информации. Но при этом я стараюсь не поддаваться чрезмерному влиянию новых трендов. Например, то, что Google выпустила еще одну платформу программирования JavaScript, не значит, что я должен сразу же сесть и изучить ее. Вместо этого я смотрю, как она проникает на рынок. Если я вижу, что многие работодатели добавляют ее в свои вакансии, то понимаю, что пора браться за дело.
Вместо новейших трендов я ищу те технологии, которые снова и снова появляются в вакансиях. Если множество работодателей нанимают работников со знаниями по данной технологии, она, естественно, актуальна на текущем рынке. Буду честен: такой подход несколько замедляет процесс получения новых навыков, поскольку я не предсказываю за них, а жду, когда работодатели сами примут новую технологию. Однако также это позволяет ограничить все, чему я должен научиться, адекватным набором навыков, который, скорее всего, сможет улучшить мою карьеру.
5.2.1 Опыт и экспертность
Важно понимать, что не обязательно быть экспертом в каждом навыке вашей отрасли. Для начала вполне допустимо выбрать определенную подгруппу нужных навыков, затем ознакомиться с ними на базовом уровне, а также нарастить «мышцы» для быстрого обучения.
Обычно я распределяю все свои технические навыки по ширине и глубине, чтобы определить, что я уже знаю и что мне нужно знать. Такой же подход используется в пирамиде знаний, созданной Марком Ричардсом и Нилом Фордом, которую можно найти на сайте http://mng.bz/eMBJ. Популярная в области технологий, она выглядит примерно так, как показано на рисунке 5.3.
Рис. 5.3. Пирамида знаний
Идея в том, что любая технология содержит все, что вы умеете делать, то есть навыки, которыми обладаете. Это техническая глубина навыка. Для некоторых навыков глубина будет занимать большую часть пирамиды; для других – маленькую. Также, как правило, существует множество навыков, о которых вы знаете, но которые не изучали; они отражают широту знаний, в которых вы могли бы стать профессионалом, если бы выделили на это время. Кроме того, есть множество умений, о знании которых вы даже не подозреваете, – информация, которая выходит за рамки вашего понимания. Таким образом, если вы обладаете определенным техническим навыком, этот пункт должен быть совсем небольшим. Цель пирамиды в том, чтобы:
определить навыки, в которые нужно углубиться, чтобы получить или сохранить работу;
определить компоненты навыков, которые нужно знать, чтобы получить или сохранить работу;
изучить навыки и компоненты навыков, которые были определены на этапах 1 и 2. По мере их изучения приобретаются знания и навыки второго уровня «Что я умею/знаю, но не в курсе об этом», которые помогут стать еще более опытным в данной сфере.
Шаг 2 – самый трудный. Что конкретно мне нужно знать о JavaScript, PowerShell или микросервисах, чтобы выполнять определенную работу? Один из способов подойти к этому вопросу – использовать показатели эффективности в данной отрасли. Сертификаты, дипломы и другие показатели помогут определить верхнюю точку необходимых знаний и сосредоточиться на ней. В некоторых отраслях ИТ (например, в ИТ-операциях) существует множество сертификатов; в других (например, в разработке) их меньше, но если поискать, можно найти большое количество аттестационных тестов для любых навыков. Некоторые обучающие компании осуществляют проверку знаний, например, Pluralsight’s Skill IQ; другие предлагают сертификаты и дипломы по окончании обучения.
Другой способ взглянуть на уровень владения навыком – это изучить свой уровень знаний в первой части пирамиды «Что я умею/знаю». У всех нас есть навыки, в которых мы сильны, и те, в которых мы «плаваем». Такой способ оценки мастерства иногда называют Т-образным набором навыков. Он изображен на рисунке 5.4.
Рис. 5.4. T-образный обзор глубины и широты знаний
Т-образная схема – еще один способ взглянуть на пирамиду знаний, только в этом случае оцениваются несколько навыков вместо одного. Навыки, в которых больше пунктов «Что я умею/знаю», считаются глубокими (в примере на рисунке Windows), и на схеме они отображаются в виде длинных столбцов. Навыки, о которых я хотя бы немного знаю, составляют широту знаний и добавляются в схему в виде дополнительных столбцов. Я могу углубить знания о любом из навыков (например, Linux и iSeries), если мне это понадобится. Вот здесь и пригодится таблица распределения навыков и ее четыре квадрата: например, я хочу сосредоточить усилия на обучении навыкам, которыми владею поверхностно и которые очень актуальны на рынке.
5.2.2 На чем стоит сосредоточиться?
Итак, вы выписали навыки, в которых хорошо разбираетесь и в которых не разбираетесь вообще, узнали, какие навыки актуальны на рынке или необходимы для вашей работы, и теперь представляете, на чем должны сосредоточиться.
Вы также можете посвятить часть или все свое учебное время общим, но значимым темам в необходимой отрасли. Для этого отберите адекватный набор навыков, знания о которых хотите постоянно поддерживать. Возможно, это будет непростой задачей, потому что в любой области технологии есть множество противоположных навыков. Вот несколько примеров из самых разных областей:
Разработка программного обеспечения. Языки Java, C#, JavaScript, Python, PHP и сотни других.
Системное администрирование. Операционные системы Windows, Linux, UNIX и операционные системы для устаревших мэйнфреймов и компьютеров среднего уровня.
Обслуживание сети (сетевой инженер). Cisco, Juniper, Aruba и многие другие.
Администрирование баз данных. Microsoft SQL Server, Oracle, MySQL, PostgreSQL и десятки других технологий.
Все эти технологии важны и популярны, и множество работодателей нанимают сотрудников со знаниями любой из них. Итак, что же выбрать? Нужно ли стать экспертом во всех?
Чтобы определить адекватный для себя набор навыков, я начинаю с анализа долей рынка, выясняя уровень популярности того или иного языка, системы или инструмента. Это просто: введите в Интернете нечто вроде «доли рынка сетевых поставщиков» или «доли рынка Сisco», а затем сосредоточьтесь на одном или двух ведущих конкурентах на рынке. Такой подход выполняет две задачи:
определить самые конкурентоспособные компании – те, где я, скорее всего, смогу получить и сохранить работу;
понять, кто находится на более низком уровне. Если я хорошо знаком с ведущими конкурентами, то при необходимости мне будет нетрудно это узнать.
Определив свои целевые навыки, важно помнить, что в них не нужно становиться мировым экспертом. Вам необходимо базовое ознакомление и уверенность в том, что вы сможете в случае необходимости быстро освоить этот навык.
Для меня
В базовом ознакомлении есть и положительный момент: основы любой технологии, как правило, меняются медленнее всего. Это означает, что мои инвестиции в обучение, направленные на ознакомление, будут актуальны дольше, что даст мне время освоить другие навыки на том же уровне знаний. Для меня уверенность в пользе базового ознакомления зависит, как я говорил выше, от того, уверен ли я в своей способности быстро освоить необходимый материал глубже.
5.3 Способность быстро обучаться
Каждый в теории знает, как наращивать мышечную массу: необходимо прорабатывать мышцы каждый день. Некоторые люди говорят, что учатся всю жизнь, однако я предпочитаю думать, что учусь каждый день. Способность мозга учиться и делать это быстро необходимо тренировать и развивать, и для этого нужно делать то же самое, что и для мышц – ежедневно упражняться.
Я каждый день планирую время для учебы, обычно выделяя обеденный перерыв, потому что мне нравится читать. Этот час – прекрасное время для чтения и для того, чтобы отдохнуть от работы и подумать о чем-то другом. Иногда я учусь в машине во время долгой поездки, когда слушаю подкасты или аудиоуроки. Я редко учусь по вечерам и ночью, потому что не способен запоминать новую информацию после ужина.
Чему же я учусь? Может быть удивительно, но я не всегда обучаюсь технологиям. Иногда я читаю новости и проваливаюсь в «черную дыру» информации. Например, мне нравится читать о делах Верховного суда США. Я не юрист, а в статьях часто упоминаются правовые принципы и случаи, с которыми я не знаком, поэтому я их гуглю. Изучая юридические принципы, я натыкаюсь на интересные брифинги и другие короткие документы. Потом я гуглю более ранние случаи и читаю статьи о них. В итоге я получаю некоторое количество знаний на тему, потратив на это всего час.
Сердечной мышце все равно, как вы ее укрепляете: бегаете ли вы, ходите, бьете по боксерской груше, плаваете или занимаетесь какой-либо другой деятельностью. Она знает только, что ее тренируют, и реагирует на это, постепенно становясь сильнее. То же самое и с обучением: ваш мозг не особо интересуется тем, что вы изучаете. Для него главное – чтобы вы использовали его механизмы, предназначенные для обучения. Поэтому я не всегда изучаю новые технологии и навыки, связанные с ними. Я и так делаю это весь день на работе и время от времени разбавляю поступающую информацию другими темами. Тем не менее я обучаюсь каждый день.
Ежедневная практика – это уверенность в том, что при необходимости я могу быстро освоить новые технические навыки или улучшить уже имеющиеся. Однажды за несколько часов я изучил достаточный объем языка Python, чтобы решить серьезную проблему на работе – при том, что я никогда раньше не использовал Python. У меня было некоторое представление об этом языке, потому что он имеет отношение к моей области, и я полностью положился на свою «мышцу» обучения, чтобы узнать нужную информацию и воспользоваться этими знаниями на деле. Я изучил JavaScript, C#, PHP, Linux, PowerShell, Windows, SQL Server, MySQL, Cosmos DB и десятки других технологий практически таким же образом.
Благодаря способности к обучению я уверен в своих базовых знаниях ключевых навыков, популярных на рынке технологий, поскольку знаю, что при необходимости могу выучить больше и сделать это быстро.
5.4 Варианты обучения
Все мы знакомы с классическими средствами обучения в мире технологий: занятиями с преподавателями, самостоятельным обучением по видеоурокам и учебникам. Эти средства эффективны, и их определенно стоит использовать при необходимости. Однако я не хочу, чтобы вы сбрасывали со счетов другие замечательные способы обучения, особенно когда вы учитесь, чтобы идти в ногу со временем, а не осваиваете новый навык с нуля.
На первое место я бы поставил изучение документации разработчика технологии. Я знаю, что качество информации сильно различается в разных отраслях, но возможность учиться на подобной документации – невероятно важный навык в нашей отрасли. Если вы научитесь обращаться к исходному материалу, переваривать его и вычленять новые знания, вас будет невозможно остановить.
Также я использую Интернет, чтобы ознакомиться с новыми технологиями, функциями или подходами. Когда я хочу получить базовое понимание того, как что-то работает, я начинаю именно с поисковой системы: открываю тонны статей в блогах и Википедии, видео на YouTube и других вариантов информации. Я бегло просматриваю эти статьи, пытаясь найти те, которые объясняют тему на подходящем для меня уровне.
Социальные сети также могут помочь в обучении. Твиттер или другая платформа со своей многочисленной аудиторией (особенно, если она ваша) позволяет обратиться ко множеству людей за советом. Если я пытаюсь ознакомиться с технологией и не могу найти никакой полезной информации, то спрашиваю совета у своих друзей в Твиттере. В 99 % случаев в течение дня у меня уже будет дюжина отличных рекомендаций, на которых я и сосредоточу свое обучение на ближайшие несколько недель.