Quantcast
Channel: Найцікавіше на DOU
Viewing all articles
Browse latest Browse all 8115

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

$
0
0

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

Мы расспросили активных студентов ХНУРЭ, КПИ и ЛП об их первых разработках, 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 дополненной реальности нам не подходили под требования. Пришлось перепробовать все существующие на рынке инструменты и составлять из них единое целое.

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

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


Viewing all articles
Browse latest Browse all 8115

Trending Articles