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

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

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

Я собираюсь поделиться с вами своим учебным планом и расписанием занятий

1. Изучайте один неуправляемый язык вне зависимости от вашей должности и уровня

Важность понимания C и C++ не ограничивается конкретными ролями, такими как фронтенд-инженеры, бэкенд-инженеры, DevOps или мобильные разработчики. Эти языки служат основой для многих ведущих языков программирования, таких как JavaScript, Python и Java. Они либо написаны непосредственно на C, либо сильно зависят от C или C++.

Хотя верно то, что C и C++ могут быть более сложными по сравнению с такими языками, как JavaScript, Python и Java, из-за их сосредоточенности на управлении памятью и низкоуровневых компьютерных концепциях, именно поэтому их изучение имеет решающее значение. Глубокое понимание C и C++ позволяет инженеру-программисту понимать фундаментальные принципы информатики, такие как указатели, распределение памяти, тупиковые ситуации и ситуации с нехваткой памяти.

Даже если вы в основном работаете с внешними технологиями и фреймворками, такими как JavaScript или TypeScript с React, наличие прочной основы в C и C++ позволит вам выйти за рамки поверхностного использования и по-настоящему понять лежащие в основе механизмы. Эти знания становятся ценными, когда вам нужно глубже погрузиться во внутреннюю работу таких технологий, как Chrome (который написан на C++ и C) или Node.js (который написан на C и C++). Познакомившись с этими языками, вы сможете получить представление об основных функциях инструментов и платформ, на которые вы полагаетесь, что позволит вам принимать более обоснованные решения и эффективно устранять неполадки.

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

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

2. Читайте исходный код

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

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

Если вам трудно выделить дополнительное время для чтения кода вне ваших рабочих обязанностей, вы можете включить чтение кода в свою повседневную жизнь, изучая различные кодовые базы в своей профессиональной среде. Например, вы можете посвятить часть своего рабочего дня погружению в популярные проекты с открытым исходным кодом, такие как React-Table, React-Query, Express.js, Preact.js и другие. Эта практика позволяет вам учиться на стандартных кодовых базах и знакомиться с хорошо зарекомендовавшими себя методами кодирования.

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

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

3. Напишите код

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

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

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

4. Создавайте проекты

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

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