Это перевод статьи, опубликованной на сайте medium.com. В ней разработчик из Нидерландов Daan советует разные проекты, которые помогут в свободное время прокачать профессиональные навыки: от работы c 3D до создания биткойн-трекера.


Фото с сайта Unsplash. Автор: Christopher Gower

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

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

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

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

Проект 1: личная база знаний


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

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

Предположим, вам также захочется добавить функцию хранения файлов PDF в вашу базу знаний, так как они являются ценным источником информации. Если вы действительно готовы к дополнительному объему работы, то для индексации таких файлов вы можете встроить поисковый движок вроде Elasticsearch или Algolia. При индексации названия и автора появится возможность внедрить функцию поиска. Также если добавить теги, то поиск станет еще проще.

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

Почему это полезно?

  • Вы узнаете основы веб-разработки (HTML5 и CSS).
  • Научитесь взаимодействовать с базой данных.
  • Поймете, как хранить файлы вроде PDF.
  • Узнаете, как работать с поисковиком и внедрять поиск для индексированных данных.

Проект 2: поработайте в 3D



Фото с сайта Babylon.js

Что может быть круче, чем немного поиграться с 3D? Если вы никогда ничего не программировали в 3D, я крайне рекомендую попробовать, ведь это обязательно подарит море удовольствия. Самое классное — вам не нужно начинать с нуля.

Взгляните на D3 или Babylon, которые представляют собой проекты WebGL. Я сам немного баловался с Babylon, так как мне его рекомендовали. Babylon имеет интерактивную площадку, где можно экспериментировать с API и учиться на ходу. Для запуска вам ничего не потребуется, ведь IDE работает онлайн, точно так же, как и CodePen.

Почему это полезно?

  • Вы поймете, как работает 3D.
  • Узнаете о векторах, камерах и сценах.
  • Научитесь создавать огромное количество крутого контента!

Проект 3: трекер для биткойна на основе Raspberry Pi



Фото с сайта Unsplash. Автор: Harrison Broadbent

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

Цель этого проекта — узнать текущую стоимость биткойна, что можно сделать через API, и вывести ее на дисплей. Так что помимо Raspberry Pi понадобится еще несколько вещей: светодиодный матричный дисплей, светодиоды и блок питания.

В качестве дополнения вы можете встроить изменение цвета стоимости биткойна. Например, если она повышается, цифры становятся зелеными, а если снижается, то красными.

Почему это полезно?

  • Вы познакомитесь с основами использования Raspberry Pi.
  • Научитесь работать с API.
  • Больше узнаете про взаимодействие программного обеспечения и оборудования.

Проект 4: Pong


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

Если вы хотите создать приложение, советую использовать язык Swift для этого проекта. Если же хотите работать с помощью HTML5, то можно отдать предпочтение фреймворку JavaScript, например React или Vue.

Почему это полезно?

  • Вы узнаете, как работать с Canvas.
  • Изучите движение объектов и выявление столкновений.
  • Поймете, как отслеживать нажатие клавиш.
  • Можете дополнительно встроить функцию использования компьютера в качестве противника.

Проект 5: WebSockets



Окно моего чата, открытое в двух вкладках браузера

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

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

Создание чата — идеальный способ начать знакомство с WebSockets. Что касается подбора технологий, то выбор огромен. Один из рабочих вариантов — программная платформа Node.js.

Почему это полезно?

  • Самым ценным уроком этого проекта станет понимание механизма работы сокетов.

Проект 6: решение лабиринта


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

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


Фото с сайта ResearchGate

Почему это полезно?

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

Проект 7: Boston Housing Dataset



Фото с сайта Unsplash. Автор: Tierra Mallorca

Boston Housing Dataset — хорошая возможность познакомиться с машинным обучением. Это популярный массив данных, который используется в литературе, посвященной распознаванию образов. Источником данных для этого массива послужила индустрия недвижимости в Бостоне, сам он был создан в 1993 году.

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

Цель проекта — спрогнозировать медианное значение домов, занимаемых собственниками.

  • Почему это полезно?
  • Вы разберетесь в машинном обучении.

Пора переходить к практике!


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

«Если тебе не весело, ты делаешь что-то не так», — Граучо Маркс.

Happy coding!