Пет-проекты
Пет-проекты - это отличная возможность получить практический опыт при изучении языка программирования, библиотек и фреймворков. Они могут стать отправной точкой для собеседований и приглашением к диалогу, если вы только начинаете свою карьеру.
Часто возникают трудности с поиском и выбором идеи пет-проекта. Мы попробовали собрать небольшую коллекцию ссылок и идей, которые могут стать хорошим началом для последующего вдохновения. Ознакомившись с ним, возможно получится выбрать наиболее подходящую тему.
Сторонние ресурсы
Коллекция проектов, которые предлагались различными компаниями или комьюнити в рамках ежегодной программы стажировки студентов от Google. Архив содержит проекты за последние несколько лет. Представлено большое количество проектов для языка C++. Возможно вы найдете для себя что-то интересное в архиве для практики, либо попробуете свои силы в будущих стажировках.
Репозиторий содержит коллекцию пет-проектов, собранные для различных языков программирования. Также включает обширный список идей для C++.
Рулетка с идеями для пет-проектов. Настраиваете ожидаемую сложность проекта и запускаете рулетку. Дальше случайность решит за вас, какую задачу придется решать :)
Список идей для пет-проектов
Игры
Ниже представлен список классических видеоигр, которые не содержат в себе сложного искусственного интеллекта или динамическую генерацию мира. Вы можете попробовать реализовать одну из нижеперечисленных игр, а далее дорабатывать дополнительный функционал. В качестве графической библиотеки вы можете использовать SFML. Это простая в использовании библиотека, которая предоставляет достаточный набор возможностей для создания несложных графических интерфейсов для 2D или 2.5D игр при помощи спрайтов. Если же вы захотите сделать что-то более сложное, где применяется физика, то можете начать с простых движков, например: Box2D. Или же освоить более продвинутые: Cocos2D, Unreal Engine и т.п. Не забывайте о правиле: “от простого, к сложному”. Начинайте с простого, и постепенно повышайте сложность.
- Змейка
- Тетрис
- Жизнь
- Пятнашки
- Арканоид
- Сапер
- 2048
- Пасьянс
- Пасьянс-паук
- Пинг-понг
- Donkey Kong
- Лабиринт
- Сетевые игры для 2-4 игроков: пинг-понг, морской бой, покер, шашки, шахматы и т.д.
Рекомендуем ознакомиться с нижеперечисленными источниками, которые содержат больше информации о различных алгоритмах для игростроения. Они могут пригодиться для одной из вышеперечисленных игр, или же для собственных идей:
- https://www.redblobgames.com/
- http://www.squidi.net/three/
Приложения
При создании приложения начинайте с самой простой реализации консольного приложения. После каждого выполненного шага ставьте более сложную задачу, например: добавить графический интерфейс для приложения, научить приложение запрашивать данные из источника при помощи http-запроса, а затем записать/прочитать полученные данные в тестовый файл/базу данных и т.д. Помните о принципе: “от простого к сложному”.
- Сетевой чат (на чистых сокетах или при помощи gRPC)
- Калькулятор
- Файловый менеджер
- Конвертер валют
- Получение списка Pull-Requests или Issues в любом Github репозитории
- Автоматизация рутинных: различные вычисления и формирование отчетов в виде таблиц
Студенческие приложения
Нижеперечисленные примеры больше подойдут для студентов, которые изучают или недавно изучили базовые дисциплины: линейная алгебра, аналитическая геометрия, математический анализ, физика и т.д. Задачи по применению изученной теории помогут одновременно “поймать двух зайцев”: закрепить изученную теорию на практике, а также попрактиковаться в программировании. Этот путь не закрыт для остальных, но заведомо проще для студентов, т.к. свежи знания по академическим дисциплинам.
- Библиотека линейной алгебры: матрицы, вектора, действия с ними
- Моделирование различных процессов: физика, теоретическая механика и т.д.
- Применение численных методов: интегрирование, дифференцирование, аппроксимация, интерполяция и т.д.