Как сделать свой первый проект в программировании
Перейти к содержимому

Как сделать свой первый проект в программировании

  • автор:

Как спланировать и создать собственный проект

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

Эта статья не о том, как структурировать ваши папки или как настроить расширения VS Code, чтобы обеспечить чистоту кода при сборке. Моей целью было помочь начинающим программистам почувствовать себя более уверенно на пути из туториального ада, помочь им начать создавать свои собственные проекты.

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

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

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

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

По сути, проблема заключалась в том, что я не знал, как добраться из пункта А в пункт Б.

Я часто встречаю посты на эту же тему на r/learnprogramming. Начинающие вроде меня расстраиваются из-за того, что не могут выбраться из ада туториалов, и поэтому обращаются за советом. Но всем, как и мне, просто бросают совет заняться собственными проектами. Люди не задумываются над тем, что если новичок не может даже воспроизвести учебник, создать свой собственный проект для него будет реальной проблемой.

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

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

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

Шаг 1. Определение проекта

Первым шагом при планировании личного проекта является его определение.

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

Определяя проект, я задаю себе четыре вопроса:

  • Что собой представляет этот проект?
  • Что собой представляет MVP (минимально жизнеспособный продукт)?
  • Какая будет «посыпка»?
  • Когда проект можно считать законченным?
Сначала пончик (MVP), посыпка — потом

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

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

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

Пример определения проекта

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

Проект «Калькулятор»
  • Чтособой представляет этотпроект? «Калькулятор» — это проект по созданию калькулятора, доступного в браузере. Проект будет реализован с использованием HTML, CSS и JavaScript. Это позволит пользователям вводить числа и вычислять результаты выбранной ими арифметической операции.
  • Чтособой представляетMVP? Минимальный жизнеспособный продукт — это калькулятор, который отображается в браузерах и может выполнять операции сложения, вычитания, умножения и деления на основе ввода пользователя и показывать пользователю результат вычислений.
  • Какая будет «посыпка»? В этом проекте «посыпка» — это стилизация калькулятора. Также к «посыпке» относится возможность для пользователя нажимать цифры и арифметические знаки на клавиатуре, а не только кликать по кнопкам на экране. Еще можно добавить операции более высокого порядка, такие как возведение в степень.
  • Когда проектможно считать законченным? Проект будет завершен после реализации всех функций MVP и оформления калькулятора.

Это определение простое и понятное. Если бы моя мама его прочла, она бы поняла, что это за проект. Здесь есть описание проекта, функционала MVP, необязательных функций, которые вы можно создать, а также указана «точка выхода» — описание завершенного проекта.

Определяя проект, вы делаете его менее устрашающим.

Когда у вас есть определение, можно приступить к следующему шагу.

Шаг 2. Создание рабочего процесса

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

Для начала нужно использовать что-то вроде Trello — бесплатного инструмента для управления проектами.

Trello позволяет нам использовать метод управления разработкой Kanban. Новичку не обязательно знать или понимать, что собой представляет Kanban, вы можете просто использовать его практики.

Чтобы настроить нашу канбан-доску, создаем 4 столбца:

  1. TODO (нужно сделать)
  2. DOING (в процессе)
  3. DONE (сделано)
  4. BUGS / NOT SURE HOW TO DO (баги / не уверен, как это сделать)

В эти столбцы мы будем добавлять карточки. Мы создаем карточку в столбце TODO, затем, взявшись за выполнение, перемещаем ее в столбец DOING, а покончив с ней — в столбец DONE. Если вы столкнулись с какой-то ошибкой, на которой застряли, или не знаете, как что-то сделать, можно переместить карточку в столбец BUGS / NOT SURE HOW TO DO.

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

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

Шаг 3. Разбивка проекта на более мелкие компоненты

Ключ к созданию собственных проектов — разбиение большого проекта на более мелкие и менее пугающие компоненты. Эти компоненты становятся нашими карточками в Trello.

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

Однако теперь, работая в сфере разработки ПО, я знаю, что на самом деле все не так. На самом деле хороший разработчик разбивает проект на более мелкие задачи.

Тем не менее, новичку может быть трудно понять, как разбить проект. Если вы не знаете, с какого конца взяться за проект, как же вам его разбить?

Начальная разбивка

Ну, первое, что вам нужно сделать, это посмотреть на определение вашего проекта, а затем разбить его на более мелкие части.

Давайте продолжим использовать пример с калькулятором для создания карточек компонентов:

  1. Вычислительные функции — MVP
  2. Получение пользовательского ввода — MVP
  3. HTML пользовательского интерфейса — MVP
  4. Стилизация пользовательского интерфейса (CSS) — посыпка
  5. Слушатели событий JavaScript — MVP
  6. Добавление анимации для вычислений — посыпка

Обратите внимание, что каждой карточке мы присвоили метку MVP или «посыпка», чтобы было ясно видно, какие карточки являются наиболее важными. Над ними, естественно, нужно работать в первую очередь.

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

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

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

Разбейте каждый компонент на более мелкие чеклисты

Создав высокоуровневые карточки, мы можем разбить эти компоненты на более мелкие задачи. При этом можно использовать чеклисты (контрольные списки), чтобы отслеживать наш прогресс.

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

Для примера дальнейшей разбивки компонента давайте воспользуемся карточкой «Вычислительные функции».

Поскольку это MVP-задача, а я определил MVP как базовые функции сложения, вычитания, умножения и деления, нам нужно добавить эти функции в чеклист.

Мы разбили нашу карточку на 4 небольших проекта, над которыми мы можем работать. Это куда проще, чем абстрактная и сверхсложная задача создания приложения-калькулятора или даже написания вычислительных функций (название карточки).

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

Выполнив все четыре пункта, мы можем переместить эту карточку в столбец «DONE» и взяться за следующую.

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

Не застряньте, доводя все до совершенства

Занимаясь карточками и задачами в них, не застряньте на бесконечном доведении до идеала каждой маленькой детали.

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

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

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

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

Вы также можете использовать столбец BUGS / NOT SURE HOW TO DO, чтобы поместить туда карточки, которые вы еще не можете выполнить или на которых вы застряли. Это поможет вам продолжать двигаться.

Начните создавать собственный проект

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

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

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

И если где-нибудь на r/learnprogramming вы натолкнетесь на просьбу о совете от человека, который пытается выбраться из туториального ада, не советуйте ему просто начать строить собственные проекты. Лучше расскажите, как их планировать и создавать.

Программирование как хобби – создаем свой первый проект

Программирование как хобби

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

  • Выбор проекта и языка программирования.

Первый шаг в программировании как хобби — это выбор проекта и соответствующего языка программирования. Проект должен быть интересным для вас и соответствовать вашему уровню навыков. Например, можно начать с создания простого веб-сайта на HTML и CSS, перейти к более сложным задачам на jаvascript, или даже разработать простое мобильное приложение на Python или Java. Важно выбрать такой проект, который будет вас мотивировать продолжать обучение.

  • Основы разработки и тестирования.

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

  • Ресурсы для самостоятельного обучения.

Для самостоятельного обучения программированию существует множество ресурсов. Онлайн-курсы, обучающие видео, форумы и сообщества, такие как Stack Overflow, могут стать отличным источником информации и поддержки. Сайты типа Codecademy или FreeCodeCamp предлагают бесплатные интерактивные курсы, которые могут помочь вам в начале вашего пути.

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

Лучшие Проекты Для Начинающих Python-Разработчиков

Чтобы научиться ходить – надо ходить, чтобы научиться подтягиваться – надо подтягиваться, чтобы научиться решать задачи по физике – надо решать задачи по физике. Так говорил преподаватель физики в моём университете, и эта аналогия применима и к программированию.

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

Цель данного «топа» – это не создание самого оригинального портфолио и не перечисление уникальных проектов. Цель статьи разобраться в простых вещах, технологиях и темах, которые помогут развить практические навыки программирования. Поэтому не стоит ждать здесь сборку Оптимуса Прайма, программирование Звезды смерти и создание двигателя на китовом жире. Мы пройдёмся по простым, но в тоже время базовым вещам. Ведь как говорил один мой приятель: «Всё великое начинается с малого».

Парсер

Первый проект в списке – парсер сайтов. Это программа, которая просматривает код веб-сайта и получает оттуда какую-то информацию.

Предположим, есть сайт «Авито». Мы можем сделать программу, которая будет «как бы заходить» на Авито; просматривать объявления из раздела «Аренда квартир в Москве» (через программный код на страницах); и записывать в текстовый файл информацию из этих объявлений.

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

В тренировочно-образовательных целях необходимо всё сделать максимально вручную, но без фанатизма. Поэтому используем модуль requests для работы с сетевыми запросами (для получения кода сайта, регистрации, авторизации). Библиотека BeautifulSoup понадобится для разбора и выдергивания информации из HTML-кода сайта, который мы получили с помощью requests.

Разработка парсера заставит разобраться с тем, что такое, зачем нужны и как работают сетевые протоколы HTTP/HTTPS. Придётся выяснить, что такое HTTP-запрос – из чего он состоит; как работать с GET, POST, PUT, DELETE-запросами; чем они отличаются; как формировать заголовки запросов. Предстоит покопаться со статус-кодами, URL-адресами, схемами авторизации, сессиями, редиректами, прокси и куки-файлами. Параллельно познакомиться с форматом JSON и вникнуть в HTML/CSS-код, семантику и DOM-модель веб-страницы.

Работа с сетевыми протоколами – это фундаментальные computer science навыки, без которых называть себя полноценным программистом немного не справедливо.

Мне кажется, пример с квартирами на Авито идеально подходит для пробы пера. Поэтому попробуйте написать скрипт, который создаст файл с информацией о всех трехкомнатных квартирах, которые продают в твоем городе, по цене, скажем, дороже 3 000 000 рублей.

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

Бот

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

Бот – это простой проект, но в тоже время, он даст новичку навыки работы со сторонними библиотеками, асинхронностью и, что самое главное, опыт работы со сторонним API.

Однако прежде придётся разобраться, что такое API, вникнуть в понятие синхронности/асинхронности, потренировать понимание ООП, если сделать бота классом, а не просто набором функций.

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

В ходе разработки возникнут вопросы: как хранить в проекте секретные данные (токены, пароли), и как разделить бизнес логику приложения. Веcь код, отвечающий за работу непосредственно с площадкой, стоит вынести в один модуль, а код обработки полученных данных в другой модуль. Этим всё не ограничится. В процессе всплывёт ещё много других подводных камней. А это ценный практический опыт, который нам и нужен.

Загрузка (то есть деплой) бота на хостинг по типу Heroku или Google App Engine – уже отдельная история, которая также прокачает твои технические навыки.

Если хочется сделать бота ВКонтакте, то смотрим в сторону библиотек vkwave и vkbottle. Они современные, асинхронные и простые в использовании. Синхронный и уже местами забагованный vk_api использовать не советую.

Для Telegram рекомендую полностью асинхронный Aiogram.

В качестве альтернативы можно использовать модуль pytelegrambotapi. Он попроще и поддерживает как синхронный, так и асинхронный режим работы.

В случае с Discord ботами самым популярным является модуль discord.py (c 9 000 звёзд на GitHub). Он асинхронный, хорошо документирован и прост в освоении. По принципу использования и написания кода похож на Aiogram и vkwave.

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

Идея проекта попроще: бот, который по запросу присылает случайный фильм из файла или БД.

Вариант посложнее: бот для учёта финансов. Пишешь ему сообщение сколько денег потратил и на что. Он записывает всё в Google-таблицу, БД или Excel-таблицу и ведёт какую-нибудь статистику.

Можно сделать бота, который следит за ценами. Отправляешь ему ссылку на товар. Если на этот товар появляется скидка, бот присылает уведомление.

В случае с ботами всё ограничивается лишь вашей усидчивостью и фантазией. Ковыряйтесь на здоровье!

Веб-приложение (интернете магазин)

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

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

В качестве усложнения проекта можно добавить систему оплаты, скидочные промокоды, раздел с лидерами продаж, кеширование, отправку чека на почту или рекомендательную систему, основанную на in-memory СУБД Redis или вообще модели машинного обучения.

А если вы совсем без тормозов, то прикрутите REST API сайта. Для этого потребуется дополнительно вникнуть в вопросы сериализации JSON-объектов, работе с сетевыми протоколами и прочему.

Разработка веб-сайта познакомит вас с паттерном проектирования MVC (модель-представление-контроллер), HTML/CSS и, возможно, JavaScript кодом.

Основываясь на своём опыте, скажу, что для освоения веб-разработки лучше варианта чем Django нет. Django большой фреймворк, в котором по умолчанию есть модули для всего, что я перечислял выше. Кроме того, он базируется на классическом, упомянутом ранее шаблоне MVC (правда там он называется MVT, но не суть).

Изучая Django придётся научиться работать с маршрутизацией, моделями данных, миграциями, контроллерами, шаблонизаторами HTML и ORM (это специальная штука, которая позволяет работать с базой данных без SQL запросов, а через питоновские объекты). Много предстоит поработать с ООП, потому что все модели данных представлены классами. Часто приходится использовать наследование.

Важно, что практически все современные популярные питоновские и не только фреймворки устроены точно также, как Django. Если вы разберётесь с Django, понять, как работает PHPшный Laravel, Jav’овый Spring или Ruby on Rails не составит труда.

Django ORM практически идентичен Eloquent из Laravel, шаблонизаторы тоже плюс/минус у всех похожи, модели и миграции отличаются чисто косметически.

Потом, для расширения кругозора, можно ещё взглянуть на микрофреймворк Flask.

Выбирайте предметную область, которая вам интересна. Любите компьютерные игры – создаём магазин игр, тащитесь по топовому шмоту – вот вам магазин одежды. Короче стараемся получить максимум удовольствия. И едем дальше.

GUI

Разработка приложений с графическим интерфейсом не является основной сферой применения Python. Однако это не значит, что GUI на нем не пишут совсем.

GUI на PyQT5

В качестве тренировочного опыта, лично я бы остановился на создании Аудио проигрывателя для компьютера. На функционал не скупимся. Добавляем возможность работать с плейлистами, управление воспроизведением (старт, стоп, пауза, перемотка), стоит добавить анимацию звуковой дорожки, ползунки громкости и т.д. Про уникальный дизайн также не забываем.

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

PyQt – более фундаментальный и сложный графический фреймворк, чем tkinter или pysimplegui. Поэтому обратить внимание стоит именно на него. Тут по аналогии с MVC веб-фреймворками. Разберись с базовыми принципами и дальше проблем не будет. Под базой здесь я подразумеваю концепцию событий (сигналов) и обработчиков событий (слотов).

PyQt также поможет прокачаться в понимании ООП, потому что все графические объекты представлены классами, а наследование используется повсеместно.

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

По PyQt в Интернете много уроков, есть даже отдельные книги, что также плюс.

Отмечу, что многие графические приложения основаны на шаблоне проектирования MVP (модель-представление-представитель). Это вариация шаблона MVC на котором базируются веб-приложения.

Pygame – простая и популярная библиотека для работы с мультимедиа объектами. Позволяет работать с аудио, видофайлами, а если в ней хорошо разобраться, можно и 2D игру сделать.

Data Science-приблуды

Сферы искусственного интеллекта и Data Science занимают большую часть сообщества Python-разработчиков. Да, проекты подобного рода специфичны и вникать в них всем необязательно. Но не упомянуть о них я не мог.

Анализ данных – гигантская область, в которую входит математика, computer science и программирование. Разбор всех этих тем выходит за рамки данной статьи и заслуживает отдельного цикла.

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

Это задача из сферы обработки естественного языка (Natural Language Processing или NLP). Для работы с NLP стоит обратить внимание на библиотеки: NLTK, TextBlob, spacy, Gensim и CoreNLP. Пара слов о каждой.

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

TextBlob – обёртка над NLTK, которая предоставляет простой интерфейс для этой библиотеки. Иногда ею просто удобнее пользоваться.

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

Gensim – библиотека тематического моделирования. Позволяет обрабатывать тексты, работать с векторными моделями слов (например, Word2Vec или FastText) и создавать тематические модели текстов.

CoreNLP – модуль для распознавания свойств текста.

Пока далеко не ушли от кино. Вспомним одну из классических задач машинного обучения – разработку системы рекомендаций. Рекомендательная система – это программа, которая будет угадывать предпочтения пользователя в плане выбора фильма. Для её написания придется научиться работать с такими базовыми библиотеками для любого data scientist’а как Pandas, Numpy, Matplotlib и Scikit.

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

Следующий большой класс задач – компьютерное зрение. Не мудрствуя лукаво, создаём приложение, которое по фото или видео определяет наличие/отсутствие маски на лице человека. Самая ходовая библиотека компьютерного зрения – это OpenCV. Её и предстоит изучать. Также стоит ознакомиться со сверточными нейронными сетями и концепцией deep learning в целом. Обучающие data-сеты для любого из указанных проектов можно спокойно найти в Интернете.

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

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

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

P.S. Также есть видеоверсия данной статьи на YouTube.

Пет-проект как один из лучших вариантов практического обучения начинающего программиста

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

Почему пет-проект — хороший вариант для обучения?

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

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

Кроме портфолио, проект поможет закрепить полученные из книг/YouTube/курсов и форумов знания. Если это первый или второй ваш проект, то отдельные кусочки теории начнут постепенно складываться в единое целое, после чего станет понятно, где и как применять всё это на практике.

Как начать работу?

После того, как идея найдена, стоит проконсультироваться со знакомыми, которые могут её оценить. Вдруг они смогут посоветовать что-то полезное либо найдут проблему в самой идее.

Далее нужно на бумаге или в электронном виде расписать свою идею подробно.

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

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

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

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

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

Можно также попробовать поработать в команде — снова-таки, это если проект комплексный. Разработали веб-сервис? Друг-дизайнер может продумать и реализовать удобный интерфейс к нему.

Какими могут быть пет-проекты?

Как и говорилось выше, в принципе, любыми. Но лучше всего сделать что-то такое, что можно «потрогать».

Мини-игра

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

Специфический сервис

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

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

Интернет-магазин

Его можно сделать для себя и затем заниматься бизнесом, продавая, например, сделанные при помощи лазерного гравера брелоки, визитные карточки, конструкторы и т. п. Здесь двойной профит — и небольшая прибыль, и строка о проекте в своём портфолио.

Приложение для нумизмата или библиофила

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

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

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

  • diy
  • diy или сделай сам
  • diy-проекты
  • обучение
  • обучение программированию
  • программирование
  • пет-проект
  • технологии
  • Блог компании МТС
  • Программирование
  • Учебный процесс в IT

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *