Современный мир меняется и развивается очень… очень быстро. Мало кто может точно сказать, что будет через год, через месяц или хотя бы завтра. Точнее, никто не может. Банки, правительства, фонды и крупные корпорации готовы платить огромные деньги лишь за то, чтобы хотя бы в ближайшем будущем хоть немного взглянуть. Возможность видеть «игру» на несколько шагов вперед дает невероятное преимущество в мире, где информация и осведомленность превыше всего. Конечно, мы, простые люди, не можем предсказывать будущее и не можем знать наверняка, какие навыки и знания будут иметь для нас и другого мира наибольшую ценность. Всегда трудно выбрать, куда мы должны инвестировать наше время и силы. Для нас это очень сложный и важный вопрос для всех, но для программистов он важнее, чем для всех остальных. Информация — это наш инструмент, это наше сырье, это цель нашей работы. Все, что мы делаем, это управление, анализ, передача и преобразование информации. Программисты — это острие информационного ножа современного мира. Из-за этого правильные инвестиции в наши навыки очень важны. К сожалению, мы не можем предсказать будущее и понять, что будет востребовано в следующем году/месяце/неделе, слишком быстро все меняется. Но у меня есть некий план, который поможет нам всегда быть готовыми ко всему новому и поможет нам быть в центре внимания на рынке труда разработчиков программного обеспечения. Я разделил его на три пункта: теория, практика и индивидуальный бренд.

Теория:

  1. Системный дизайн и архитектура приложения
    В любой ситуации мы будем создавать приложения. В любой области и в любом продукте мы будем использовать множество различных компонентов, которые нам придется использовать в сотрудничестве друг с другом. Нам нужно будет построить блоки и сервисы и настроить их связь. Так что в этой задаче нам поможет понимание теории архитектуры и теории проектирования систем. Существует множество источников изучения этой темы, не стесняйтесь проводить исследования по этой теме и находить лучшие ресурсы, наиболее подходящие для вас, но вот некоторые из них, ставшие классикой в ​​этой области:
    О шаблонах:
    1) Шаблоны_дизайна;
    2) Шаблоны архитектуры корпоративных приложений;
    3) Чистая архитектура;
    Системный дизайн:

    https://www.educative.io/courses/grokking-the-system-design-interview;
  2. Понимание ОС и низкоуровневых процессов
    В итоге мы всегда работаем с операционной системой и в редких случаях напрямую с железом. Наши инструменты являются дополнением к OS API, это просто более удобный способ сказать компьютеру, что делать. Память, браузеры, сокеты, процессы, компиляторы, все, что мы используем в своей работе, является лишь оберткой для десятков функций операционной системы. Хорошее понимание ОС и процессов, которые работают (и которые мы запускаем) под капотом, поможет лучше понять, как все работает в целом. Вот несколько хороших ресурсов, которые помогут вам начать с этого:
    1) Современные операционные системы;
    2) Компьютерные системы: взгляд программиста;
  3. Новые библиотеки и новые функции в вашей области.
    Чтобы держать руку на пульсе и всегда быть в курсе, вы всегда должны следить за всеми новостями, библиотеками и выпусками, которые так или иначе связаны с вашей профессиональные поля. Вы должны понимать, куда движется ваша отрасль, и какие возможности вы можете использовать, чтобы улучшить свое положение в будущем. Вот хорошая статья André Pena, в которой это описано более чем идеально: Как мне оставаться в курсе последних событий в качестве разработчика

Упражняться:

  1. Вклад в разработку открытого исходного кода
    Чтобы стать отличным разработчиком, недостаточно иметь хорошую теоретическую базу. Вы также должны практиковать свои навыки и становиться лучше, делая. Потому что если вы хотите стать хорошим программистом, вы должны читать и писать тонны и тонны кода. Конечно, у вас уже есть работа, где писать код на 8–5, но этого недостаточно. Вам нужно подышать «свежим воздухом», вам нужно увидеть другие проекты, поговорить с другими людьми, попытаться понять их код и их мысли, только так вы сможете получить настоящий разнообразный профессиональный опыт. Лучший способ для этого — присоединиться к проектам с открытым исходным кодом, вы сможете увидеть лучшие практики кода и организации процесса, сделать что-то полезное и не иметь жестких обязательств. Вы можете попробовать внести свой вклад в инструмент с открытым исходным кодом, который вы используете в своей работе, или присоединиться к любому другому сообществу, которое покажется вам интересным. Кроме того, это отличная запись в вашем резюме и возможность развивать свой социальный профиль.
  2. Решение задач алгоритмов
    Как однажды сказал Никлаус Вирт: Программирование — это структура данных плюс алгоритмы. И это действительно похоже на правду. Наша работа — манипулирование информацией с помощью кучи алгоритмов. К счастью, информационные технологии имеют ограниченный набор структур данных и алгоритмов. Я не могу сказать, что для того, чтобы стать богом программирования, нужно просто изучить их все. Конечно, это не будет правдой. Но понимание хотя бы некоторых основных структур данных и алгоритмов поможет вам решить большую часть стандартных задач очень элегантно и эффективно. И наверняка это окажет огромное влияние на качество вашего кода. Также, в качестве хорошего преимущества, вы сможете устроиться на работу в FAANG намного проще ;) Я бы рекомендовал вам начать с книги по изучению алгоритмов: Introduction to Algorithms (или выбрать что-то подходящее для вашего языка), а затем потренируйтесь на leetcode.com
  3. Дополнительные проекты/Стартап
    Запускать собственный проект всегда интересно. Даже если у вас не будет коммерческого успеха, вы получите очень ценные навыки как в технической, так и в деловой сфере. Вы можете попробовать реализовать свои старые идеи, которые, по вашему мнению, сделают мир лучше. И сделать это с помощью крутых и современных технологий, которые вы не успели опробовать в своей обычной работе.

Персональный медиабренд:

  1. Блог
    Очень важно делиться своими идеями с людьми и чтобы люди вас видели. Вам будет легче найти единомышленников и добиться какого-то авторитета в своей сфере. Люди будут знать, что вы делаете и на что способны, и когда им понадобятся такие же навыки, как у вас, они обратятся к вам. Вы можете попробовать вести свой блог на аккаунтах Medium или Twitter, что угодно, просто общайтесь с ними, делитесь своими мыслями и опытом, наверняка кому-то это будет полезно и интересно.
  2. StackOverflow
    Я думаю, что это лучшее место, где можно показать свой опыт, практику решения проблем и помочь людям. Хороший профиль StackOverflow — хороший признак отличного разработчика.
  3. Хакатоны/Конференции
    И самое главное — выходите из дома, знакомьтесь с людьми, ощущайте драйв командной работы и делитесь своей индивидуальностью в реальном мире. Участвуйте в хакатонах, конференциях, во всем, где вы можете показать, насколько вы хороши. Вы всегда получаете там что-то новое, что может повысить вашу карьеру, нетворкинг и навыки.