• 0.01

  • +0.46

  • ,

Моя история успеха

20.06.2015 — 09.01.2017

Думаю, пришло время и мне рассказать о своем пути в мир java.

Начну издалека.

Предупреждение, пост будет длинным.

Мне 25 лет. Я живу в Санкт-Петербурге. Приехал в этот город учиться из провинции. Учился на бизнес-аналитика. Сама учеба мне не приносила удовольствия. Я не понимал, что я буду делать, не видел практической выгоды в изучаемых мною предметах. Да и что лукавить, я просто страдал херней, как и большинство студентов. От сессии до сессии я вел беззаботный образ жизни, и вся моя учеба заключалась в закрытии нажитых учебных долгов.

Окончив бакалавриат до меня дошло, что работать мне негде, не на что снимать квартиру, а уезжать обратно домой, так ничего и не достигнув мне не позволяло что-то внутри. Так что магистратура показалась мне разумным выходом. Она давала мне время жить в общежитии, пока я ищу работу.

Работу я нашел. Устроился в компанию, которая внедряла ERP системы 1С и Microsoft Navision. Устроился консультантом. Это тот чувак, который является промежуточным звеном между клиентом и разработчиком. Однако руководство приняло решение переделать меня на программиста, тк я знал Pascal. Так и порешили. Стал младшим разработчиком Microsoft Navision. Язык разработки — C/AL. Это практически тот же паскаль, кастомизированный под систему Navision. Т.е. писать на нем нельзя ничего, кроме всяких приблудов для этой системы. Первое время мне нравилось работать. Однако скоро я понял, что как программисту, мне в этой среде очень тесно и как-то не комфортно. Но учеба в магистратуре не позволяла учить что-то другое, да и что лукавить, я был слишком ленив для чего-то другого. Получив от магистратуры все, что я от нее хотел (время пожить в общаге и работу), я с ней кое как покончил.

Начало пути в мир java было положено тогда. Когда я освободился от оков универа, и принял решение изучить какой-нибудь язык OOП. Стал выбирать. С++ слишком сложно — писали на форумах, С# — не помню, что писали про него, Java — востребовано, не так сложно, как C++, есть много литературы, в том числе русскоязычной. Ну java так java (стоит сказать, что в универе я проходил один семестр джаву. Кое как получил зачет и решил, что никогда в жизни не свяжу свою жизнь с этим языком). Когда язык был выбран, не найти javarush было уже невозможно.

Присоединился к этому ресурсу 20 июня 2015 года. Начал учиться. Не знаю, как описать свое обучение здесь. Я не был выдающимся учеником. Я не занимался так регулярно, как самому хотелось бы. Я не всегда решал задачи сам. Я не всегда понимал почему у меня зачлась очередная задача. Я не всегда читал все доп. материалы к лекциям. Я часто бесился, когда валидатор испытывал мои нервы на прочность. У меня бывали большие перерывы в обучении (более месяца), иногда из-за напряг по работе, иногда из-за лени, которую не всегда удавалось побороть. Однако, я бы не нашел работу, если бы изучение java не изменило что-то внутри меня. Впервые в жизни я твердо решил довести это дело до конца. Внутри я говорил себе, что несмотря ни на что, я не брошу это дело. Это была первая цель в моей жизни, достижение которой требовало от меня больших усилий. И первый раз в жизни я говорил себе, что плевать на все, я достигну её. Не знаю, смог бы я также, если бы не было javarush. Этот ресурс позволяет видеть тебе путь до твоей цели. Он тебе как бы говорит: «Вот он, этот путь, 40 уровней и работа». Это очень помогает не бросить.

Купил себе unlimited подписку. Знания паскаля очень помогали в решении задач. И мне действительно нравилось решать их. Сидеть в ИДЕЕ, чувствовать себя крутым разработчиком с классным окружением. Прошел 20 уровней, и решил, что пора по собеседованиям. Я конечно надеялся получить предложение, но больше хотел попасть на собеседование для того, чтобы оценить приобретенные знания, и получить пинок и мотивацию для дальнейшего развития. Все так и произошло. Собеседование я конечно же не прошел, но к моему большому удивлению, все оказалось не так плохо, как я боялся. Однако пинок и дозу мотивации я получил. Я понял важность теории, и с 21 уровня стал активно читать доп. литературу. Ну как активно, с 21 уровня стали появляться вопросы на собеседования по теме уровня. Я и решил, что если отвечу на них, то этого будет достаточно, т.к. я ужасно ленивый. Вот с 21 уровня и стал постить ответы на вопросы по темам уровня.

Люди стали комментировать мои ответы. Был такой коммент: «Спасибо большое за топик. Продолжай вести блог — он для меня как точка опоры: вижу твой ответ и открываю книги, гуглю, пытаясь найти недостающее.» Это очень меня удивило. Я писал только лишь для себя, а оказалось, что кому-то это тоже полезно. Это придало дополнительной мотивации. Я уже чувствовал обязанность отвечать на все вопросы, и постить свои ответы.

Однако время шло, а я развивался только лишь в рамках Java core. Учил только то, что давал мне javarush. А на рынке труда были такие страшные слова, как maven, gradle, jdbc, tomcat, hibernate, spring и т.д. А я был как из анекдота: «Я знаю кун-фу, карате, таэквондо и очень много других страшных слов». Поэтому я решил, что пришла пора расширять кругозор. Стал гуглить, искать уроки по разным темам, начал с jdbc и там пошло. Когда-то меня дико бесило, что я не могу найти нормальный виджет погоды на андроид, еще тогда подумал, что напишу его сам. Это толкнуло меня изучать андроид. По андроиду есть классный ресурс startandroid, там из большого количества безобразно простых уроков, можно сложить что-то не такое-уж и простое. Виджет погоды я так и не написал, однако написал калькулятор, как бы банально это ни было. Во время разработки калькулятора изучил основы регулярных выражений и алгоритм обратной польской записи. Мне нравилось это дело. Но на рынке труда по джаве преобладали вакансии, связанные с Java EE. Поэтому метался между яварашем, java ee и андроидом. Написал небольшое веб приложение, одну логическую игрушку на андроиде. Когда-то я написал морской бой. Решил и его переписать, т.к. более-менее освоил ООП. Можно сказать, что я написал его с нуля, т.к. там был такой шлак, что я не мог понять, как я заставил ЭТО работать, и как ЭТО вообще работает.

Стал снова искать вакансии. Откликался на все подряд. Но меня никто не звал. Целых три месяца. Я не мог понять почему. Я искал инфу о том, как устроиться джуниором. И везде писали о том, как нужно вести себя на собеседованиях. Это конечно полезная информация, но как туда вообще попасть?! Это была действительно проверка на прочность. На каком-то форуме человек жаловался, что уже столько занимается, а его все никак не берут. Кто-то ответил ему: «Такова Java. Слишком высок порог вхождения.» Эти слова вселили какую-то гордость в меня. Да, я испытывал гордость, от того, что порог вхождения действительно высок, и я все равно не брошу. Я говорил себе, что мое дело малое, просто продолжать заниматься, чтобы не произошло. Это, наверное, самое сложное. Просто продолжать заниматься. Изо дня в день. Своим постом я хочу дать всем один совет. Занимайтесь. Верьте в себя и в свою мечту. Не позволяйте никому, и в первую очередь самому себе, бить по вашей решительности. Вы должны не просто верить, что все получится. Вы должны быть уверены в том, что это произойдет, потому что вы не бросите это дело, и будете бить в одну точку, пока не пробьетесь к своей цели.

Почему меня никуда не звали, я так и не понял. Но спустя 3 месяца меня пригласили на 4 собеседования. На три вакансии я откликался. А одна компания позвала меня сама. Это был Яндекс. Я так и не понял, чего они меня позвали. Хотя, это было бы классным завершением моего поста. Но в Яндекс я так и не прошел. На собеседованиях в основном гоняли по теории. Мне очень помогли мои личные проекты, перечисленные выше, которые позволяли менять тему разговора от теории к практике. Так что это тоже как бы совет, это может вам помочь.

Из 4 собеседований, яндекс меня отшил. Другая фирма оказалась шарашкиной конторой. Третья и четвертая обещали перезвонить.

Перезвонили из четвертой, поздравили с успешным прохождением первого этапа собеседования. Выслали тестовое задание.
Описывать его подробно не буду. Но если коротко, необходимо было написать веб приложение, через которое мне нужно было взаимодействовать с интерфейсом мобильного приложения, через стороннюю программу, локально запущенную на компе. Т.е. веб приложение посылало команды стороннему приложению, сторонее приложение посылало команду телефону по wifi, и все это отражалось в веб интерфейсе. Когда я получил тестовое задание, я не знал львиную долю тех технологий, которые нужно было использовать. У меня была неделя. Это был кодерский марафон. Настолько интенсивного кодинга у меня не было никогда. На протяжении недели не существовало в мире ничего кроме меня, и этого проекта.

Закончил его и отправил. Мне перезвонили и предложили работу. Сказали, что им все настолько понравилось, что они приняли решение в пользу меня, еще не успев получить решения от других кандидатов.

С 9 января сего года я работаю автоматизатором тестирования мобильных приложений. Работой сейчас я очень доволен. Много плюшек, в числе которых бесплатное питание весь день, график с 12, гамак в кабинете и корпоративный английский. Иными словами, занимайтесь. Вы делаете это, потому что верите, что оно того стоит. И оно действительно того стоит.

Три полезных таблицы по вводу-выводу в Java

Друзья, всем привет.
Проходя восемнадцатый уровень, мне потребовалась систематизация входных и выходных потоков и декораторов к ним. К счастью, такая систематизация есть у Б.Эккеля в его философии, однако пользоваться ей не совсем удобно — помимо того, что она раскидана по разным страницам, так ещё нужно постоянно держать под рукой книгу открытую в нужном месте, или открытую интернет-версию книги, в которой кстати, в одной из таблиц не хватает строки, да и классы с фильтрами разбросаны не «эргономично».
В общем решил я для удобства всё это дело скомпоновать аккурат в три таблицы: ввод, вывод и таблица сравнения классов разных версий Java. Всё это дело я распечатал, и как ни странно, пользовался я этими таблицами достаточно часто. Очень хорошо помогает освежать в памяти классы ввода-вывода, и оперативно понимать о чём идёт речь в том или ином примере в литературе, благо эти три листочка всегда под рукой. С ней ты уже более осознанно подходишь к выбору классов. Рекомендую.

Таблица классов и декораторв к ним для ввода данных.
Справа — классы, слева — декораторы к ним.
Таблица классов и декораторв к ним для ввода данных.
Таблица классов и декораторв к ним для вывода данных.
Справа — классы, слева — декораторы к ним.
Таблица классов и декораторв к ним для вывода данных.
Таблица соответствий между классами и декораторами версий Java 1.0 и Java 1.1
Справа — классы, слева — декораторы к ним.
Таблица соответствий между классами и декораторами версий Java 1.0 и Java 1.1
Если кого не устраивает расположение, можете сами перекомпоновать как вам удобно. Эти таблицы в формате doc, odt, jpeg и tif лежат по этой ссылке.
Распечатывайте и держите под рукой. Всем успехов в освоении Java.
  • ,

Еще одна success story

Вот и дошли мои руки к написанию сего поста. В свое время такие статьи меня очень сильно мотивировали, и я был искренне рад за каждого кто здесь отписывался. Я надеюсь эта статья послужит мотиватором еще кому-то. Много воды утекло с тех пор как я штудировал JavaRush, но я не забыл. Я считаю этот ресурс одним из лучших. Дальше много букв о моей истории успеха.

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

Так вот работал я юристом уже 3 год и стало это очень скучно и тупо. Все те же договора, те же суды, те же фразы. Плюс ко всему много моих друзей, сокурсников работали в ИТ и давно мне говорили подтягиваться туда.

Вначале попытки мои начать учить Java, были неудачными. Каждый раз начиная читать книгу или статью — меня тормозило, усыпляло или вырубало))) Я уже начинал думать что это не мое. Хотя до этого в лицее учили Pascal и он мне нравился.

И все так бы и было, если бы не один мой хороший знакомый который посоветовал попробовать Javarush.

Первые 10 уровней у меня прошли на одном дыхании — после работы прилетал домой ради этого. За первый месяц вечерами прошел первые 10 уровней. Купил месячную подписку и взял отпуск: за тот месяц прошел до 20. Настолько увлекся что не замечал как время идет. В конце концов таки купил полную подписку за 100 баксов и радовался как слон. Не помню точно до какого уровня дошел, наверное 23 или 24.

В это время я начал посматривать на вакансии и понял, что, к сожалению, я незнаю еще очень много для того чтоб успешно устроиться на свою первую работу джуном. И все это совсем разные технологии.

Пришлось оставить Javarush и посмотреть, подтянуть SQL, Spring, Hibernate, JDBC, HTML, CSS, алгоритмы(!) и другое.

Самый правильный вариант после 20 уровня — это начинать паралельно рассылать резюме и ходить по собеседованиям. Во-первых, вы точно будете знать свои пробелы, во-вторых вы по немногу будете привыкать к ним и терять страх :)

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

Продолжая учится в рабочее время, я все рассылал резюме и ходил по собеседованиям. В какой-то момент попивая чаек на работе меня осенило. Такое ощущение, что я был слеп и прозрел. Пазл перед глазами сложился. Я понял, что текущая работа занимает слишком много времени которые могут быть потрачены на учебу и поиск работы. Это было решение уволится.

Стоит упомянуть, что я женат и жена у меня тогда была на 5 месяце беременности. Мое решение уходить с работы и оставаться ни с чем в такой момент ее сильно испугало. Все кто знал о ее положении и моем решении смотрели на меня искоса, коллеги, друзья. И это понятно) Ведь выйди она в декрет и не найди я работы — было бы очень тяжело. А времени до декрета было всего пара месяцев.

Меня отпустили но пришлось 2 недели отработать до увольнения.

Еще стоит упомянуть что в городе откуда мы с женой родом(небольшой обласной центр на западной Украине) открылся офис одной ИТ компании. Несмотря на то, что я не искал работу нигде кроме Киева, и на то что они не набирали джавистов, я еще за 2 месяца до увольнения отправил им резюме и подписал что был бы рад работать у них если они решат собирать Java команду. Отправил и забыл.

Подходим к самому интересному. На следующий же день после решения уволится мне позвонила девушка. с той самой компании, через 2(!) месяца после отправки резюме, и предложила попробовать пройти тест на JavaScript интерна.

На тот момент я считал JavaScript и фронт енд девлоперов кем-то типа формошлпепщиков которые только и делают что двигают кнопочки на пару пикселей. Как оказалось я ошибался.

У меня была одна неделя до крайнего срока прохождения онлайн теста. До этого момента JavaScript я даже в глаза не видел. Скажу вам вот что — если вы знаете Джаву, то выучить JavaScript вам не составит особого труда. Мне далось легко и было довольно увлекательно.

Пройдя тест меня пригласили на скайп интервью. Оно длилось полтора часа. Меня спрашивали по JavaScript, а потом и по Java, алгоритмам, математике. Мне наверное повезло потому, что парень который меня собеседовал сам знал Java и когда я по джаве ответил на 10 из 10 он пригласил меня на еще одно, очное интервью и дал тестовое. Тестовое я сделал без проблем.

Отработав две недели я уволился. Это был четверг. Мы с женой поехали на выходные в свой родной город к родителям праздновать Пасху. Во вторник после Пасхи я пришел на третье собеседование.

На интервью было еще пол часа разных не особо технических вопросов и мне предложили интернатуру на 2 месяца с ЗП выше той что у меня было на прошлой работе. Сказать что я был счастлив — это ничего не сказать. Тяжело описать такое словами. Получилось так, что я вышел на работу ровно через неделю после увольнения с предыдущей.

Из плюсов — мы с женой вернулись в свой родной город, родился ребенок, родители были рядом и помогали с ребенком на первых порах и я наконец-то нашел работу мечты. Это даже нельзя назвать работой, мне так нравилось(и нравится) делать то что я и сейчас делаю, что я готов был и бесплатно это делать.

Досрочно, за месяц, закончив интернатуру, мне предложили позицию Junior JavaScript Developer и + 50% к ЗП на следующие пол года. Еще через пол года + 100% к ЗП. И это при всем при том, что работа идет в кайф. Отличное чувство.

Прошло еще немного и я решил идти дальше. Причина банальна: используемые технологии были устаревшими и безперспективными, и амбиции выросли)) В общем и целом за 2 недели пока мой профиль висел на джинне мне предложили оффер от которого я не смог отказаться. Это переезд обратно в Киев, небольшая компания-стартап, выбор технологий за мной + ЗП в 3 раза больше (твердого миддла).

Работая здесь два месяца я могу сказать, что ни о чем не жалею. Особенно я благодарен создателям и комьюнити в JavaRush. Именно он дал мне тот первый толчек, и те важные практические навыки.

Казалось бы причем тут Java, я же работаю совсем с другим языком? Да, неважно с чего ты начинаешь, важно начать. Еще через Х лет я возможно буду писать вообще на неведомом сейчас языке. Главное не язык, а понимание основ. Кстати в этом мне очень помог курс по Алгоритмам на Coursera.

Всем спасибо за внимание и помните, главная черта для достижения любой цели — это настойчивость.

Руководство пользователя IntelliJ IDEA. Отладчик.

Отладчик

  1. Запуск отладчика
    После того как вы настроите конфигурацию запуска вашего проекта, вы можете запускать его в режиме отладки, нажав Shift + F9



    В окне отладчика вы можете видеть стек вызовов функций и список потоков, с их состояниями, переменными и окнами просмотра состояния. Когда вы выбираете контекст вызова функции, вы можете просмотреть значения переменных соответствующих выбранному контексту.