Трудно быть хорошим разработчиком программного обеспечения без страсти к обучению.

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

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

Разработка игр

Разработка собственной игры - это очень увлекательно. Это позволяет вам дать волю своей фантазии и посмотреть, как оживают ваши творения. Моей самой первой игрой был онлайн-шутер от первого лица, который был создан с четырьмя моими друзьями за пару дней. Несмотря на то, что он был полон ошибок, мы смогли подключиться и играть вместе. Без сомнения, это был один из моих любимых проектов (3 из них сейчас работают разработчиками игр, а для 2 из них это была первая игра, которую они когда-либо делали). Я получил массу знаний и понял, что создание хорошей игры требует некоторых навыков программирования высокого уровня.

Очевидно, что нет лучшего способа научиться делать игру, чем создавать ее на самом деле.

Прежде чем начать, вы должны спросить себя, хотите ли вы создать 2D, 3D или, возможно, VR-игру. Выбор за вами, в любом случае, рекомендую попробовать игровой движок Unity. Он бесплатный, с огромным сообществом и поддерживает все платформы, о которых я упоминал ранее. Недавно Unity выпустила интерактивные учебные пособия, которые помогут вам познакомиться с пользовательским интерфейсом платформы. Вот ссылка на официальное руководство по Unity.

Алгоритмы сортировки

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

Отличное место для начала изучения этих алгоритмов - визуализатор сортировки, созданный Университетом Сан-Франциско. Ознакомьтесь с некоторыми другими инструментами, которые они создали! Затем просто выберите свой любимый язык и попробуйте, реализовав самые простые алгоритмы, такие как Selection Sort, переходя к более продвинутым, таким как король алгоритмов сортировки Quick Sort.

Машинное обучение

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

Если вы хотите попробовать машинное обучение, нет лучшего языка, чем Python. Я бы рекомендовал начать с некоторых алгоритмов, таких как уже упоминавшаяся линейная регрессия или KNN. И прежде чем переходить к некоторым инструментам вроде TensorFlow или SciKit-Learn, вам стоит хотя бы взглянуть на две библиотеки - Numpy и Pandas. Они предоставляют набор инструментов для обработки больших объемов данных.

Приложение Fullstack

Велика вероятность того, что вы веб-разработчик или веб-разработчик. Разделять эти платформы - это хорошо, но пробовали ли вы создать целое приложение самостоятельно? Начиная с разработки веб-приложения, за которым следует создание внутреннего сервера, соединение его всех вместе и развертывание, чтобы вы могли почувствовать весь процесс с нуля. Backend и frontend взаимозависимы (обычно), поэтому могут быть полезны небольшие знания из обеих областей.

Чтобы стать специалистом, крайне важно знать, что происходит в сообществе разработчиков, и проверять тенденции. Поэтому я рекомендую создать простой проект, например, приложение TODO. Идея состоит в том, чтобы разработать одно и то же приложение с использованием разных технологий, которые вам интересны. Например, если вы являетесь разработчиком внешнего интерфейса, вы можете попробовать React, Angular, Vue.js, Svelte и подключиться все это на простой сервер, выполненный по технологии по вашему выбору. Точно так же, как Backend-разработчик, создайте простое внешнее приложение с какой-нибудь популярной библиотекой, а затем подключите его к одному из своих серверов, чтобы вы могли просто попробовать любой фреймворк, который хотите, или даже другой язык. Это может быть Express для JavaScript или, может быть, Django для Python. Я очень рекомендую создать такую ​​экспериментальную среду.

Попробуйте C ++

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

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

Инструмент повышения производительности

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

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

Действие - основополагающий ключ к успеху. - Пикассо