Если вы только начинаете свой путь программирования, вы, вероятно, видели бесконечное количество руководств на YouTube и в других местах в Интернете, которые научат вас создавать простые приложения. Как правило, это базовые веб-приложения в стиле todo с базовым пользовательским интерфейсом. Некоторые могут включать или не включать подключение базы данных и аутентификацию пользователя. Эти проекты, безусловно, полезны на начальном этапе, но в какой-то момент вы захотите выйти из приложения todo и перейти к чему-то гораздо более сложному. Здесь на помощь приходят сайд-проекты.

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

Увеличьте сложность и вызов

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

Как мы можем усложнить наши проекты? Давайте использовать todo-приложение в качестве примера. Предположим, что прямо сейчас мы можем войти в приложение и добавлять и удалять напоминания о задачах. Хорошими дополнительными шагами для усложнения этого приложения могут быть:

  • Возможность группировать задачи вместе
  • Добавить сроки выполнения в todos
  • Возможность поиска/фильтрации задач по дате выполнения или группе

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

Подумайте о функциональности, которую вы хотите создать

Учебники полезны, когда вы осваиваете новый язык программирования или фреймворк. Однако, когда у вас есть один или два языка программирования, вы должны меньше думать об изучении синтаксиса и фреймворков, а больше о том, как создавать функциональные возможности. Вместо того, чтобы думать: «Я хочу изучить React в своем следующем проекте», подумайте: «Мне нужно создать пользовательский интерфейс панели инструментов для моего следующего проекта, и я собираюсь использовать React для его создания». Хотите создать стартап? Затем сосредоточьтесь на том, чтобы научиться создавать эффективную целевую страницу, независимо от того, какой инструмент использовался для ее создания.

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

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

Используйте API из ваших любимых продуктов

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

  • Spotify Web API — просмотр исполнителей, плейлистов, альбомов и т. д.
  • YouTube Data API — размещайте видео, получайте аналитику по каналам и видео и т. д.
  • Reddit API — получайте посты и комментарии для анализа текста, получайте мемы и т.д.
  • Twitch API — читайте чат в режиме реального времени и получайте события канала через веб-хуки

Вы можете легко найти другие API, погуглив. Нравится финансы? Существует множество API финансовых данных. Готовка? Вероятно, есть рецепт API. Если нет, то это новая идея сайд-проекта :).

Добавить облачные сервисы

Кажется, что каждая вакансия в наши дни требует знакомства с облачными сервисами. Интеграция поставщика облачных услуг, такого как AWS, GCP или Azure, в сторонний проект — хороший способ получить такой опыт. Все поставщики предлагают сотни различных сервисов и инструментов, ориентированных на конкретные варианты использования, от развертывания до обработки данных и машинного обучения. Это означает, что, вероятно, существует облачный сервис, который подойдет для вашего проекта.

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

Обязательно просмотрите каталог предлагаемых услуг. Наличие общего представления о том, что там есть, открывает двери для того, что вы можете построить, и позволяет вам быть более творческим. Такие сервисы, как AWS SNS, позволяют добавлять в проекты функции обмена сообщениями. Теперь вы можете добавлять SMS-напоминания в свое приложение todo!

Собираем все вместе

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

  • Японский агрегатор учебных ресурсов, который использует Reddit и API YouTube для получения новейших учебных ресурсов и хранения их в таблице DynamoDB. (Это можно расширить на любую тему по вашему выбору, я просто изучаю японский как хобби.)
  • Симулятор акций Twitch, где чат может вводить заказы на общей моделируемой учетной записи. (Окей, я уже построил это здесь. Вы можете попробовать это для крипты.)
  • Полнофункциональное веб-приложение для тренеров по фитнесу, позволяющее управлять своим расписанием и отслеживать прогресс своих клиентов. Его нужно будет где-то разместить и хранить пользовательские данные.
  • API рецептов, который возвращает рецепт или кулинарное видео в зависимости от того, какие ингредиенты вводит/имеет пользователь.

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

Надеюсь, эта статья вдохновила вас начать бросать себе вызов, чтобы вы могли развиваться как разработчик. Удачного строительства!