Получите скучный материал правильно

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

«Какой стек технологий позволит мне работать?»

«Стоит ли мне попробовать эту горячую новую библиотеку JavaScript?»

«А как насчет ______ (виртуальная реальность / искусственный интеллект / машинное обучение / большие данные и т. Д.…)?»

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

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

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

Эти опасения кажутся скучными. У них нет такой привлекательности, как та новая модная вещь, о которой вы только что слышали в Интернете. У них нет крутых кодовых имен. Тем не менее, правильные поступки будут иметь наибольшее влияние.

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

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

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

Начни здесь: бери на себя ответственность

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

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

Возьмите на себя ответственность за свою судьбу.

Примите установку на рост

Вторая важная вещь - принять установку на рост. В нашей отрасли существует миф о том, что мы называем «10-кратным разработчиком». Эти волшебные единороги превосходят нас, простых смертных, своей божественной силой. Хотя между разработчиками могут быть большие различия в навыках, никто не рождается гениальным разработчиком программного обеспечения. Мы все можем поправиться.

Установка на рост означает, что вы соглашаетесь с тем, что не знаете всего. Вы непрерывно работаете. Это отличается от человека с установкой на данность, который считает, что способности фиксированы. Это люди, которые говорят о навыках разработчика вроде «нельзя научить высоту». Установление на данность делает вас слабым в долгосрочной перспективе. Если вам нужно сохранить хрупкое представление о себе как о гуру, вы не станете бросать вызов себе и не станете совершенствоваться. Залог долгой и счастливой карьеры в разработке программного обеспечения - постоянное совершенствование.

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

Если вы хотите узнать больше об установке на рост, вы можете прочитать Образ мышления Кэрол Двек или эту статью, в которой резюмируется ее исследование.

Составьте план

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

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

  • Какую карьеру я хочу?
  • Меня больше волнуют деньги, стабильность или интересная работа?
  • Какой уровень баланса между работой и личной жизнью я хочу?
  • В каких компаниях я хочу работать?
  • Какие виды технологий мне нравятся или интересны?
  • Куда я хочу, чтобы моя карьера пошла дальше?
  • Хочу ли я когда-нибудь перейти в менеджмент или начать свой бизнес?
  • Я хочу специализироваться или быть более универсальным?

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

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

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

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

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

Лично я считаю, что раннее утро - лучшее время для личного обучения. Хотя я не жаворонок, я считаю, что легче всего избавиться от сложных умственных способностей до рабочего дня. После работы я сосредотачиваюсь на семье и фитнесе.

Ваш пробег может отличаться. Вы можете тренироваться утром, а учиться вечером. Выясните, что работает с вашим уровнем энергии, и запланируйте время.

Кроме того, перенаправьте другие блоки времени на обучение. Я «читаю» более 50 книг в год на Audible, пока я в машине, убираю дом и занимаюсь садовой работой. Это хороший способ сделать это время более полезным. Я также удалил со своего телефона все приложения социальных сетей в пользу программы для чтения RSS-каналов и приложений Instapaper. Разгрузив некоторые мои менее интенсивные учебные задачи на бесполезное вспомогательное время, я могу использовать свое выделенное время на обучение, чтобы сосредоточиться.

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

Также подумайте о том, как вы хотите распределить свое время между вечнозелеными навыками и новыми технологиями. Ваше распределение должно быть основано на ваших карьерных приоритетах, более полезно сосредоточиться на вечнозеленых навыках. Хотя смотреть на новые вещи - это весело, в конечном итоге постоянные навыки помогут вам создавать лучшее программное обеспечение.

Думайте о своих навыках как о инвестиционном портфеле. Большинство портфелей сбалансировано между рискованными, но потенциально высокооплачиваемыми инвестициями и более безопасными инвестициями. В мире высоких технологий ваши постоянные навыки - это надежные инвестиции. Инвестиции в свои вечные навыки всегда окупаются. Изучение новых блестящих технологий - более рискованное вложение. Вы можете выиграть, но также можете получить бесполезный технический навык. Как и в случае с портфелем, склоняйтесь к более безопасным инвестициям. Я бы порекомендовал разделение 75/25 в пользу вечнозеленых навыков.

Выбор навыков для обучения

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

Во-первых, поймите, что вкладывать время в новую технологию - все равно что делать ставку. Вы делаете ставку на то, что эти навыки помогут вам в долгосрочной перспективе. Если вы посмотрите на прошлое, некоторые ставки окупились, например, JavaScript или Azure, а некоторые нет, например Silverlight. Не всегда легко понять, что принесет плоды, и это еще одна причина тратить больше времени на вечнозеленые навыки. Хотя они не собираются подтолкнуть вас к работе в области искусственного интеллекта 500 тыс. В год, вечнозеленые навыки принесут большую пользу.

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

В то время как радар Thoughtworks имеет категории, связанные с внедрением технологии, ваш личный радар должен иметь категории, связанные с вашим собственным обучением. Не стесняйтесь включать в свой собственный радар то, над чем вы хотите поработать, и не являться актуальной новой тенденцией. Мой личный технологический радар со временем превратился в нечто большее, чем «интеллектуальный радар», куда я включаю мягкие навыки и вечнозеленые навыки наряду с новыми технологиями.

Я использую следующие категории:

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

Мой список «Углубляйтесь»: публичные выступления, письмо, облачная архитектура, React, производительность и безопасность ASP.NET

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

Мой список подписчиков: Angular, Design, Node.js, Data Analytics, XR, 3D-печать, психология.

Избегайте
Это технологии, которых я активно избегаю. Это не значит, что это плохие технологии. Чужое «углубление» легко может быть моим «избеганием». Эта категория предназначена для вещей, которые интересны, но не соответствуют моим общим карьерным целям. У Уоррена Баффета есть упражнение, в котором вы перечисляете свои 25 основных карьерных целей, выбираете 5 лучших и затем активно избегаете остальных из них. Это то же самое, но для техники.

Мой список «Избегайте»: нативная мобильная разработка, Интернет вещей

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

О чем следует подумать при выборе технологий для вашего радара:

Является ли это популярной технологией и останется ли она такой?

Можете ли вы узнать достаточно о конкретном навыке, чтобы оказать влияние на рынок?

Сможете ли вы перейти от того, что вы делаете, к этому новому навыку?

Я учусь этому ради развлечения или ради карьеры?

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

Вечнозеленые навыки

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

Базовый дизайн и UX

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

По художественной части дизайна рекомендую схитрить. Выберите фреймворк, например Bootstrap, и настройте цветовую схему, используя цвета из логотипа компании. Убедитесь, что у вас достаточно контраста между текстом и фоном и вы проложены на 90%. Я не слишком большой художник, но получить «достаточно хороший» визуальный дизайн несложно.

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

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

Книги, которые стоит посетить: Дизайн для хакеров, Не заставляйте меня думать, Дизайн повседневных вещей
Интересные сайты: A List Apart, Smashing Magazine

Развлечение в основах

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

Представление

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

Безопасность

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

Ремонтопригодность

Последний фундаментальный навык - научиться создавать тестируемый код. Вопреки распространенному мнению, автоматическое тестирование на самом деле ускоряет кодирование. Вы не только получите выгоду позже, но и сразу почувствуете выгоду от написания тестов. Узнайте, как писать автоматизированные тесты на различных уровнях вашего стека.

Мягкие навыки

Некоторым людям нравится ненавидеть термин «мягкие навыки», как будто «мягкость» является синонимом «плохого». Когда я думаю о софте, я думаю о боевых искусствах. В боевых искусствах мягкие и жесткие техники используются в разных ситуациях. Точно так же при разработке программного обеспечения важны как мягкие, так и жесткие навыки. Есть две важные причины, по которым вы хотите уделять много времени работе над soft skills. Во-первых, мягкие навыки никогда не выходят из моды. Человеческий мозг имел примерно такую ​​же конфигурацию более 50 000 лет. Технологии и культура меняются, но человеческая природа - нет. Вторая причина заключается в том, что то, что отличает вас от недорогого базового кодера, - это способность работать с различными заинтересованными сторонами и обрабатывать как технические, так и нетехнические стороны разработки программного обеспечения. Если вы хотите быть лидером в управленческом или техническом смысле, вам нужно иметь дело с людьми.

Вот несколько мягких навыков, над которыми стоит поработать.

Навыки общения

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

Помимо четкой передачи информации, мир стал бы лучше, если бы каждый научился ненасильственному общению и навыкам разрешения конфликтов. Даже самые спокойные разработчики (в том числе и я) могут попасть в споры, которые легко разрешить в разговоре. О ненасильственном общении посвящена целая книга, но самый важный вывод - избегать навешивания ярлыков на себя и других. Вместо того, чтобы «вы облажались, потому что вы __________», измените свою критику на что-то вроде «Ты сделал _________, и это заставило меня почувствовать _______. Вы могли бы ______________? » Если вы избегаете использования ярлыков и суждений, ваши обсуждения станут намного более продуктивными.

Критическое мышление важно

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

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

Если вы хотите узнать больше о человеческой склонности к ошибкам, ознакомьтесь с разделом Мыслить быстро и медленно

Почувствуйте дзен

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

Как учиться

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

Есть много доступных ресурсов о том, как учиться более эффективно. Для начала неплохо было бы Make It Stick.

Возьмите на себя ответственность, расставьте приоритеты и сосредоточьтесь

Технологии постоянно меняются, и вы должны сами взять на себя ответственность за свое образование.

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

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

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

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