×Закрыть

Путь самоучки: pet-проекты и подводные камни самостоятельного изучения IT

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

Мы расспросили активных студентов ХНУРЭ, КПИ и ЛП об их первых разработках, pet-проектах, а также сложностях, которые могут ожидать новичков на пути самостоятельного изучения программирования.

Антон Кулик и эксперименты

Антон начал интересоваться программированием еще в школе: учился верстать, копировал разные шаблоны, чтобы набить руку. За более интересные проекты взялся на первом курсе университета — портировал расписание с сайта вуза себе в Google Calendar. Правда, потом оказалось, что расписание можно было скачать в CSV и закинуть его в Google Calendar, и де-факто скрипт был написан зря, но все равно первокурсник был горд собой :)

Первые два курса Антон активно занимался организацией событий в области ИТ и писал скрипты для Google Docs, оптимизирующие работу: например, скрипт позволял отправить кастомное письмо человеку, заполнившему Google форму.

Антон с соорганизаторами фестиваля Kharkiv Mini Maker Faire

Следующим проектом был бот для Telegram, который позволял подписаться на уроки по определенной тематике: в день получать по уроку, по его окончании ответить на несколько вопросов и получить оценку. Интерес к ботам не иссяк и сейчас: в планах у разработчика сделать такой же и для Facebook — посмотреть, что получится.

Дальше Антон взялся за JavaScript: эта технология, несмотря на все ее «особенности», привлекла простотой, гибкостью и широтой применений: и front-end, и back-end, и mobile, и desktop. Изучение началось с MEAN стека: MongoDB, Express.js, Angular и Node.js. В качестве практики — собственные web-приложения: блог, сайт портфолио своих проектов, сайт менеджмента общежития. По словам Антона, сейчас на этот код смотреть страшно и показывать его никому не хочется :) Но это этап, который нужно было пройти.

Сейчас Антон закончил 3 курс ХНУРЭ, уже год занимается web- и mobile-разработкой профессионально, но тем не менее всё равно старается находить время на какие-то эксперименты: на лето планирует купить Raspberry Pi, «чтобы покопаться».

«Если приходят какие-то интересные идеи, я быстро собираю лендинг, настраиваю рекламу в Facebook и тестирую, как отреагируют люди. Проектов много, но не все они развиваются. К примеру, начинали с товарищем делать сервис для фильтрации своих фотографий на фотоотчетах с больших мероприятий, но примерно через пару недель подобную штуку выкатили Google Photos.

Самое ценное, что дают личные проекты — более широкое понимание базовых принципов технологий, которые используешь, и отточку скиллов работы с языком разработки. Такой опыт влечет огромный буст в навыках, так как ты усваиваешь новые парадигмы. К примеру, web, game и embedded разработчики думают разными категориями, и здорово хорошо разбираться в чем-то одном, но примерно понимать каждую область. Поэтому я стараюсь находить время на то, чтобы делать в программировании то, чего не делал раньше. Сейчас хочу сдуть пыль со справочника С++ и посмотреть в сторону микроконтроллеров и одноплатных компьютеров».

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

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

Сейчас помогаю двум 9-классникам из своей школы осваивать веб. Сначала они никак не могли понять основы: как связать фронт с бэком, как подключить базу данных. Я показал примеры, объяснил, и через пару недель они мне уже скидывали примеры проектов на MEAN-стеке. Местами говнокод, странно названные переменные, но для их возраста всё очень круто.

Не стоит бояться трудностей. У меня их на старте встречалось много, так как первое время не было ментора, всё делалось через книжки, YouTube, Udacity, примеры на Stack Overflow и GitHub. По незнанию часто настраивал инструменты вслепую, не умел разворачивать проекты, не знал паттерны. Было забавно :)»

Олег Гавриш и робототехника

Олег, в этом году закончивший 3 курс ХНУРЭ, в свободное время делает машинку, которой можно управлять с Android телефона по Wi-Fi. По словам Олега, идея возникла в прошлом году после просмотра видео о боях роботов: захотелось сделать «что-то, что будет само двигаться». Так началась разработка. Сначала конкретной цели не было, поэтому первые прототипы были склеены из спичек и имели колеса от бутылок. Далее все развивалось, использовались более совершенные материалы, технологии обработки. Затем дело дошло и до электроники. В качестве мозга были выбраны Arduino и Wi-Fi модуль ESP8266, заказанные в интернет-магазине за несколько долларов.

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

Машинка разгоняется до 25 км/ч при размерах около 18 см

Параллельно с Олегом разработкой собственной роботомашинки заинтересовался и его сосед по комнате. По словам ребят, это сильно мотивирует их обоих, постоянно ведется «гонка вооружений».

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

Из такого проекта очень многому можно научиться, он на порядок сложнее и интереснее, чем университетские лабы. Тут можно проявить фантазию, нет временных ограничений. Мой проект приносит мне удовольствие и при разработке, и при испытаниях. В ходе работы изучил платформу Arduino, работу с модулями, исполняющими механизмами, моторами, серводвигателями».

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

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

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

Антон Юраш и электрификация

Антон начал программировать еще в лицее на Pascal. Первый проект для себя — написанная на Python флудилка для ВКонтакте, которая имитировала нажатие клавиш компьютера и отправляла сообщения друзьям. В этом году Антон закончил 2 курс КПИ.

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

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

В проекте было задействовано 3 человека: Антон как программист и 2 других студента КПИ в качестве маркетологов/менеджеров (одному из них и принадлежит идея бота). Разработка заняла всего 2 дня.

«Проект развивался быстро. Я был мотивирован работать из-за новых полезных связей, которые помогли мне потом находить подработки, а также из-за технологий: было полезно выучить Python 3, MongoDB, Telebot, работу с сервером на digital. В программном плане все было легко и прозрачно. Единственное — в коде остался небольшой костыль, но пока не вижу смысла это исправлять, так как проект приостановился.

Соответственно, сделал 2 вывода. Во-первых, какой бы красочной и полезной идея не казалась, где бы ее не пиарили — все равно есть риск, что она не зайдет. О нашем проекте писали и в паблике KPI live с аудиторией 35 тыс. человек, и на ресурсе Studway, однако проект не набрал нужную популярность. И во-вторых, в таких не монетизируемых волонтёрских проектах лень исправлять костыли :)

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

Влад Кампов, Антон Тименко и проекты для КПИ

Выпускники 4 курса Влад Кампов и Антон Тименко — одни из основателей KPIhub, ИТ-сообщества Киевского политеха. История проекта началась с того, что ребята столкнулись с проблемой актуальности расписания: пары переносятся и меняются, особенно в начале года, а студенты не успевают заранее получать информацию об изменениях.

2 года назад на волне популярности ботов в Telegram Влад с товарищем решили создать удобный бот, который сможет в текстовом режиме показать студенту расписание на тот день, на который студент делает запрос. Кроме того, было придумано несколько удобных фич — возможность спросить, как зовут преподавателя, какие пары у преподавателя, которого я ищу, какая аудитория и т. д. Также сделали и режим расписания для преподавателей.

Но проект не решил проблему актуального источника данных, и тогда Влад и Антон сделали rozklad.hub.kpi.ua. Влад разработал дизайн и front-end, а Антон создал API, которое открыто для всех, кто хочет использовать данные (например, тот же бот). Администрация вуза поделилась с ребятами данными о расписании в текстовом виде. В результате теперь у каждого старосты есть доступ к редактированию расписания группы на лету, без подтверждения деканата. Деканат же в свою очередь может откатить изменения, если староста допустил ошибку.

На сайте доступно расписание для групп, преподавателей и аудиторий

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

Антон Тименко: «У нас очень много идей, и мы еще не успели разработать все задуманное. Проблема в том, что мы изначально планировали проект как саппорт других студентов-программистов и их ИТ-идей, связанных с КПИ. А на деле вышло так, что все проекты внутри KPIhub пишу я и еще несколько человек. На своем горбу все эти идеи не реализуешь. Как оказалось, мало кто хочет тратить свое время за бесплатно и писать код для альма-матер просто так.

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

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

Спустя год ребята придумали и реализовали еще один проект — виртуальный 3D-тур по кампусу КПИ, в который вошли музей, библиотека, лаборатории и другие локации.

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

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

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

Николай Держило и дополненная реальность

В этом году Николай закончил 3 курс Львовской политехники. Он уже успел освоить на практике технологии в разных сферах: начиная Arduino (система контроля ГБО автомобиля) и заканчивая виртуальной реальностью (работа с Google Cardboard, передача картинки потоково с ПК на смартфон).

Крупнейшим проектом Николая стала разработка мобильного приложения «Тустань», которое объединяет на экране смартфона реальные и виртуальные объекты. Программа позволяет виртуально «восстановить» крепость IX-XIII столетий вблизи Урицких скал на Львовщине.

Идея проекта возникла в общении с администрацией Тустани. Директор заповедника искал способы популяризации утраченного памятника архитектуры, и Николай с товарищем предложили разработать приложение с использованием технологии дополненной реальности. По наблюдениям ребят, на то время (2-3 года назад) очень мало кто использовал технологии AR в полной мере и с пользой.

Николай с товарищем по команде возле руин Тустани

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

«Для нас было сложностью то, что мы почти что впервые видели среду разработки на Android и до этого никаких приложений не разрабатывали. К тому же, около 80% всех SDK дополненной реальности нам не подходили под требования. Пришлось перепробовать все существующие на рынке инструменты и составлять из них единое целое.

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

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


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

5 комментариев

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

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

бот Rozetker что то не работает, а жаль прикольная идея(

Telegram дав досить непогану можливість вчитись на написанні ботів. Багато людей пробують написати свого бота для телеграму, бо це зручно і не вимагає надзвичайних зусиль. І навчальних ресурсів зараз дуже велика кількість, якість тих ресурсів інколи краще ніж навчальна програма у ВНЗ.

Так, надзвичайно простий та зрозумілий API

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