Чтобы устроиться на свою первую работу, начинающему разработчику недостаточно иметь только теоретические знания по специальности: даже от новичков работодатели требуют наличие опыта и практических умений. Но откуда взять опыт, если без него никуда не берут? Один из вариантов — придумать и разработать собственный проект, попутно освоив новые технологии.
Мы расспросили активных студентов ХНУРЭ, КПИ и ЛП об их первых разработках, 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, «чтобы покопаться».
По словам Антона, затевая pet-проекты, стоит быть готовым много гуглить, читать, смотреть видео. Чтобы разобраться, нужно действительно получать удовольствие от процесса кодинга и решения задач. Также следует помнить, что нет ничего важнее фундаментальных знаний: алгоритмы, структуры данных, паттерны, протоколы, ОС, сети. А язык программирования — это уже вторичный вопрос.
«Мне в самом начале как раз таки было сложно ухватить базовые принципы: как работает веб, что такое сервер и клиент, как они общаются, что такое REST API и так далее. В интернете очень много гайдов по конкретным языкам, фреймворкам и библиотекам, но без понимания того, что такое HTTP, например, ни с каким фреймворком нормально не разберешься. Поэтому эти вещи изучал эмпирически, по книжкам, видеоурокам, онлайн-курсам и периодически спрашивал знакомых разработчиков.
Сейчас помогаю двум9-классникам из своей школы осваивать веб. Сначала они никак не могли понять основы: как связать фронт с бэком, как подключить базу данных. Я показал примеры, объяснил, и через пару недель они мне уже скидывали примеры проектов на MEAN-стеке. Местами говнокод, странно названные переменные, но для их возраста всё очень круто.
Не стоит бояться трудностей. У меня их на старте встречалось много, так как первое время не было ментора, всё делалось через книжки, YouTube, Udacity, примеры на Stack Overflow и GitHub. По незнанию часто настраивал инструменты вслепую, не умел разворачивать проекты, не знал паттерны. Было забавно :)»
Олег Гавриш и робототехника
Олег, в этом году закончивший 3 курс ХНУРЭ, в свободное время делает машинку, которой можно управлять с Android телефона по Wi-Fi. По словам Олега, идея возникла в прошлом году после просмотра видео о боях роботов: захотелось сделать «что-то, что будет само двигаться». Так началась разработка. Сначала конкретной цели не было, поэтому первые прототипы были склеены из спичек и имели колеса от бутылок. Далее все развивалось, использовались более совершенные материалы, технологии обработки. Затем дело дошло и до электроники. В качестве мозга были выбраны Arduino и Wi-Fi модуль ESP8266, заказанные в интернет-магазине за несколько долларов.
Сейчас машинка имеет довольно стабильное управление, независимую переднюю подвеску, подобную гоночным автомобилям. Пока управлять устройством можно только самостоятельно, но в дальнейшем Олег планирует оснастить ее датчиками скорости, расстояния и т. д., чтобы можно было составлять алгоритмы автономного движения или реализовывать системы, помогающие ею управлять. Сейчас ведется разработка модуля, который будет предотвращать удары, например, о стену на большой скорости.
Машинка разгоняется до 25 км/ч при размерах около 18 см
Параллельно с Олегом разработкой собственной роботомашинки заинтересовался и его сосед по комнате. По словам ребят, это сильно мотивирует их обоих, постоянно ведется «гонка вооружений».
По мнению Олега, делать pet-проект имеет смысл только в том случае, если для тебя это по-настоящему интересно. Тогда не жалко тратить время и усилия, да и просто будешь получать удовольствие от работы. Однако не стоит гнаться за какими-то новыми трендами чисто для галочки.
«Даже если не уверен в своих силах, всегда нужно пробовать. Тем более, если проект некоммерческий, то и рисков нет. В случае неудачи останется бесценный опыт. А если дойдешь до конца, то получишь неплохую вещицу, которую можно показать друзьям или рассказать о ней кому-то :)
Из подводных камней, с которыми я столкнулся, можно отметить проблему приобретения различных модулей и исполняющих механизмов в Украине. Их можно купить, но это недоступно для большинства студентов, которые работают за идею. Поэтому приходится заказывать в интернете, а это занимает около месяца. Обостряется проблема тем, что когда ты новичок, то нет никакого четкого плана, дизайна проекта, и это сильно замедляет разработку. Ты заказываешь одну деталь, ждешь месяц, понимаешь, что ее недостаточно или она несовместима с остальными, заказываешь что-то другое и так далее».
Антон Юраш и электрификация
Антон начал программировать еще в лицее на Pascal. Первый проект для себя — написанная на Python флудилка для ВКонтакте, которая имитировала нажатие клавиш компьютера и отправляла сообщения друзьям. В этом году Антон закончил 2 курс КПИ.
Один из последних проектов начинающего разработчика — Rozetker. Это Telegram-бот, который помогает найти ближайшую открытую розетку для подзарядки своих гаджетов. Также функционал позволяет добавлять в базу собственные розетки, это занимает меньше одной минуты.
Бот работает в один клик — пользователь отправляет свои координаты и получает информацию о ближайшем месте, в котором можно подзарядиться
В проекте было задействовано 3 человека: Антон как программист и 2 других студента КПИ в качестве маркетологов/менеджеров (одному из них и принадлежит идея бота). Разработка заняла всего 2 дня.
Влад Кампов, Антон Тименко и проекты для КПИ
Выпускники 4 курса Влад Кампов и Антон Тименко — одни из основателей KPIhub, ИТ-сообщества Киевского политеха. История проекта началась с того, что ребята столкнулись с проблемой актуальности расписания: пары переносятся и меняются, особенно в начале года, а студенты не успевают заранее получать информацию об изменениях.
2 года назад на волне популярности ботов в Telegram Влад с товарищем решили создать удобный бот, который сможет в текстовом режиме показать студенту расписание на тот день, на который студент делает запрос. Кроме того, было придумано несколько удобных фич — возможность спросить, как зовут преподавателя, какие пары у преподавателя, которого я ищу, какая аудитория и т. д. Также сделали и режим расписания для преподавателей.
Но проект не решил проблему актуального источника данных, и тогда Влад и Антон сделали rozklad.hub.kpi.ua. Влад разработал дизайн и front-end, а Антон создал API, которое открыто для всех, кто хочет использовать данные (например, тот же бот). Администрация вуза поделилась с ребятами данными о расписании в текстовом виде. В результате теперь у каждого старосты есть доступ к редактированию расписания группы на лету, без подтверждения деканата. Деканат же в свою очередь может откатить изменения, если староста допустил ошибку.
На сайте доступно расписание для групп, преподавателей и аудиторий
Проект стал стартом KPIhub: для сайта с расписанием ребятам был нужен КПИшный сервер для хостинга проекта, они обратились к администрации вуза, которая в свою очередь и предложила оформить начинание как проект для низовых ИТ-инициатив.
Спустя год ребята придумали и реализовали еще один проект — виртуальный 3D-тур по кампусу КПИ, в который вошли музей, библиотека, лаборатории и другие локации.
Николай Держило и дополненная реальность
В этом году Николай закончил 3 курс Львовской политехники. Он уже успел освоить на практике технологии в разных сферах: начиная Arduino (система контроля ГБО автомобиля) и заканчивая виртуальной реальностью (работа с Google Cardboard, передача картинки потоково с ПК на смартфон).
Крупнейшим проектом Николая стала разработка мобильного приложения «Тустань», которое объединяет на экране смартфона реальные и виртуальные объекты. Программа позволяет виртуально «восстановить» крепость
Идея проекта возникла в общении с администрацией Тустани. Директор заповедника искал способы популяризации утраченного памятника архитектуры, и Николай с товарищем предложили разработать приложение с использованием технологии дополненной реальности. По наблюдениям ребят, на то время
Николай с товарищем по команде возле руин Тустани
В разработке было задействовано 3 человека, процесс длился около 3 месяцев. Первый прототип программы позволял различать скалы и накладывать 3D-модель, но качество распознавания не было удовлетворительным, так как сильно зависело от погоды. Сложности возникали и с адаптацией 3D-модели под мобильные устройства. После изменения метода распознавания результаты улучшились.