• ,

Учеба на JavaRush. Первые проекты, что Вас ждет и как лучше не делать. Часть 1.

Добрый день! Наконец-то я дождался того времени, когда готов поделиться своей историей успеха. Рассказать хочется много, поэтому разделю на две части – так сказать «первые проекты и как лучше не делать» и собственно «поиск работы и прохождение собеседований».
О себе много рассказывать не буду, скажу только, что как и почти все здесь я отучился и поработал на другой специальности, но потом решил стать программистом:)

Поговорим сразу об обучении. Начал я заниматься на JavaRush в начале 2016 года. Долго выбирал где изучать программирование и, конечно, как и все наши люди не хотел платить за обучение. Изучать хотел именно Java, так как моя мечта – программировать на Android. Курс JavaRush несколько раз попадался мне на глаза во время поиска, но я его отбрасывал, так как он условно-бесплатный. Начал заниматься по видео урокам на ютубе. Потом все же какая-то сила меня заставила попробовать порешать бесплатные задачки на JavaRush, и я настолько удивился, что после прохождения 50 видео уроков (я считал их довольно нормальными) и написанию кода за лектором, я с большим трудом и далеко не с первой попытки решал начальные задачи курса. Качество курса и то, что он мне даст, если я его пройду полностью я оценил почти сразу, потом посмотрел на форуме, что время от времени там бывают хорошие скидки на подписку решил, что буду брать полную версию.
Да, многие учащиеся злятся и негодуют насчет курса — задачи дают по материалу, который еще не рассматривали, валидатор их не понимает и много-много чего можно почитать на форуме и в комментариях. И знаете что? Я тоже таким был:) У меня до сих пор висит большая задача на 34 уровне и я перепробовал все решения, но ее не принимает валидатор. Хорошо, что в тех поддержке мне докинули черной материи и я смог до конца добить курс. В общем, как выпускник курса JavaRush скажу свое субъективное мнение, что мне понравилось и не понравилось в курсе (да простят меня админы).

Понравилось: количество задач, мгновенная проверка задач, удаленное обучение, обучение не имеет привязки к твоему рабочему графику, структурированность курса, форум учащихся, а так же цена.
Не понравилось: за время прохождения курса начинаешь подстраиваться под валидатор и потом сложно от этого отвыкать, что бы подумать и найти какие-то другие подходы(но все же такая идея и она тут реализована довольно хорошо), ошибки в некоторых задачах, сильная замысловатость в некоторых условиях задач (хорошо, что для таких случаев есть форум), так же пробовал новый интерфейс – не очень понравился, благо есть возможность переключится на старый.

Если это подытожить, то я доволен курсом и тем, что он мне дал. Вспоминаю себя год назад, как мне друг пытался объяснить что такое boolean, void, что такое методы и как они возвращают значения. Помню как долго не мог понять зачем нужно возвращать эти значения:)
Сейчас же мне часто вспоминается сцена из фильма Матрица:
Нео: Ты что научишь меня уворачиваться от пуль?
Морфиус: Когда придет время тебе это уже не понадобится.
И действительно, когда пришло время у него уже априори были эти навыки.

На 30 уровне курса я хотел попасть на стажировку, которую предлагает JavaRush. Посмотрел тестовое задание и немного ужаснулся. Очень надеялся, что поможет друг его сделать, но за неделю до дедлайна он сказал, что вот тебе Гугл, вот тут вбивай все технологии и там будет куча примеров. Я ему очень благодарен, что так получилось, так как тогда я впервые почувствовал, что значит быть программистом. За 4 полных дня я сделал задание и был невероятно рад, что попал на стажировку.

Стажировка. Стажировку я до конца не прошел, так как в это же время начал делать свой первый проект и все же он для меня оказался приоритетнее и интереснее + я не хотел работать в enterprise. Что могу сказать о самой стажировке – есть свои плюсы и минусы, но в целом довольно таки хорошо. Если планируете дальше идти в enterprise, то думаю ее стоит пройти.

Первый проект. Как и упоминал выше, что где-то на 30х уровнях я попал на стажировку и начал делать свой проект. Это был и есть бот в телеграмме. Желание создать бота было у меня еще на 20-30 уровнях курса, но я никак не мог найти подходящей либы либо инструкции how to start. И все же случайным образом мне попалась такая статья и я сразу начал пробовать. Если кому интересно – вот ссылка на статью —
How to write bot in telegram Java
Откровенно говоря, автор этой статьи мне потом еще очень сильно помог, речь о чем пойдет чуть ниже. Идея для бота была такая – мне как программисту нужно изучать Английский язык. Грамматику я знал относительно хорошо, а вот словарный запас захотел подтянуть. Подумал, что неплохо бы было иметь бота для изучения слов. Подробную информацию о боте я уже писал в статье ранее, поэтому повторятся не буду – вот ссылка Телеграм бот 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.
Ссылка же на бота есть в статье о нем чуть выше по тексту.

Всем спасибо за внимание. О своем опыте собеседований, вопросах которые там задавали и вообще поиске работы расскажу во второй части.

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

lichMax
Спасибо. Жду второй части (это там ты расскажешь, кем ты сейчас работаешь и где?)
dwajot
Да, скоро напишу!
lichMax
Хорошо, ждём.
Kingpin
Доброго времени суток! Подскажите, а все обучение и выполнение своих проектов вы выполняли в свободное от работы время или у вас в распоряжении были целые дни?
dwajot
Первые 8 месяцев обучения я работал и было только немного времени после работы — результат прошел все лишь 20 уровней JavaRush. Потом я бросил работу, что бы интенсивнее заняться обучением и как оказалось не зря. Если вы точно планируете дальше работать разработчиком, видити что у вас это получается и если возможность бросить работу и заниматься, то я бы так советовал.
Kingpin
Благодарю за ответ! Вы дали мне пищу для размышления. Я действительно уперся в то, что совмещать работу (тоже за компьютером — работаю в сфере 1С) и обучение стало очень трудно — я продержался в таком режиме год, прошел за это время всего 30 уровней, а после мотивация от такой гонки упала на дно — выделять по часику, а в лучшем случае два в день недостаточно для усвоения огромного количества информации и наработки практики.
И вот я уже полгода колеблюсь, не решаясь уволиться в никуда, проработал на текущем месте 7 лет, какая-никакая стабильность, да я думаю почти каждый человек ближе к 30 или уже за, может представить себе страх таких перемен. Но, пожалуй закончу позитивной фразой о том, что кто не рискует — тот не пьет шампанского)
lichMax
А выходных недостаточно? плюс ещё праздники бывают. Можно ещё на работе в свободное время заниматься изучением джавы или по пути с работы и на работу. Хотя, конечно, это надо всё своё свободное время занимать джавой (и даже немного больше). Понимаю, что не у каждого есть такая возможность (тем более у многих могут быть семьи, друзья, родные, на которых тоже надо тратить время)
Kingpin
Я целый год так и делал, но почти все «вкатившиеся» говорили что им пришлось завязать с основной работой, т.к. на двух стульях усидеть сложно. Но это не значит невозможно — при наличии сильной мотивации и энергии, вполне себе вариант. У меня же теперь после работы сил не остается, а на работе разрывает сильнейшая фрустрация если в рабочее время изучать что-то не относящееся к работе, и к тому же я не успеваю решать рабочие задачи тогда. Короче у каждого свой путь, разумеется нужна финансовая подушка — без этого думать об увольнении весьма недальновидно.
lichMax
  • lichMax
  • 0
  • Комментарий отредактирован 2017-08-16 11:12:32 пользователем lichMax
Странно. Я работал системным администратором. И в принципе у меня на работе было и время для занятия чем-то другим, и возможность. И мозг как-то не разрывался и не уставал. Может это особенность системного администрирования, либо у Вас такая работа, что даже глаза нет времени отвести от монитора, и нагрузка мощная, плюс мощный стресс, работа беспокойная, что больше ничего не можешь делать. Но мне кажется, тогда нафиг такую работу. Хм, может проще найти какую-то подобную работу поспокойнее, на время!? Или тем же фрилансом заняться пока (по 1С)!? У меня одногруппник тоже после универа подался в 1С, проработал там уже около 8 лет, и сейчас уже год на фрилансе.
Kingpin
Я как раз разработчик 1С) Если у меня есть свободное время, то в ежедневном отчете придется пометить это время как «не работа», ничего страшного, но все же неприятно. Тут больше психологии пожалуй. И еще, в конкретно моем случае постоянно разрываюсь между java и 1С, в последнем тоже можно неплохо зарабатывать, просто это разные миры. И иногда гложет мысль, может не стоит оно того, сиди и прокачивайся в своей области? Надеюсь смог донести свою мысль о том, какие сомнения меня одолевают.
lichMax
  • lichMax
  • 0
  • Комментарий отредактирован 2017-08-16 15:06:07 пользователем lichMax
Не знаю, что-то ты Вы совсем про другое. Но я рад, что я не ошибся, и Вы как раз разработчик 1С, как я и думал (я опасался, что я ошибся, и Вы какой-нибудь менеджер или внедренец, связанный с 1С).

По поводу того, что Вы написали — занимайтесь тем, что Вам нравится. Если Вам уже скучно и Вы упёрлись в потолок технологий, тогда да, стоит посмотреть на что-то другое. Мне например, не нравится 1С, поэтому я занимаюсь джавой. (По поводу денег — да, знаю, 1С-ники довольно неплохо зарабатывают; правда, не знаю, как с этим делом обстоит в Москве и Питере, но в провинции у них зарплаты очень высокие)
lichMax
Странный совет. А жить на что? Скопить себе денег побольше? Не всегда и не у всех есть такая работа, чтобы ещё была возможность откладывать много денег. + у многих семьи и прочие расходы не на себя.
dwajot
Да, тут хорошо когда ты еще без семьи и можешь себе позволить уйти с работы. Курс JavaRush можно пройти и работая, а вот если захочешь сделать что-то свое (не hello world), то тут нужно много мремени. Я допустим на каждый проект постратил где-то по 3 полных месяца сутра до вечера (с выходными).
belstrel
Раз пошёл разговор за 1с, то у меня товарищи работают по 10 лет разрабами по 1с, но мне с нуля посоветовали всётаки java(раньше я не имел никакого отношения к IT, отучился на финансиста, в том году подготовился по книжкам и сдал экзамен проф по платформе 1с но сразу после этого пошёл на javarush и устроился на сезонную работу(совсем не интеллектуальную) вот летом работаю а в остальное время учусь на отложенные деньги, конечно не быстро но даже с двумя детьми можно экономить какое-то время ради такой цели.Осенью планирую на стажировку javarush а там видно будет.Но думаю совмещать програмирование на java и 1с реально сложно так как надо постоянно мозги располовиневать))хорошая рекомендация отложить бабла или пойти на работу не сильно занимающую мозги))Автору респект, сложно перейти эту грань между ещё учусь и уже зарабатываю))
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.