ТОП-5 проектов, которые должен сделать каждый программист

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

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

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

Программирование

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

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

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

Веб-парсер

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

Веб-парсер

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

Данный пример я больше советую опытным программистам.

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

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

API

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

API

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

Сделав собственный API вы поймете очень базовые основы создания чего-то вроде Facebook, Instagram или Google. Многие мобильные и веб-приложения используют данный метод взаимодействия бэкенда с фронтендом.

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

Для примера создайте небольшое веб-приложение которое позволяет добавлять, изменять и удалять список гостей ресторана. Также с возможностью отдельно просматривать информацию каждого гостя. Используйте API для взаимодействия фронтенда с бэкендом.

Это очень фундаментальная практика, которая даст вам возможность делать что-то подобное, что действительно круто.

Игра змейка

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

Игра змейка

Я рекомендую сделать это в браузере на JavaScript, потому что это самый простой способ проверить свои силы в создании игр. Используйте элемент Canvas, который предназначен для рисования графиков, создания фотокомпозиций, анимаций и даже обработки и рендеринга видео в реальном времени. Он является отличным инструментом для графического рендеринга в браузере.

Конечно не обязательно, но после этого я бы также рекомендую попробовать сделать змейку на другом языке и создать игру с графическим интерфейсом, например, на Java или Python. У обоих есть библиотек. В случае с Python это библиотека TKinter, а для Java можно использовать библиотеку JavaFX. Многие отзывы ссылаются на то, что для этого на Python потребуется больше строк кода чем на Java, да и сама библиотека TKinter работает медленнее и на то есть очевидные причины.

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

Веб-сервер

Думаю любой кто работает с веб-приложениями и вообще в какой-то степени связан с вебом, должен попробовать создать свой веб-сервер. Если вы работали с API и работаете на стороне бэкенда, то вы более менее знакомы с данной темой.

Веб-сервер

Сегодня самый популярный способ создать веб-сервер это использовать Linux в качестве операционной системы, а именно установить например дистрибутив ubuntu server. Конечно можно арендовать на сайтах хостинга веб-сервер, однако придется каждый месяц платить тарифный план. Есть и альтернативный вариант. Это установить виртуальную машину и на неё уже установить веб-сервер. Ну а если у вас есть старый компьютер или ноутбук, то я конечно же рекомендую установить веб-сервер именно туда, то есть на физический компьютер, так-как это даст вам больше знаний в данной области и вы по крайней мере не забросите его если например установите на виртуальную машину.

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

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

Поверьте, иметь домашний веб-сервер это очень круто. 

Мобильное приложение To Do List

И последний в этом списке - это создать мобильное приложение todo list или список задач. Дело в том, что все мы наблюдаем как смартфоны все больше и больше влияют на нашу жизнь и термин mobile first появился неспроста. Мобильные приложения стали доступнее и большинство обычных интернет пользователей больше предпочитают именно их вместо браузеров.

Мобильное приложение To Do List

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

Todo list это небольшое приложение, которое может добавлять, изменять или удалять задачи.

Можно использовать как нативную разработку, так и кроссплатформенные SDK, такие как Flutter и React Native. В втором случае процесс займет намного меньше времени. В любом случае где разрабатывать выбирать вам, самое главное это конечно же опыт и улучшение ваших навыков как программиста. Быть может, после этого вас заинтересует данная ниша, и в свой стэк вы подключите и разработку под мобильные приложения.

Заключение

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

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

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