JavaRush /Java блог /Random UA /Навчання на JavaRush. Перші проекти, що на Вас чекає і як...
dwajot
41 рівень
Киев

Навчання на JavaRush. Перші проекти, що на Вас чекає і як краще не робити. Частина 1.

Стаття з групи Random UA
Добридень! Нарешті я дочекався на той час, коли готовий поділитися своєю історією успіху. Розповісти хочеться багато, тому поділю на дві частини – так би мовити «перші проекти і як краще не робити» та власне «пошук роботи та проходження співбесід». Про себе багато розповідати не буду, скажу тільки, що, як і майже все, тут я відучився і попрацював на іншій спеціальності, але потім вирішив стати програмістом:) Поговоримо відразу про навчання. Почав я займатися JavaRush на початку 2016 року. Довго вибирав десь вивчати програмування і, звичайно, як і всі наші люди не хотів платити за навчання. Вивчати хотів саме Java, тому що моя мрія програмувати на Android. Курс JavaRush кілька разів траплявся мені на очі під час пошуку, але я його відкидав, оскільки він умовно безкоштовний. Почав займатися відео уроками на ютубі. Потім все ж таки якась сила мене змусила спробувати вирішити безкоштовні завдання на JavaRush, і я настільки здивувався, що після проходження 50 відео уроків (я вважав їх досить нормальними) і написання коду за лектором, я насилу і далеко не з першої спроби вирішував початкові завдання курсу. Якість курсу і те, що він мені дасть, якщо я його пройду повністю я оцінив майже відразу, потім подивився на форумі, що час від часу там бувають хороші знижки на передплату вирішив, що братиму повну версію. Так, багато учнів зляться і обурюються щодо курсу - завдання дають за матеріалом, який ще не розглядали, валідатор їх не розуміє і багато чого можна почитати на форумі та в коментарях. І знаєте, що? Я теж таким був:) У мене досі висить велике завдання на 34 рівні, і я перепробував усі рішення, але його не приймає валідатор. Добре, що в тих підтримці мені докинули чорну матерію і я зміг до кінця добити курс. Загалом, як випускник курсу JavaRush скажу свою суб'єктивну думку, що мені сподобалося і не сподобалося в курсі (хай вибачать мені адміни). Сподобалося: кількість завдань, миттєва перевірка завдань, віддалене навчання, навчання не має прив'язки до твого робочого графіка, структурованість курсу, форум учнів, а також ціна. Не сподобалося:за час проходження курсу починаєш підлаштовуватися під валідатор і потім складно від цього відвикати, щоб подумати і знайти якісь інші підходи (але все ж таки така ідея і вона тут реалізована досить добре), помилки в деяких завданнях, сильна хитромудрість в деяких умовах задач (Добре, що для таких випадків є форум), так само пробував новий інтерфейс - не дуже сподобався, благо є можливість переключиться на старий. Якщо це підсумувати, я задоволений курсом і тим, що він мені дав. Згадую себе рік тому, як мені друг намагався пояснити, що таке boolean, void, що таке методи і як вони повертають значення. Пам'ятаю, як довго не міг зрозуміти навіщо треба повертати ці значення:) Зараз же мені часто згадується сцена з фільму Матриця: Нео: Ти що навчиш мене ухилятися від куль? Морфіус: Коли настане час тобі це вже не знадобиться. І справді, коли настав час у нього вже апріорі були ці навички. На 30 рівні курсу я хотів потрапити на стажування, яке пропонує JavaRush. Подивився тестове завдання та трохи жахнувся. Дуже сподівався, що допоможе друг його зробити, але за тиждень до дедлайну він сказав, що ось тобі Гугл, ось тут убивай усі технології та там буде купа прикладів. Я йому дуже вдячний, що так вийшло, тому що тоді я вперше відчув, що означає бути програмістом. За 4 повні дні я зробив завдання і був неймовірно радий, що потрапив на стажування. Стажування. Стажування я до кінця не пройшов, тому що в цей же час почав робити свій перший проект і все ж таки він для мене виявився пріоритетнішим і цікавішим + я не хотів працювати в enterprise. Що можу сказати про саме стажування – є свої плюси та мінуси, але в цілому досить добре. Якщо плануєте далі йти до enterprise, то думаю її варто пройти. Перший проект. Як і згадував вище, десь на 30-х рівнях я потрапив на стажування і почав робити свій проект. Це був і їсти бот у телеграмі. Бажання створити робота було в мене ще на 20-30 рівнях курсу, але я ніяк не міг знайти відповідної ліби або інструкції how to start. І все ж таки випадковим чином мені трапилася така стаття і я відразу почав пробувати. Якщо комусь цікаво – ось посилання на статтю - Відверто кажучи, автор цієї статті мені потім ще дуже допоміг, мова про що піде трохи нижче. Ідея для бота була така - мені як програмісту потрібно вивчати англійську мову. Граматику я знав відносно добре, а ось словниковий запас захотів підтягти. Подумав, що непогано було б мати робота для вивчення слів. Детальну інформацію про роботу я вже писав у статті раніше, тому повторяться не буду – ось посилання Телеграм бот Words Розкажу, з якими труднощами мені довелося зіткнутися під час його створення. По-перше, це перша робота з telegram api. Хоча багато хто й каже, що це одне з найпростіших і найбільше документованих api, але мені тоді як новачкові було дуже складно. Все робив шляхом підбору :) Іноді на те, щоб зробити якусь фічу, наприклад, прибрати кнопку після її натискання мені доводилося витратити повний день. Десь за півмісяця вдалося написати найпершу бету версію, весь код якої був в одному java класі, і хотів спробувати залити її на сервер. Проект у мене не комерційний, тому платні сервери я одразу ж відкидав. Згадав про сервер heroku, який до речі використовують для розміщення сайту на стажуванні. Пробував цей сервер два повні дні і вже був у повному розпачі, тому що не виходило взагалі нічого – всі інструкції, які були віднесені до сайтів, а у мене бот і там потрібно діяти трохи по-іншому. В результаті я вирішив написати автору статті про бот і запитати, який він використовує сервер для розміщення робота. І тут удача мені посміхнулася - автор виявився дуже крутим програмістом (я з ним досі підтримую зв'язок), і він мені запропонував розмістити бота у себе на Linux сервері (і якщо я знаю лінус, то виділить мені обліковий запис). На початкове вивчення Лінукса пішло один день і, звичайно, не без помилок і складнощів бот почав крутитися на сервері. Також між усією цією справою я добив курс JavaRush і був дуже задоволений :) Базу даних для робота я вибрав MySql, переглянув багато уроків з оптимізації таблиць, вибору двигуна і всього іншого. Дамо пораду всім, хто робитиме свій перший проект – намагайтеся відразу продумати всю його структуру і будувати хоча б відносно архітектуру, що розширюється. Я ж свій переписував, напевно, рази 3 через такі помилки. Так, це складно, тому що дуже часто ти не знаєш що захочеш наступне додати у свій проект, але все ж таки на мінімальному рівні зробити можна. Не пишіть весь код в одному класі! Спробуйте використати MVC, згадайте ОВП тощо. Найсмішніше, що деякі основні принципи ООП я почав використовувати у проекті, коли він уже був майже готовим. До цього я навіть не думав про них. Звичайно, користувачеві взагалі все одно якою мовою написаний продукт, які там використовуються патерни та технології використовувалися, але коли ви через пару місяців його відкриваєте і хочете щось туди додати, то дуже багато хороших слів про себе подумаєте :) Так само не забувайте робити логування – це дозволяє як відстежувати помилки, і дивитися якими функціями користувачі більше користуються і що далі розвивати. У телеграмі це до речі можна дуже круто зробити - відправляти всі логи в режимі реального часу собі в приватний канал, можна зробити якусь big data :) Якщо підсумувати про перший проект, то часу на його створення пішло десь 3 місяці, зараз там понад 14 тисяч зареєстрованих користувачів, багато яких стали постійними та вивчають іноземні слова щоденного. Другий проект. Моя мета була стати Android програмістом, тому коли закінчивши з ботом я вирішив адаптувати його на Android платформу. Почав навчання з курсу startandroid, так само мій найкращий друг android розробник давав мені багато крутих завдань, перевіряв їх і казав, що потрібно переробити і доробити. Коли отримав вже базові навички почав робити свою програму. Як і з першим проектом було багато різних труднощів, але якщо брати загалом, то трохи менше. Десь за півтора місяці була готова перша бета версія (пару раз довелося переписувати весь дизайн додатку, тому що я поняття не мав як він виглядатиме). Потім я зареєструвався як розробник в Гугл плей і залив його в маркет. Останнім часом займався оптимізацією та синхронізацією двох своїх проектів. Для загальної бази даних вибрав Firebase - дуже хороша документація, багато уроків і для невеликих проектів безкоштовної версії в 1гб обсягу більш ніж достатньо. Якщо коротко сказати про найбільші труднощі у другому проекті (я думаю деякі з цих труднощів виникають і у досвідчених розробників), то це - створення багатопоточності в android, багато проблем з розмірами та розширеннями екранів, для створення дизайну довелося потоваришувати з photoshop, підтримка старих версій андроїда, а також ніколи не використовуйте Recycler View, якщо у вас у списку буде анімація :) Після блокування в Україні Яндекса, а саме від туди я беру більшу частину перекладу та озвучки слів, довелося додавати додаткові перевірки в код, і просто повідомляти користувачів , які б користувалися vpn. Труднощі навіть виникли при реєстрації в гугл плей - там щоб стати розробником потрібно одноразово (на відміну від апл стора) заплатити внесок у розмірі 25 $. У мене при оплаті стояв ліміт на картці і оплата моя зависла. Довелося поспілкуватися з тим підтримкою гугла і загалом вони мене посилали від одного оператора до іншого, поки я не зрозумів, що мене просто ввічливо посилають:) Довелося видаляти все і заново реєструватися (відразу до цього додумався). Ще кілька слів щодо просування своїх проектів.З ботом справи були трохи простіше - сама ідея ботів відносно нова (в самий мейнстрім я не потрапив, але все ж таки нормально). Є каталог роботів, групи вк, фб інші ресурси. Зараз мій бот займає 5 місце у розділі освітніх і для мене це дуже добрий результат. Щоб просуватися в каталозі роботів, необхідно що його оцінювали. Я зробив пропозицію для користувача про голосування, яке виникає лише один раз (сам не люблю нав'язливості), коли користувач зіграє певну кількість ігор (як би проведе деякий час у боті). З андроїд додатком справи набагато гірше. Скажу одне – без реклами ваш додаток ніхто не помітить у маркеті навіть за ключовими словами, бо їх там мільйони. Після того як я зробив синхронізацію між проектами, то дав оголошення в роботі про мою програму. Після цього у мене з'явилося перші 14 завантажень :) Якщо хтось дочитав до цього моменту, то ось посилання на додаток, якщо буде цікаво - Android додаток Words . Посилання ж на робота є в статті про нього трохи вище за текстом. Всім дякую за увагу. Про свій досвід співбесід, питання які там задавали і взагалі пошук роботи розповім у другій частині.
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ