Идеи проектов для начинающих разработчиков

0
4303
views

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

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

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

1. Приложение для создания флешкарточек. Программы для создания списков задач или заметок это классические примеры проектов для оттачивания навыков при изучении нового языка программирования. Но есть одна проблема: закончив работу над этими приложениями, вы быстро о них забудете. Попробуйте создать приложение иного рода, хотя тоже для работы с текстом. Например, генератор флешкарточек. Сами флешкарточки вы сможете использовать для повторения изученного материала.

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

Реализовать такой проект можно разными способами; в частности, это хороший вариант для освоения командной строки.

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

3. Постройте простую операционную систему. (Предлагаемый вариант реализации — любой язык программирования, который вы хотите освоить). Этот проект технически сложен. С его помощью вы сможете углубить свое понимание работы компьютера и операционных систем. Возможно, вы захотите начать с бесплатной книги «Operating Systems: From 0 to 1».

4. Постройте веб-скрапер. (Предлагаемый вариант реализации — любой язык программирования, который вы хотите освоить). Этот инструмент должен принимать URL в качестве входящих данных и возвращать контент страницы по заданному адресу в виде HTML или XML.

5. Отслеживание трафика. (Предлагаемый вариант реализации — инструмент командной строки, работающий в режиме реального времени). Создайте инструмент, который будет отслеживать, сколько данных вы скачиваете или загружаете в интернет. Пускай он присылает вам email с еженедельным отчетом. Для дополнительной сложности попробуйте предсказать время пиковой нагрузки.

6. Реализуйте отправку текстовых сообщений (SMS) с уведомлениями о перебоях в работе сайта. (Для отправки сообщений используется API Twilio). Ваша программа должна принимать URL в качестве входящих данных и отсылать вам текстовое сообщение, когда запрос по этому адресу возвращает код ответа, отличный от 200 (OK).

7. Поиск скидок. (Предлагаемый вариант реализации — веб-приложение с уведомлениями на мобильный телефон). Создайте простое веб-приложение, которое будет отсылать вам уведомления, когда на интересующий вас товар появляются скидки или акции. Информацию со страницы продукта может извлекать веб-скрапер, а уведомления могут отсылаться при любом изменении цены.

8. Отслеживание расходов. (Предлагаемый вариант реализации — мобильное или веб-приложение). Создайте простой интерфейс, который сможете использовать для добавления записей о расходах и распределения их на категории. Реализуйте генерацию ежемесячных отчетов, зависящих от поступающих данных. Напишите какие-нибудь интересные предупреждения, вроде «слишком много тратишь на кофе… как обычно».

9. Генератор случайных имен. (Предлагаемый вариант реализации — CLI-, веб- или мобильное приложение).Создайте генератор, который будет выдавать уникальные имена (на основе алгоритма). Чтобы натренировать программу, используйте техники машинного обучения и простые наборы данных с именами, похожими на те, которые вы хотите генерировать. Или же создайте собственные лексические правила, определяющие принципы генерации имен. В качестве примера можно привести алгоритм из «Рассказа служанки», где имена служанок должны были начинаться на «Оф» и заканчиваться мужским именем («Офпитер»).

10. Программа для создания карт путем процедурной генерации. (Предлагаемый вариант реализации — браузерное приложение). Создайте приложение, которое позволит пользователю осуществлять процедурную генерацию топографических карт на основе случайного начального источника. Карта может быть настолько подробной, насколько вам захочется. Этот проект — хорошая возможность изучить процедурную генерацию.

11. Движок для игры в шахматы. (Предлагаемый вариант реализации — любой язык программирования, который вы хотите освоить). Попробуйте создать программу, которая могла бы играть в шахматы с человеком. В частности, создайте движок этой программы, а в качестве интерфейса используйте Universal Chess Interfacecompatible GUI, вроде Xboard. В качестве примера можно привести Stockfish. Чтобы задача не казалась такой огромной, можете сфокусироваться на какой-то одной части, скажем, на поведении Коней.

12. Специализированный чат-бот. (Предлагаемый вариант реализации — веб-приложение). Величайшие умы мира заняты созданием чат-ботов, ответы которых были бы более похожими на обычную человеческую речь. Это невероятно сложная задача. Но, ограничив масштабы, можно создать собственный чат-бот, даже если работать над ним только по вечерам и выходным. Ваш чат-бот может быть ориентирован на какую-то тему, которой увлекаетесь вы сами, и давать «человеческие» ответы на вопросы о вашей любимой музыкальной группе, видеоигре, спортивной команде, телесериале. В разработке подобного бота вам могут помочь уже существующие библиотеки, такие как ChatterBot.

13. Определитель спама. (Предлагаемый вариант реализации — любой язык программирования, который вы хотите освоить). Создайте инструмент, который будет сортировать электронные письма, определяя, какие являются спамом, а какие — нет. В своей работе этот инструмент должен ориентироваться исключительно на содержимое писем. Для проверки своего определителя спама можно воспользоваться публичным дата-сетом с электронными письмами от Enron.

14. Блокировщик спойлеров. (Предлагаемый вариант реализации — расширение браузера). Если вы проводите довольно много времени в интернете, то при выходе очередной серии очень популярного сериала (вроде «Игры престолов») вам будет трудно обезопасить себя от спойлеров. Создайте расширение для браузера, которое будет удалять все упоминания о вашем любимом сериале с загружаемых страниц… или заменять их на картинки с котятами.

15. Приложение для поиска сеансов интересных для вас фильмов. (Предлагаемый вариант реализации — мобильное или веб-приложение с рассылкой уведомлений). Создайте программу, которая будет отсылать вам уведомление (SMS или email) о выходе в прокат потенциально интересных для вас фильмов. Понятие «интересный фильм» может определяться с использованием машинного обучения (если вы смотрите достаточное количество фильмов и у вас есть хороший набор данных) или какого-нибудь алгоритма. Например, ваша программа может отсылать вам уведомления о фильмах, относящихся к жанру научной фантастики и с рейтингом на IMDB не ниже 7.0, или о фильмах, где снимались определенные актеры, или о любых фильмах с рейтингом 8.0 и выше. Для создания этой программы вы можете использовать Open Movie Database API в паре с HTML-парсером вроде BeautifulSoup.

16. Приложение для ведения записей о температурных показателях. (Предлагаемый вариант реализации — Raspberry Pi, датчик температуры, веб-приложение). При помощи Raspberry Pi и датчика температуры реализуйте отсылку данных о температуре у вас дома в веб-приложение, где полученные сведения будут сохраняться в базе данных или обновляемом CSV-файле. Задание «со звездочкой»: сделайте так, чтобы вам еженедельно отправлялся отчет на email.

17. Инструмент, предлагающий музыкальные записи. (Предлагаемый вариант реализации — wrapper для Spotify API). Создайте инструмент, который будет отслеживать, какую музыку вы слушаете, и генерировать плейлист с похожими, но новыми для вас треками. Spotify API предоставляет все инструменты, необходимые для извлечения информации о прослушиваемых вами треках и создания плейлиста, а ваша задача — создать движок, который будет подбирать рекомендации.

18. Генератор пиксельной графики. (Предлагаемый вариант реализации — любой язык программирования, который вы хотите освоить). Создайте инструмент, который принимает изображение в качестве входящих данных и выдает пиксельную графику на выходе. Если хотите улучшить свои навыки работы сфронтендом, генерируйте пиксельную графику при помощи CSS.

19. Приложение для микрообучения. (Предлагаемый вариант реализации — мобильное или веб-приложение). Создайте приложение, которое будет ежедневно посылать вам по одной веб-странице по выбранной вами теме. Это может быть случайная страница из Википедии, страница из документации React и т. п.

20. Обновление обоев рабочего стола. (Предлагаемый вариант реализации — Unsplash API, скриптовый язык для вашей ОС). Создайте приложение, которое будет ежедневно обновлять обои на рабочем столе вашего компьютера.

21. Планировщик свиданий. (Предлагаемый вариант реализации — мобильное приложение). Одна из самых сложных задач долговременных романтических отношений — решить, куда пойти на свидание. Создайте приложение, которое будет просматривать обзоры ресторанов, календари событий и другие источники данных, чтобы предлагать вам идеи, куда пойти.

22. Планировщик выходов на обед. (Предлагаемый вариант реализации — CLI, мобильное или веб-приложение). Инструмент, аналогичный предыдущему. Он может быть довольно простым и случайным образом выбирать кафе из заданного списка, а может быть и более сложным и выбирать подходящее заведение, основываясь на отзывах в Google и учитывая расположение заведения, цены и вид кухни.

23. FTP-клиент. (Предлагаемый вариант реализации — CLI, мобильное или веб-приложение). Постройте простой FTP-клиент. Для усложнения задачи реализуйте защищенную передачу данных.

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here