Шлях самоучки: 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-ХІІІ століть поблизу Урицьких скель на Львівщині.

Ідея проекту виникла у спілкуванні з адміністрацією Тустані. Директор заповідника шукав способи популяризації втраченого пам'ятника архітектури, і Микола з товаришем запропонували розробити програму з використанням технології доповненої реальності. За спостереженнями хлопців, на той час (2-3 роки тому) дуже мало хто використовував технології AR повною мірою і з користю.

Микола з товаришем по команді біля руїн Тустані

У розробці було задіяно 3 людини, процес тривав близько 3 місяців. Перший прототип програми дозволяв розрізняти скелі і накладати 3D-модель, але якість розпізнавання не було задовільним, так як сильно залежало від погоди. Складнощі виникали і з адаптацією 3D-моделі під мобільні пристрої. Після зміни методу розпізнавання результати покращилися.

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

Також отримали досвід роботи з клієнтом та організації роботи команди, що для нас теж дуже цінно, так як плануємо продовжувати брати незвичайні проекти під замовлення.

Розроблення свого проекту для досвіду — це, безумовно, хороша ідея. Але треба заздалегідь визначитися з метою: ви робите розробку для себе, для резюме або для початку власної справи. Якщо немає належної мотивації, завершити такі проекти самостійно буває надзвичайно складно».

Опубліковано: 26/06/17 @ 10:00
Розділ Блоги

Рекомендуємо:

PM дайджест #2: пазл процессов PMP, HoLeBan и набор инструментов для продакт-менеджера
PM дайджест #2: пазл процесів PMP, HoLeBan і набір інструментів для продакт-менеджера
Організація робочого графіка техпідтримки: плюси і мінуси 8 і 12-годинної зміни
Быть в тренде эффективного продвижения просто - SMM.ua
Поради сеньйорів: як прокачати знання junior Java