Пет-проект как один из лучших вариантов практического обучения начинающего программиста
О пет-проектах знают на Хабре многие. У кого-то такой проект крайне сложный, у кого-то попроще. И разрабатываются такие проекты с разной целью — от just for fun до обучения или доказать самому себе — «Я могу». На самом деле, пет-проекты — отличный вариант для практического обучения начинающих программистов. Да и опытные профессионалы, освоив новую технологию, тоже часто делают на базе полученных знаний что-то новое, чтобы закрепить в памяти и получить новый навык. Но максимальный профит от домашних проектов всё же получают новички. Кстати, эта статья — именно для начинающих разработчиков.

Почему пет-проект — хороший вариант для обучения?
Дело в том, что большинству работодателей, за малым исключением, нужны программисты с опытом, пусть и начинающие. Если опыта нет, в плане работы над какими-то проектами в компании, то пет-проект может послужить дополнительной строкой в разделе «Опыт» своего портфолио. При этом сделать можно практически любой проект, соответствующий профилю специалиста, — от чат-бота до 3D-модели.
Конечно, желательно, чтобы такой проект приносил пользу. Не обязательно, но если вы сможете сделать знакомому предпринимателю чат-бота для сайта, сам сайт или же сервис оплаты фотографий для фотографа, то это будет только плюс. Соответственно, и идеи для пет-проекта можно брать, исходя из потребностей — своих собственных или знакомых, друзей, партнёров.
Кроме портфолио, проект поможет закрепить полученные из книг/YouTube/курсов и форумов знания. Если это первый или второй ваш проект, то отдельные кусочки теории начнут постепенно складываться в единое целое, после чего станет понятно, где и как применять всё это на практике.
Как начать работу?

После того, как идея найдена, стоит проконсультироваться со знакомыми, которые могут её оценить. Вдруг они смогут посоветовать что-то полезное либо найдут проблему в самой идее.
Далее нужно на бумаге или в электронном виде расписать свою идею подробно.
Затем — посмотреть, что уже есть из инструментов, выполняющих аналогичную задачу. Это в случае создания первого-второго пет-проекта не самый важный пункт. Можно сделать хоть калькулятор, но чтобы он был хорош.
Затем, если идея комплексная, попробуйте продумать сценарий использования своего проекта, а потом — продумайте ещё и стек технологий. Нужно понимать, какими возможностями будет обладать новый проект, какая логика лежит в его основе. К слову, если вы планируете использовать незнакомые для себя технологии, то лучше взять пока то, что попроще, поскольку освоение совсем нового для себя ЯП может оказаться долгим процессом. Поскольку мы говорим в основном о новичках, то в этом есть смысл, чтобы в ходе решение задачи не пропал запал и сохранилась мотивация. Так будет проще — готов какой-то модуль, запустили — всё работает, видим прогресс.
Нужно также чекнуть версии библиотек и фреймворков, которые вы планируете использовать. Дело в том, что разные версии не всегда совместимы либо же совместимы, но не полностью. Это желательно выяснить ещё на этапе планирования. Ещё достаточно важно снизить количество внешних зависимостей до минимума. А если они есть, тогда стоит брать в работу лишь то, что есть в крупных/регулярно обновляемых репозиториях.
Если проект сложнее, чем тот же калькулятор, то стоит подумать о разработке MVP, который затем можно дать кому-то протестировать. Если будут проблемы, то всё это можно будет оперативно решить.
Не стоит забывать и о GitHub. Если он постоянно обновляется, то потенциальный работодатель это может оценить. Если же всё делать локально, то ваша активность будет заметна только для вас. Ещё одно достоинство работы с GitHub с самого первого дня — возможность включения в резюме лишь ссылки на репо, название проекта и описания технологий, которые использовал разработчик.
Можно также попробовать поработать в команде — снова-таки, это если проект комплексный. Разработали веб-сервис? Друг-дизайнер может продумать и реализовать удобный интерфейс к нему.
Какими могут быть пет-проекты?
Как и говорилось выше, в принципе, любыми. Но лучше всего сделать что-то такое, что можно «потрогать».
Мини-игра
Какая-то небольшая игрушка с интересными особенностями — отличный вариант для разработчика игр либо для фронтендера. Это может быть тетрис, змейка (сделайте её огнедышащей, например), шахматы и т. п.
Специфический сервис
Он может быть не очень сложным, но нужным. Например, можно сделать подбор аналогов различных электронных компонентов — это если вы хорошо разбираетесь в электронике и понимаете, что и как должно работать.
Можно также разработать калькулятор для расчёта заработной платы сотрудников в компании, куда вы планируете устроиться.
Интернет-магазин
Его можно сделать для себя и затем заниматься бизнесом, продавая, например, сделанные при помощи лазерного гравера брелоки, визитные карточки, конструкторы и т. п. Здесь двойной профит — и небольшая прибыль, и строка о проекте в своём портфолио.
Приложение для нумизмата или библиофила
Многие увлекаются коллекционированием монет. Сделать их классификатор либо же разработать сервис для любителей книг — отличная задача. Сначала можно сделать самый простой сервис и приложение, а по мере того, как вы будете набираться опыта, — всё это можно дорабатывать, дополняя возможности и функции.

В конечном итоге вы получите море удовольствия от финального результата, ведь сможете увидеть итог всей работы, поймёте, как реализовать различные фичи и возможности.
Главное здесь — работать над пет-проектом регулярно. Авральный метод, когда пару недель затишье, а потом много часов тратится на работу не подходит, так обычно теряется всякая мотивация, и появляется множество недоработанных проектов. Не надо так.
- diy
- diy или сделай сам
- diy-проекты
- обучение
- обучение программированию
- программирование
- пет-проект
- технологии
- Блог компании МТС
- Программирование
- Учебный процесс в IT
4 ПРАВИЛА ПОИСКА ИДЕЙ ДЛЯ ПРОЕКТОВ

Изучая любой язык программирования люди часто входят в разряд «еще одного программиста». В лучшем случае находят себе работу в каком-нибудь научном институте, разрабатывая низкопробные многомиллионные проекты и с полным отсутствием стремления двигаться вперед, на долгие годы «находит себя» на этом месте, безрезультатно лелея мечты о высокой зарплате, интересной работе . Это очень грустно. И как бы абсурдно не звучало для некоторых — это реалии.
Но не для нас! Мы с вами знаем, куда двигаемся! Мы с вами знаем чего хотим! Мы с вами знаем к чему стремимся!
Буду немного циничным, но отмечу, что хорошая новость в том, что есть прямая зависимость между количеством бесперспективных людей и возможность эффективной реализации ваших амбиций. Благодаря этому «место где рождаются идеи» никогда не будет пустым и имея лишь немного смелости вы обязательно сделаете то, что принесет вам и счастье, и деньги, и независимость.
Но что же такое «удачная идея для проекта»? Где ее взять и как с ней обращаться?
Некоторые из вас пришли в такую тему, как разработка приложений на Swift, с уже четко сформировавшейся или пока лишь зарождающейся идеей, мечтой или целью. Поздравляю, даже не зная языка программирования, вы уже на шаг дальше многих из нас. Пока другие сидят, вы уже ищите варианты и возможности для воплощения затеянного. У вас есть смелость и мотивация.
Никто не приходит в программирование просто так. Что? А вот вы пришли просто так? Тогда поздравляю! Программирование — это довольно тяжело, а значит вы обладаете смелостью, а мотивация в этом случае не особо и нужна))
Важно не упустить момент, когда вы еще полны знаний и желания творить. И это совершенно не зависит ни от возраста, ни от пола, ни от нации, ни от наличия у вас котенка.
Но вот вопрос: А что, если у меня еще нет идеи, и я не знаю, что именно делать и куда двигаться дальше?
Несмотря на то, какие цели поставили вы перед собой, ради чего впряглись в Swift (да или в любой другой язык), я советую вам заниматься поиском идей для собственных проектов.
Правило 1. Заведите дневник
Пока я сам не сделал этого, я даже и не подозревал, сколько же идей может рождаться в воспаленном сознании программиста. Большинство из них возникает из неоткуда, само по себе, не в результате глубокой мыслительной деятельности… И, повертевшись в мозгу, внезапно так же в никуда и улетает.
Спешите ловить мысли! А для этого просто заведите дневник и всегда носите его с собой. Или заведите два дневника (электронный и бумажный), и один из них всегда должен быть с вами.
Записывая свои идеи вы встретитесь с двумя положительными эффектами:
- прекратите забывать и начнете копить идеи;
- дадите возможность им вылежаться.
Удивительно, но порой именно откладывание идеи на потом работает лучше, чем мозговой штурм «здесь и сейчас». Я люблю перелистывать свои дневники, воскрешая в памяти утонувшие в бездне памяти идеи и мысли. Некоторым из них достаточно часа, а некоторые могут всплыть уже спустя года. В любом случае время дает возможность взглянуть на идею по-новому. Со временем ваш мозг начинает работать все яростнее, и количество записей растет и растет.
И кстати, чуть ранее я оговорился, что у меня не один, а несколько дневников. На самом деле их очень несколько, а еще они переполнены листочками и записками. Листочки просто везде. Со временем я стал заложником ситуации. В ход пошли все тетради и записные книги, и даже ежедневник жены, так как в нем был свободный уголок.
Со временем наступает момент, когда вам есть что записать, и есть, что сказать, вы все чаще параллельно прорабатываете несколько проектов. И тут ваш дневник не выдерживает: мысли относительно одного и того же дела раскиданы по всем страницам, проекты перемешиваются между собой, а навигация становится очень сложной.
Конечно я пробовал перенести все записи в электронное хранилище, но тут во главе стола встала моя манера планирования. Я очень тесно веду план работы на день и неделю с моими идеями по проектам, а найти соответствующее моим требование приложение, которое бы не просто позволяло мне писать список дел на дату, или список заметок к проекту, у меня не получилось.
Из этого появляется следующее правило.
Правило 2. Чешите там, где чешется у вас
Или другими словами, в первую очередь решайте свои, а не чужие проблемы.
Из возникшей и все нарастающей проблемы ведения дел я все хуже стал в них ориентироваться. Некоторые мысли были записаны на бумажке и по дороге к соответствующему блокноту скоропостижно потеряны. И тогда было решено, как бы пошло это не звучало, «почесать там, где чешется у меня». Я стал прорабатывать программу для ведения записей и планирования времени (место забронировано под ссылку на приложение).
Если вы решаете свою проблему, то она решается в два, в три, в сто раз эффективнее. У вас есть мотивация, вам некомфортно, вы хотите побыстрее исправить ситуацию.
Если вы посмотрите вокруг себя, то совершенно точно найдете то, что хотели бы изменить или доработать. Помните, что если проблема возникла у вас, то вы точно найдете тех, кому можно будет продать ее решение.
Но когда-нибудь возможно вам придется двигаться дальше, придумывать что-то новое, нужное не столько вам, сколько людям. Вам потребуется искать решение не своих проблем, а проблем рынка. От сюда мы переходим к третьему правилу.
Правило 3. Смотрите вокруг
С развитием Интернета появилась устойчивая тенденция перехода услуг и копирования вещей из реального в цифровой мир. Вы заказываете товары, пишите письма, планируете отпуск и многое другое — в сети. Огромное количество стартапов становятся успешными лишь предлагая нам делать посредством мобильников то, для чего раньше приходилось использовать физические вещи.
Вспомним замечательный проект Trello. Обычная и давно существующая идея канбан-досок была перенесена в электронный вид, и теперь, при грамотном маркетинге, ее услугами пользуются мировые гиганты вроде Google и Adobe. И таким примеров может быть бесчисленное количество.
Хотите найти что-то новое? Взгляните вокруг! Посмотрите, какую услугу можно перенести в вид битов и байтов. А может быть вы сможете доработать уже существующую ее реализацию, соединив два или три проекта в один?
Правило 4. Не усложняйте
Начав записывать и планировать, особенно если ваша идея объединяет в себе несколько других, вы рискуете создать монстра, которым будет невозможно пользоваться. И хотя эта тема не относится напрямую к поиску идей, я бы хотел остановиться тут на минутку.
Создать мультифункциональный комбайн можно и порой даже нужно (если этого требует рынок), но в большинстве случаев вы просто отпугнете потенциального покупателя. Сегодня народ хочет брать и использовать, а не брать, читать, изучать и использовать. Максимум на что согласны пользователи, это небольшое обучающее вступление на 3-5 обязательно красивых картинок. Вот именно в этот объем вам и нужно уместить возможности своего будущего проекта. Сложный проект скушает сам себя.
Не переживайте, вы найдете своего пользователя. Просто внимательно слушайте его и дорабатывайте проект, реализуя наиболее универсальные механизмы.
40 идей сторонних проектов для программных инженеров
Перевод статьи Тэш Постоловски «40 Side Project Ideas for Software Engineers».

Один из главных способов развития навыков и повышения своих шансов устроиться на работу программным инженером это работа над сторонними проектами. Проекты могут быть самыми разными: от проектов с открытым исходным кодом, вспомогательных инструментов и сценариев до интересных игрушек.
Хотя создается впечатление, что некоторые из наших коллег постоянно трудятся над новыми сторонними проектами, для других это не так уж и легко. Мы хотим работать над сторонним проектом, но пытаемся найти хорошую идею.
По моему опыту, это случается когда мы подсознательно искусственным образом себя ограничиваем. Например, мы можем намеренно ограничивать виды проектов, которые воспринимаем как “стоящие”.
Поднимая планку слишком высоко – вроде цели создать успешную, популярную и оригинальную open source библиотеку – мы отнимаем у себя возможность получить удовольствие и научиться чему-нибудь на менее амбициозных, но все равно достойных сторонних проектах.
В этой статье я хочу помочь вам в борьбе со «ступором», предложив 40 идей сторонних проектов, которые каждый программный инженер может начать в выходной. Здесь нет ударения на проектах, которые изменят мир. Вместо этого здесь есть интересные проекты, которые позволят вам добавить что-то к своему портфолио и сделают вас лучшим разработчиком.
Сторонние проекты, связанные с информатикой

Эти проекты подходят инженерам, пытающимся расширить свои основные знания по информатике. Они помогут вам узнать больше об отдельных аспектах работы с компьютером, таких как передача файлов и проектирование операционных систем. В частности, эти проекты могут быть полезны для разработчиков-самоучек, которые больше сконцентрированы на практических навыках, чем на основах информатики.
- FTP клиент (предлагаемая реализация: web, CLI или десктопное приложение). Постройте простой FTP-клиент. В качестве дополнительной задачи сделайте поддержку безопасной передачи файлов (secure file transfer).
- HTTP-сервер (предлагаемая реализация: любой язык программирования, над которым вы хотите поработать). Для глубокого понимания HTTP постройте HTTP-сервер. Есть много доступных руководств, которые могут помочь вам в этом процессе.
- Постройте простую операционную систему (предлагаемая реализация: любой язык программирования, над которым вы хотите поработать). Это технически сложный проект, который поможет углубить ваше понимание работы компьютера и операционных систем. Возможно, вы захотите начать с бесплатной книги с интересным названием: «Operating Systems: From 0 to 1».
- Постройте веб-скрапер (предлагаемая реализация: любой язык программирования, над которым вы хотите поработать). Создайте инструмент, принимающий URL в качестве input и возвращающий контент в виде HTML или XML.
- Bandwidth monitor (предлагаемая реализация: инструмент обновления CLI в реальном времени). Создайте инструмент для отслеживания количества скачиваемых и загружаемых в интернет данных. Пускай ежемесячно присылает вам отчет на email. Для дополнительной нагрузки – прогноз пикового времени использования.
- Осуществление шифрования (предлагаемая реализация: любой язык программирования, над которым вы хотите поработать). Создайте инструмент, принимающий текстовую строку в качестве input и зашифровывающий ее, например, с помощью шифра Цезаря.
- Создайте downtime-сигнализатор (предлагаемая реализация: приложение, подключенное к Twilio API для отправки текстовых сообщений). Создайте приложение, принимающее URL как input и отсылающее вам текстовое сообщение, когда запрос к URL возвращает другой код ответа, чем 200 (OK).
Сторонние проекты, связанные с личными финансами

Эти проекты помогут вам решить практические задачи (лучше управлять своими финансами), а также улучшат ваши навыки в программной инженерии.
- Калькулятор прибыли и трекер ( предлагаемая реализация: CLI, веб или мобильное приложение). Создайте калькулятор, который сможете использовать для отслеживания ежемесячного роста и снижения своих доходов. Вы можете руководствоваться чем-то вроде net worth worksheet от Чральза Шваба. Возможное расширение: пусть он отсылает вам отчет за предыдущие 12 месяцев 01 января каждого года.
- П рогноз налогов ( предлагаемая реализация: веб-приложение). Это будет особенно полезно, если вы занимаетесь программной инженерией на фрилансе. Создайте инструмент, принимающий в качестве входных данных ваши заработки и выдающий ожидаемую сумму налогов, которую нужно будет уплатить в конце финансового года. Сделайте его достаточно умным, чтобы он мог учитывать периоды большего или меньшего спроса на ваши услуги.
- Поиск сделок ( предлагаемая реализация: веб-приложение с мобильными уведомлениями). Создайте простое веб-приложение, уведомляющее, когда желанный для вас товар будет выставлен на продажу по хорошей цене. Вы можете использовать веб-скрапер для извлечения страницы продукта и уведомления вас об изменении цены.
- Отслеживание расходов ( предлагаемая реализация: веб- или мобильное приложение). Создайте простой интерфейс, который вы сможете использовать для добавления и разбивки своих расходов по категориям. Генерируйте ежемесячный отчет, основанный на входящих данных, и напишите пользовательские уведомления вроде «тратишь слишком много на кофе… как всегда».
- Калькулятор финансовой независимости ( предлагаемая реализация: веб-приложение). По существу, финансовая независимость это как можно большее сохранение и вкладывание доходов (инвестиции), что позволяет не нуждаться в работе для получения денег. Хотя многие финансово независимые люди продолжают работать, они могут позволить себе работать над тем, чем им нравится заниматься, а не тем, за что больше платят. Постройте инструмент для подсчета того, насколько вы далеки от финансовой независимости, основанного на ваших текущих сбережениях, инвестициях, доходах, пенсионных счетах и расходах. Примеры: FIREcalc, cFIREsim.
- «Разбиватель» счетов ( предлагаемая реализация: мобильное приложение). Постройте простой инструмент, который поможет вам и вашим друзьям делить счет, когда вы вместе обедаете.
Игры и симуляторы

Я знаю, что большинство программных инженеров очарованы миром разработок игр, графики и симуляторов, но не имеют достаточно опыта в этом. Эти проекты достаточно маленькие чтобы вы могли заглянуть в этот мир и при этом не откусить больше, чем можете прожевать.
- Генератор случайных имен ( предлагаемая реализация: CLI, веб- или мобильное приложение). Постройте генератор случайных имен (пример), создающий уникальные названия на лету, основываясь на алгоритме. Используйте приемы машинного обучения чтобы помочь натренировать программу с примерным набором данных из имен, похожих на те, что вы хотите генерировать. Или создайте собственные лексические правила генерации имен. Например, алгоритм генерации имен, вдохновением для которого послужил «Рассказ служанки», может иметь условие, что имена Служанок должны начинаться с «Оф», а оканчиваться на случайное мужское имя, например, Офпитер.
- И гра «Жизнь» (Conway’s Game of Life) ( предлагаемая реализация: любая платформа, способная на графический рендеринг в реальном времени). Игра «Жизнь» симулирует жизнь простых клеток, которые подчиняются алгоритмическим законам. Это видео поясняет, как работает игра, и включает пример возможного результата:
- Процедурно генерируемый создатель карт ( предлагаемая реализация: приложение на основе браузера). Создайте браузерное приложение, позволяющее процедурную генерацию карты местности на основе случайного начального числа. Карта может быть такой простой или сложной, как вы хотите. Этот проект – хорошая возможность изучить процедурную генерацию.
- Генератор персонажей ( предлагаемая реализация: браузерное, мобильное приложение, CLI). Создайте инструмент, позволяющий случайно генерировать подходящие персонажи для вашей любимой ролевой игры, как настольной (вроде Pathfinder), так и видео-игры (вроде «Divinity: Original Sin»).
- Interactive fiction (предлагаемая реализация: CLI). Интересный способ войти в разработку игр без необходимости волноваться о графических ресурсах. Interactive fiction создает мир для игрока с помощью текстовых описаний. Dreamhold – хороший пример Interactive fiction с полезной командой «help».
Сторонние проекты, связанные с искусственным интеллектом
Применение ИИ в ежедневной программной инженерии растет не по дням, а по часам. Вторгнуться в мир искусственного интеллекта сейчас легче чем когда-либо.
- Идеальный движок для игры в крестики-нолики (предлагаемая реализация: программа CLI). В качестве прекрасного первого ИИ-проекта попробуйте написать движок, который нельзя победить в игре в крестики-нолики. Вы можете достичь такого результата, реализовав эту стратегию, которая делает ничью худшим исходом игры.
- Шахматный движок (предлагаемая реализация: любой язык программирования, над которым вы хотите поработать ). Попробуйте написать движок, способный играть в шахматы с человеком, используя GUI, совместимый с Universal Chess Interface, например, Xboard. В качестве примера посмотрите Stockfish. Чтобы упростить задачу вы можете сфокусироваться на поведении только какой-то части, например, коней.
- Чат-бот (предлагаемая реализация: веб-приложение). Часть лучших умов человечества сейчас заняты реалистично отвечающими чат-ботами. Это ужасно сложная задача, но если сузить рамки для вашего чат-бота, у вас будет сторонний проект на вечера и выходные. Создайте чат-бот, выдающий реалистично звучащие ответы по теме, которой вы увлекаетесь: ваша любимая музыкальная группа, видеоигра, спортивная команда, ТВ-шоу. Используйте уже существующую библиотеку, такую как ChatterBot.
- Определитель спама (предлагаемая реализация: любой язык программирования, над которым вы хотите поработать ). Постройте инструмент для определения, является ли письмо спамом, основываясь только на содержимом. Вы можете воспользоваться этим публичным набором данных из исследования Enron для тестирования вашего определителя спама.
Сторонние проекты, связанные с развлечениями
Это проекты для программных инженеров, которые хотят работать над чем-то интересным и беззаботным.
- Поиск времени показа фильмов ( предлагаемая реализация: веб- или мобильное приложение с смс-уведомлениями или отправкой е-мэйлов). Постройте программу, которая будет уведомлять вас с помощью смс или email о времени показа потенциально интересных для вас фильмов в вашем любимом кинотеатре. Представление об «интересном фильме» может быть получено с помощью машинного обучения (если вы смотрите достаточно фильмов для получения хороших тренировочных данных) или написанного вручную алгоритма. Например, для построения программы, которая будет уведомлять вас о фильмах в жанре научной фантастики с рейтингом IMDB 7.0 и выше, или фильмах с Эми Адамс, фильмах со средним рейтингом 8.0 или выше, можно использовать Open Movie Database API вместе с HTML-парсером вроде BeautifulSoup.
- Б локировщик спойлеров ( предлагаемая реализация: расширение браузера). В современном мире спойлеры ваших любимых фильмов, особенно таких популярных, как «Игра престолов», могут настигнуть вас повсюду (в социальных сетях/интернете/бачках с питьевой водой). Создайте расширение браузера, удаляющее все упоминания о вашем любимом шоу с загружаемых страниц или заменяющее их картинками с котятами.
З абавные сторонние проекты

Все эти проекты разные, от логов сенсорных данных до поиска новых фонов рабочего стола для вашего компьютера. Их роднит только то, что они занимательны, а некоторые из них заставят вас познакомиться с интересными API.
- Pixel art генератор ( предлагаемая реализация: любой язык программирования, над которым вы хотите поработать ). Постройте инструмент, принимающий изображение в качестве входящих данных и преобразует его в pixel art на выходе. Если хотите улучшить свои навыки, касающиеся фронтенда, генерируйте конечный pixel art используя CSS.
- Инструмент, предлагающий музыку ( предлагаемая реализация: постройте враппер для Spotify API). Создайте инструмент, отслеживающий музыку, которую вы слушаете, и генерирующий плейлист сходного качества, но из песен, которые вы прежде не слышали. Spotify API предоставляет все инструменты, необходимые для извлечения данных о прослушанных композициях и для создания плейлиста, а движок рекомендаций – за вами!
- Регистратор температуры ( предлагаемая реализация: Raspberry Pi, датчик температуры, веб-приложение). Подключите ваш Raspberry Pi к датчику температуры и отсылайте температурные данные из вашего дома на веб-приложение, которое сохранит их в базе данных или обновит CSV-файл. Для получения бонусных очков сделайте еженедельный отчет по температуре, присылаемый вам на email. Другие проекты Raspberry Pi: домашняя автоматизация, домашняя безопасность.
- Приложение для «микрообучения» ( предлагаемая реализация: мобильное или веб-приложение). Постройте приложение, высылающее вам ежедневно одну страницу по теме, которую вы хотите изучить. Это может быть случайная страница из Википедии, из документации по React, о букве кандзи или страница из CIA World Factbook.
- Slack-бот ( предлагаемая реализация: Slack API). Если вы или ваша команда используете популярное чат-приложение Slack, постройте бот, облегчающий какие-то аспекты вашей жизни. Идеи: бот заказа кофе, бот, ежедневно докладывающий о числе коммитов, сделанных в репозиториях вашей команды, или напоминалка по какой-то теме.
- Обои рабочего стола ( предлагаемая реализация: Unsplash API, язык сценариев для вашей ОС). Постройте приложение, которое будет ежедневно обновлять обои вашего рабстола.
З адачи на написание кода
Вместо создания проекта с нуля для улучшения ваших навыков можно взять сборники задач на написание кода. Если вы хотите поработать над определенными проблемами или новы м язык ом программирования, это хорошие варианты.
- Advent of Code ( предлагаемая реализация: любой язык программирования, над которым вы хотите поработать ). Задания в Advent of Code появляются ежегодно в преддверии Рождества. Они включают множество занимательных задач, которые могут помочь вам подтянуть язык программирования, который вы изучаете или с которым хотите поработать. Задачи за 2015, 2016 и 2017 год все еще доступны.
- Kaggle’s Titanic Challenge ( предлагаемая реализация: Python или R). Kaggle предлагает захватывающее задание, знакомящее вас с основами машинного обучения с помощью Python или R: использовать настоящий набор данных о регистрации пассажиров «Титаника» для предположений, кто из пассажиров скорее всего пережил катастрофу.
- Project Euler ( предлагаемая реализация: любой язык программирования, в котором вы хотите попрактиковаться ). Задания в Project Euler посвящены изучению союза математики и программирования. Используйте инструменты программирования для решения разнообразных математических задач.
Сторонние проекты, связанные с обыденностью

Эти сторонние проекты имеют практическое назначение: они помогают справляться с некоторыми аспектами вашей ежедневной жизни. Поскольку они решают простые проблемы реального мира (вроде выбора обеда), эти решения по вашему желанию могут быть как простыми, так и сложными.
- Выбор обеда ( предлагаемая реализация: CLI, мобильное или веб-приложение). Если вы работающий программный инженер, вы, должно быть, сталкивались с самым сложным вопросом в разработке программ… «куда пойти поесть?». Ваш инструмент для выбора обеда призван дать ответ на этот вопрос. Он может быть супер-простым и делать случайный выбор из известного вам списка опций или более сложным – извлекать данные из Google Reviews и учитывать расположение, цены и тип кухни.
- Планировщи к свиданий ( предлагаемая реализация: мобильное приложение). Самое сложное в том, что касается свиданий и длительных отношений, это решение, куда пойти на свидание. Постройте инструмент, просматривающий обзоры ресторанов, календари событий и собирающий другие данные для выдвижения идей.
- Инструмент для упрощения вашей электронной переписки ( предлагаемая реализация: скрипты, подключенные к почтовому серверу). Если мы с вами похожи, вы еженедельно получаете слишком много писем и они накапливаются в вашем почтовом ящике. Вместо того чтобы отписываться от них от всех в припадке гнева, постройте инструмент, который будет компилировать их в одно письмо и отправлять вам его раз в неделю.
- Напоминалка «Возьми зонтик» ( предлагаемая реализация: мобильное приложение). Постройте простое мобильное приложение, которое по утрам будет присылать вам на телефон уведомление о том, что нужно взять с собой на работу зонтик (например, если в вашей местности ожидается дождь).
- Отслеживатель коллекций ( предлагаемая реализация: мобильное или веб-приложение). Постройте инструмент для отслеживания чего-то, что вы собираете. Вы можете следить за ценой предмета, годом изготовления, состоянием, местоположением.
Сторонние проекты, связанные с данными
Эти проекты улучшат ваши способности по работе с данными. Программные инженеры работают со все возрастающим количеством данных. Эти проекты помогут вам научиться уверенно сравнивать, парсить и анализировать данные.
- Создайте и автоматически обновляйте набор данных ( предлагаемая реализация: веб-скраппер на входе и CSV на выходе). Постройте инструмент, автоматически создающий и обновляющий набор данных, касающихся чего-то, что вас интересует. Рекомендуемые наборы данных: статистика по вашей любимой спортивной команде, полеты в направлении, куда и вам бы хотелось отправиться, метеорологические данные региона, где вы живете. Самое главное, что этот набор данных должен нуждаться в регулярном обновлении по мере генерации новых данных, и это должно осуществляться автоматически. Например, когда результаты вашей спортивной команды публикуются на сайте, данные должны автоматически скрапиться и добавляться к вашему набору данных.
- Вступите в соревнование по науке о данных ( предлагаемая реализация: R или Python). На Kaggle есть много соревнований по науке о данных, оперирующих наборами данных из реального мира и имеющих огромные денежные призы. Перед вами будут стоять реальные проблемы вроде того, как определить отравляющие онлайн-комментарии, предсказать посетителей в ресторане или распознавать объекты из космоса.
Поделитесь своим сторонним проектом
Одна из самых сложных вещей в работе над сторонними проектами – получить одобрение кого-то кроме вас сами, вашей половинки и вашей кошки Милли. Воспользуйтесь комментариями как возможностью поделиться своим проектом с другими и расскажите,
- Что было сложнее всего в работе над этим проектом?
- Что вы узнали, занимаясь этим проектом, чему научились?
- Что бы вы посоветовали тем, кто хотел бы начать похожий проект?
Pet-проекты: что это, зачем нужны и как их сделать. Идеи для пет-проектов в IT

Личные проекты для программистов и других IT-специалистов помогают прокачать профессиональные навыки, получить бонус на работе или даже запустить собственный стартап. Рассказываем, зачем компании поощряют внерабочую деятельность сотрудников, какой проект можно сделать, и делимся историями студентов, которые занимаются собственными пет-проектами.
Что такое пет-проект
Пет-проект (pet — англ. «домашний питомец, любимец») — это проект, который разработчик делает для себя, в свободное от основной работы время. Многие популярные сервисы начинались именно так. В начале нулевых выпускник Стэнфорда Кевин Систром в свободное от работы время разрабатывал приложение Burbn. С его помощью можно было делать фотографии, отмечать геометки, а также делиться заметками. Позже Кевин познакомился с Майком Кригером, и они выложили приложение в AppStore под названием Instagram. А уже в апреле 2012 года Кевин и Майк продали свою разработку Фейсбук* за 1 млрд долларов.

«IT-специалист с нуля» наш лучший курс для старта в IT
В тех же нулевых студент СПбГУ Павел Дуров в свободное от учебы время создавал некоммерческие проекты, посвященные общественной и научной жизни университета: Durov.com и Spbgu.ru. В октябре 2006 года он зарегистрировал домен vkontakte.ru, а в 2008 году количество пользователей соцсети превысило 20 млн. Крупные компании часто поощряют внерабочую деятельность сотрудников. Например, в 2004 году в Google запустили «Правило 20%»: сотрудники могли определенную часть своего рабочего времени посвящать личным проектам. Именно так родились Gmail и Google News. Правда, был один нюанс: все разработки сотрудников являлись интеллектуальной собственностью компании. В 2011 году, после прихода Ларри Пейджа на пост гендиректора, сотрудники Google рассказали, что компания фактически отказалась от «Правила 20%». Правда, в самом Google заявляли, что по-прежнему выделяют сотрудникам время на внерабочие проекты.
Профессия / 8 месяцев
IT-специалист с нуля
Попробуйте 9 профессий за 2 месяца и выберите подходящую вам
4 116 ₽/мес 7 483 ₽/мес

*деятельность компании Meta Platforms Inc., которой принадлежит Инстаграм / Фейсбук, запрещена на территории РФ в части реализации данной (-ых) социальной (-ых) сети (-ей) на основании осуществления ею экстремистской деятельности
Плюсы пет-проекта
- Пет-проект ничем не ограничен: ни сроками, ни форматом, ни технологиями. Можно реализовать свои самые безумные идеи для проекта по программированию или освоить новые навыки.
- Это хороший способ отдохнуть от рабочей рутины и посвятить время интересным для вас вещам.
- Начинающие разработчики могут добавить свой проект в портфолио — удачные кейсы всегда интересны потенциальным работодателям и будут бонусом при трудоустройстве.
Минусы пет-проекта
- Сложно находить время и на работу, и на пет-проект, и на отдых. Заниматься своим проектом приходится по остаточному принципу, когда есть силы.
- Как и любой стартап, пет-проект может «не выстрелить», но это риск, который есть в любом бизнесе.

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить
Основные шаги по созданию пет-проекта
Шаг 1. Продумайте идею (гипотезу) проекта, чему он посвящен, какие задачи решает. Про то, откуда брать идеи проектов, мы написали в следующей части.
Шаг 2. Проведите небольшое исследование, чтобы проверить гипотезу. Поймите, на кого будет рассчитан ваш пет-проект, есть ли похожие на него приложения или сайты, какие у них функции. На этом этапе важно собрать обратную связь.
Откуда можно взять данные, чтобы проверить гипотезу
1. Использовать существующие данные (кабинетные исследования):
- готовые маркетинговые исследования в открытом доступе;
- социальные сети конкурентов и статьи в медиа;
- анализ поисковых запросов;
- отзывы пользователей;
- обращения клиентов в поддержку (если есть доступ);
2. Создать новые данные (полевые исследования):
- глубинные интервью — интервью с потенциальным или действующим пользователем о его проблемах и способах решения;
- экспертные интервью — опрос лидеров мнений в отрасли;
- опрос пользователей;
- фокус-группа — интервью сразу с несколькими представителями целевой аудитории.
Шаг 3. Сделайте MVP(minimum viable product, минимально жизнеспособный продукт) — это продукт (или набор действий), направленный на то, чтобы подтвердить ценность будущего продукта для потребителей.
Для чего нужен MVP:
- чем раньше вы поймете, что ошиблись, тем раньше доработаете решение или откажетесь от проекта;
- по фидбеку вы поймете, удобен ли для использования проект.
Чтобы собрать обратную связь об MVP, можно провести разные виды тестов:
- скетч-тесты быстрого опыта: создается прототип, который выглядит как продукт (или имитирует какие-то его функции), его передают пользователям для взаимодействия и записывают результаты наблюдений;
- тесты «входной двери» — сбор предоплат/ценной информации. За доступ к услуге (или продукту), возможно, еще не созданной, взимается оплата или собираются заявки. Например, на некоторых посадочных страницах размещают информацию о еще не созданном продукте и оценивают количество обращений;
- тесты, имитирующие работу сервера, — «ручные процессы». Используются, например, когда планируется автоматизировать какой-то процесс: сначала создают интерфейс, который для пользователей выглядит реально, но на самом деле процессы выполняют сотрудники вручную;
- тесты «полного опыта» — сборка продукта из подручных средств. Тут продукт не разрабатывают с нуля, а используют готовые решения: Google Формы, конструкторы сайтов
Шаг 4. Получившийся кейс можно добавить в портфолио либо развивать дальше в полноценный продукт.
Как придумать идею для проекта
Отталкивайтесь от задач, которые хотите выполнить, и технологий, которые хотите изучить. А чтобы идея для проекта нравилась непосредственно вам, можете связать его с темой, которая интересна и важна. Если интересуетесь цифровой доступностью, можно продумать и реализовать идею сервиса для людей с ограниченными возможностями. А если хочется приблизить будущее — можно создавать необычные системы на микрокомпьютерах, например собственный «умный» будильник.
Если собственных идей у программиста нет, можно воспользоваться примерами идей для проекта. Подобрали несколько популярных вариантов.
1. Таск-трекер
Для кого: веб-разработчики, в первую очередь frontend.
Срок разработки: от нескольких дней до месяца.
Создать таск-трекер — своего рода мем в сфере фронтенд-разработки. Сервис для отслеживания задач считается классической первой задачей. Сложность зависит только от программиста: можно сделать простой интерфейс, чтобы только заносить задания и помечать выполненными. А можно создать целое приложение, где получится указывать дедлайны, настраивать уведомления о сроках, задавать расписание для регулярных тасков и так далее. Даже простой трекер со временем можно усложнять и доделывать, так чтобы это был проект для программирования или других задач «на все времена».

2. Мини-игра
Для кого: веб-разработчики, геймдевы, геймдизайнеры.
Срок разработки: от нескольких дней до месяца.
Можно придумать проект в виде своей реализации известной игры, например, «змейки», «арканоида» или «тетриса». Есть и более необычные идеи: создать мини-игру для тачбара MacBook, клавиатуры с экраном или консоли. А если хочется чего-то посложнее и поинтереснее, можно экспериментировать с сюжетом, дизайном, игровыми механиками и многим другим. Это проект, который при желании можно дорабатывать и усложнять. Усложнение игр — задача для будущих геймдевов: веб-разработчикам достаточно создать классическую реализацию.
3. Домашняя цифровая система
Для кого: бэкенд-разработчики, системные администраторы, сетевые инженеры.
Срок разработки: несколько месяцев.
Речь не об «умных колонках», хотя их при желании тоже можно интегрировать в систему. Скорее, об инженерной или сетевой инфраструктуре. На что она будет способна — зависит от пожеланий конкретного разработчика. Вариантов много: например, поднять локальную сеть, чтобы любимая коллекция фильмов была доступна с любого устройства в квартире. Или купить и подключить датчики, чтобы отслеживать уровень влажности и температуру в комнате. Можно создавать целые «умные системы» вроде автополива. Для простоты новичок может воспользоваться готовыми плагинами для работы с разным «железом», но если хочется усложнить задачу — можно писать свои плагины и дополнения, дорабатывать систему.
4. Дашборд
Для кого: frontend-разработчики, fullstack-разработчики.
Срок разработки: от нескольких дней.
Дашборд — это цифровая «доска», на которую выводится разная информация. Например, можно сделать дашборд, помогающий по работе — показывать сведения из таск-трекеров и напоминать, какие ежедневные задачи нужно сделать. А можно использовать дашборд для бытовых целей: отображать виджет с погодой на сегодня, актуальные курсы валют, календарь. Чтобы усложнить задачу, можно связать дашборд с другими пет-проектами — той же домашней системой или трекером задач.

5. Сервис для помощи студентам
Для кого: веб-разработчики, разработчики с уклоном в математику.
Срок разработки: от нескольких недель.
Это частая идея среди разработчиков, которые еще учатся в вузе или недавно его закочили. Студентам бывает нужно много специфических инструментов: калькуляторы для задач линейной алгебры или математического анализа, программы для реализации разных цифровых методов или моделирования физических процессов. Специализированное математическое ПО часто платное или имеет ограничения, поэтому можно придумать свою реализацию. Это не только интересно, но и может быть полезно другим. А если не хочется углубляться в математику, есть другие варианты: например, реализовать конвертер PDF в текстовый формат, чтобы читать электронные учебники было проще.
Где взять идею для пет-проекта
Выбор пет-проекта зависит от задачи. Например, есть случаи, когда разработчик пишет свой проект для того, чтобы оптимизировать рабочие процессы. Также с помощью пет-проекта можно практиковать новые навыки, полученные во время учебы.
Мы спросили студентов Skillfactory, как они выбирали темы для своих проектов.

Евгений Титов
Курс: Fullstack-разработчик на Python
Работает системным администратором в компании, занимающейся угольной промышленностью
Pet-проект: Автоматизация печати пропусков
«Одна из моих рабочих задач — выпуск пропусков для сотрудников. Это целый процесс: нужно распечатать пропуск из 1С, наклеить на пластиковую карту и “прошить” в базе данных. Мой проект был сделан как замена 1C — я делал его в рабочее и свободное от работы время. Он брал данные для пропуска из корпоративного сайта, проще говоря — парсил, а потом выводил их в HTML-форму. Затем с помощью СSS подгонялся в нужный вид и выводился на печать.
Разработка позволила сэкономить лицензии 1С для компании. Кроме того, инструмент оказался удобнее, чем корпоративная программа, — им пользуюсь я и коллеги».
Используемые технологии: Для парсинга Евгений использовал библиотеки Request и BeautifulSoup4. Для хранения и быстрого доступа — систему управления базами данных Redis, для веб-интерфейса — фреймворк Flask.

Курс: Полный курс по анализу данных
Работает в техподдержке Санкт-Петербургского медицинского информационно-аналитического центра
Pet-проект: Автоматизация отчетов
«Восемь часов в день я посвящаю работе, а в перерывах или вечером занимаюсь своим проектом. Я очень долго хотел систематизировать сбор и анализ отчетности нашего отдела. Эта задача у нас решалась спустя рукава и каждый раз по-разному. Я подумал, что можно использовать свои новые знания, чтобы сделать систему сбора и хранения информации.
Мне удалось ускорить и упростить сбор и обработку информации, а также быстро создавать актуальные отчеты в виде таблиц и диаграмм. В дальнейшем планирую еще больше автоматизировать процесс построения отчетов. Руководство оценило — поддержало идею и повысило зарплату».
Используемые технологии: Форма сбора информации, созданная из таблицы в Excel; данные обрабатываются с помощью скриптов на Python; информация загружается в базу данных, развернутую на PostgreSQL, потом необходимые данные из базы выгружаются в файл с помощью скриптов на Python; Power BI строит дашборды за нужный период.

Анна Тищенко
Курс: Product Manager
Учится в Томском государственном университете систем управления и радиоэлектроники
Pet-проект: Сервис психологического тестирования
«Я решила написать проект на тему психологического тестирования. Это сайт, на котором люди могут проходить психологические тесты, а потом анализировать свое состояние в разные периоды времени. Свои пет-проекты я стараюсь привязать к вузовским задачам на разработку, чтобы убить двух зайцев сразу. Мне самой всегда хотелось пользоваться сайтом с таким функционалом, но я не могла его нигде найти. Тесты есть, но без прогресса. Я подумала о людях, которым тоже это нужно, о том, что еще может быть полезного для тех, кто отслеживает свое психологическое состояние, и стала добавлять это на сайт. В проекте есть базовый функционал в виде тестов и графиков, есть личный профиль, но еще много чего не хватает».
Используемые технологии: Frontend написан на бесплатном компиляторе Svelte, Backend — на Node.js, а база данных — на MongoDB.

Кирилл Ермаков
Курс: SQL для анализа данных
Работает бизнес-аналитиком мобильного приложения для банка ВТБ
Pet-проект: Чат-бот, заменяющий пейджеры в продуктовых маркетплейсах
«Обеды с единомышленниками рождают идеи. Одну из них захотели воплотить, посмотреть, что из этого получится. Мы решили разработать проект, где вместо физических пейджеров, которые уведомляют о готовности заказа, клиент подключается к боту в Telegram. Пока проект находится на этапе релиза MVP и проверки ключевых гипотез. Сейчас основная работа лежит на разработчиках, а в дальнейшем планирую уделять проекту по 4–8 часов в неделю. В будущем команда хочет расширить функционал: чтобы чат-бот мог предлагать клиентам скидки, рассказывать об акциях и собирать обратную связь».

Андрей Валент
Курс: Product Manager
Работает дата-инженером
Pet-проект: Айда! — сервис, который помогает искать студии, вечеринки, концерты и уроки танцев в Москве и Санкт-Петербурге.
«Мы решили написать проект вместе с другом, чтобы развлечься и освоить новые технологии. Первое время работали по выходным, а друг и вовсе был занят проектом 7 дней в неделю. Несколько раз подавались на разные хакатоны и были разные цели, под них добирали людей в команду. Пробовали участвовать в конкурсе ВКонтакте, но нас не взяли, так как наше приложение не подходило под нужный формат. Зато спустя несколько месяцев мы поучаствовали в хакатоне и выиграли проект-заказ от мэрии Казани. Им нужна была туристическая игра по местности. У нас уже была карта, так что мы быстро адаптировались под задачу, взяли в команду знакомого гида и победили. Но потом началась пандемия, и поэтому заказ встал на паузу».
Используемые технологии: VK Mobile APP — это платформа приложений внутри ВКонтакте, MongoDB, Python, Docker.
Делать проект в одиночку или с командой?
Зависит от целей. Работа в команде — это хорошая возможность прокачать свои софт-скиллы и лидерские качества, а также сделать более сложный продукт. Но если проект небольшой, тогда вполне можно заниматься им самостоятельно. Бывает, что человек начинает проект самостоятельно, а по ходу понимает, что хочет его масштабировать и развивать, и набирает команду.
Анна Тищенко:
«Пишу сервис основном я одна, иногда помогает молодой человек — он программист».
Кирилл Ермаков:
«Я работаю в команде из пяти человек. Я выполняю роль Product Owner — владельца продукта, аналитика, финансиста. Еще я немного выполняю функции SCRUM-мастера. То есть организую работу команды, провожу ретро и планирования спринта, налаживаю рабочий процесс между бизнесом и разработкой. Со стороны бизнеса есть два человека, совмещающие еще больше ролей, и два разработчика: Android и backend».
Андрей Валент:
«Моя часть — это парсинг и база данных. Друг написал frontend и backend. Еще один человек тестирует сервис; был специалист, который занимался сайтом».
Как начать работать над pet-проектом?
Если хочется начать пет-проект, то самый главный совет — просто попробовать сделать первые шаги.
Анна Тищенко:
«Тем, кто хочет стартануть, советую сделать это. Код — такая штука, которую всегда можно поменять, поэтому долгие планы и выбор времени тут особо роли не играют. Есть часик, хочется — хоть HTML-страничку сделай, но главное — пиши. Чем больше планов, тем меньше шансов выжить у самого проекта, потому что энтузиазм пропадает довольно быстро».
Кирилл Ермаков:
«Если это первый твой проект, то очень важно начать, даже если не хватает какой-то ключевой роли в команде. Пусть получится плохо, но это опыт, который позволит сделать в следующий раз гораздо лучше. Если проект не первый, то всегда стоит разделять гипотезу и факт. То есть свои ожидания и то, что по факту нужно рынку».
Андрей Валент:
«Делайте, а там как повезет. В любом случае пет-проект — как котик. Он все равно милый и, скорее всего, вам уже нравится».
IT-специалист с нуля
Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.