Привет, войтишник! Решил поделиться своей историей. Начав обучение в конце 2014 и несколько раз забрасывая все куда подальше, 2 месяца назад я получил работу.
В этой статье я не буду рассказывать о том, как и что я писал в резюме, о чем говорил с HR и как я учил английский (об этом будет отдельный пост). Я не буду углубляться в то что я и где учил. Я просто поделюсь своими наблюдениями и размышлениями, возникавшими у меня по ходу обучения по поводу и без. Я поделюсь тем, что считаю хорошим и плохим в околовойтишной сфере. А так же перечислю 8 вещей, которые помогли мне стать программистом. Поехали!
1. Javarush
Воодушевленный перспективами скорого трудоустройства (на Java, ахах) я вбил в гугл что-то вроде "Java-курсы онлайн". Одним из первых и нашёлся JavaRush. Честно сказать, я повёлся на Футураму. :D Не думаю, что взял бы подписку если бы не эти герои. Ресурс мне реально помог на первых порах. Было интересно читать и решать задачи. Тогда ресурс только развивался и были только единицы отзывов про успешное трудоустройство. Это очень вдохновляло (Помню ник - provisota, мой коллега, я тоже отчасти высотник, привет! Спасибо тебе! И ещё одна история паренька не помню уже никнейма. Они особенно вдохновили). Верилось, что через пару месяцев и я напишу свою историю здесь. Но с тех пор прошло 2 года, я здорово поумнел, несколько раз ударялся лицом о серый асфальт возле офисов IT-фирм, а отзывов на сайте стало уже просто море. Вобщем, когда дошёл до 10 уровня, мне было интересно, была уверенность в собственных силах, да и к тому же была акция, поэтому взял подписку. Жаль, что на много меня не хватило, дошёл примерно до 26-27 уровня, после было уже не до того. Возможно, как-нибудь обязательно закончу, если еще не отменили мой безлимит, конечно.
Javarush - спасибо. С тебя все началось.
2. Книги.
Учиться только проходя курсы можно, но сложно. Я не могу сказать, что я прочитал массу книг, но фундаментальное, а именно Эккель "Философия Java" (распечатанная на листах А4), Хорстманн Том 1, Блох "Эффективное программирование", Петцольд "Код" (!must read!), Хант "Программист-прагматик" и кое-что специфическое вроде Building Maitanable Software, чего-то по SQL, не помню названия и кучу всего по мелочи - я всё же осилил.
Это тот фундамент, без которого будет очень сложно.
3. Собеседования
На позицию джуна собеседование выглядит примерно так:
Несколько раз ходил на собеседования в самом начале обучения - однако, едва дело доходило до технической части (теории) - постоянно проваливался. Было очень обидно. С другой стороны, а чего я ожидал? С тестовыми заданиями было лучше. Здесь я чувствовал себя как рыба в воде и был полёт для фантазии, особенно, когда были задачки вроде "олимпиадных" или на алгоритмы. Это были мои любимые часы. Решить поставленную проблему, оптимизировать так, чтобы время выполнения стремилось к минимуму сократить количество итераций и т.д. Полезные навыки, в общем-то, но только для решения подобных задач. Вобщем-то, не буду повторяться, мою статью про собеседования ты можешь прочесть на 20 уровне в дополнительных материалах или по этой ссылке. С июля 2015 года мало что менялось в этом плане. Я забил на собеседования в офисе (крайний раз был в конце декабря 2015), периодически общался по скайпу и сконцентрировался на обучении и личном проекте, иногда собеседуясь по скайпу из дома.
На собеседованиях ты получаешь самое главное в начале пути. Ось, направляющую. Какие навыки нужны, чтобы стать галерным рабом работать в этой сфере. Пускай у тебя совсем немного знаний - если тебя позвали нужно идти. Это просто бесценный опыт.
4. Попытки фриланса
Пробовал заниматься фрилансом, но в сфере Java - это сделать сложновато новичку (ИМХО, разумеется). Если есть желание заниматься фрилансом на апворке или ещё где, то лучше обратить внимание на web (js, возможно, php) или на c#, если разрабатывать простые приложения на основе WindowForms для десктопа (Java для десктопа - жалкое зрелище, как говорил ослик Иа, друг Винни-Пуха). Вобщем, моё мнение - написать новичку что-то серьёзное на java, да еще и чтобы заплатили за это - должно повезти. К тому же, совмещать фриланс с основной не айтишной работе может и не получится.
Фриланс, на котором я не заработал ни копейки, дал мне понимание того, насколько огромен рынок и настолько же огромна конкуренция в сфере IT.
5. Практики при компаниях
Это может показаться более лёгким путём попасть в компанию, но это не так. Тут тоже конкуренция - около 20-30 человек на место. Тесты на компьютере, тесты по английскому, тесты на логику, после чего часто неоплачиваемая стажировка. В Epam, например, юный DevOps может просидеть 5 месяцев без ЗП + 2 месяца со стипендией, при этом, начиная с 3го месяца - полный рабочий день. Само собой, это был не вариант, т.к. обеспечивать себя тоже необходимо. Но если есть возможность - надо идти. Просто не стоит на этом зацикливаться.
Здесь как нигде понимаешь, что компании на твою кандидатуру по большому счету все равно. Таких же как ты только сегодня пришёл десяток-другой. Даже на бесплатную практику очень суровый отбор (я бы даже сказал, что попасть туда сложнее, чем на обычную оплачиваемую работу).
6. IT-Events
Бывают довольно интересные темы
Если ты живешь в более-менее крупном городе, то там наверняка проходят разнообразные встречи по самым разнообразным темам. Не обязательно идти на платные. Есть куча всего бесплатного. Самые крутые мероприятия на которых я был - это SQL Saturday и GlobalLogic Java Days. Куча людей, интересные доклады и хорошая организация (а ещё конкурсы и афтепати :D ) - делают это время незабываемым. Не обязательно по Java. Я посещал ивенты по JS, Python, C# и было очень интересно. Иногда можно даже ничего не понять, ))))) но эмоциями зарядишься на 300%. Если нет возможности - не беда, есть куча всего онлайн. Главное - наличие интернета. Можно мониторить события здесь
Отличная возможность сменить обстановку, развеяться, узнать что-то новое и интересное, да и просто провести хорошо несколько часов.
7. Менторинг
Это и именно это был ключевой момент в моём трудоустройстве. Я благодарен безмерно этому человеку за его терпение и умение доносить информацию. За несколько месяцев менторинга я получил информации и знаний больше, чем за всё время до этого. С другой стороны, знания упали на подготовленную почву, т.к. мы учили именно те технологии, которых мне не хватало. Мы могли провести митинг на английском, обсудить текущие вопросы, поговорить о процессах внутри компании или просто обсудить статьи с банного.it Ж)
Коммуникация - это один из главных навыков в it. Одно дело коммуницировать с алгоритмом, который проверяет задачи и обсуждать на форуме аспекты решения. Совершенно другое - с реальным человеком и в условиях, приближенных к боевым. Наверное, это был лучший этап в моём обучении. Самый продуктивный уж точно!
7а. Курсы.
Я туда не ходил и никому не рекомендую. Есть годный абзац в годной статье о том, сколько должны стоить курсы на одного человека. Рекомендую прочитать статью полностью. В остальном, насчёт курсов - дело твоё. Я свой выбор сделал в пользу менторинга - не прогадал, как мне кажется.
8. Апатия
Несколько раз опускал руки. Как правило, после очередного массового отсутствия ответов на моё резюме или ответов в стиле "Ваше резюме добавлено в базу..." Самый лучший способ отвлечься от этого всего - писать код. Апатия от того, что не пишется код? Тоже было. Решение банально - пойди погуляй, сходи в кино, когда вновь сядешь за код - смени задачу, например доделай что-то, что когда-то не сделал. Я от многих программистов слышал цифру - 6 часов. 6 часов в день можно продуктивно писать код. Я мог подзависнуть и на ночь, и весь выходной просидеть за монитором, после очереди таких ночных и дневных бдений у меня могло возникнуть "мини-выгорание" (называйте это как хотите: "депрессия", "усталось", etc.), которое в некоторых запущенных случаях могло длиться неделями. Чувство собственного ничтожества и отсутствие всякого желания писать код дальше. Это очень тяжело перебороть, но зато это научило меня важной вещи в процессе обучения:
Отдыхай!
Видео по теме: Дмитрий Мантула - "Как выучить язык программирования за 25 минут"
Link (українською)
Оффер
В один из еще тёплых осенних дней мне позвонили и, о чудо! Я ушам своим не поверил. Моё резюме нашли в базе и интересуются, ищу ли я еще работу? Когда-то в июне я отправлял им резюме, но не прошёл. Мне перезвонили(!), я повторно отправил обновленное резюме. Вакансия, конечно, больше была похожа на Automation QA (no...), да и работа удалённая (oh, no-no-no), к тому же зп не соответсвовала моим ожиданиям (nooooo), но мне по сути дела было уже все равно. Согласился на тестовое задание, на которое было отведено три дня, с учетом ознакомления с документацией проекта. По сути дела, тестовое заключалось в написании unit-тестов на работающее приложение. Однако, искать по жутко неудобной (видимо, на тот момент, с непривычки) документации было трудно и на задание у меня ушла неделя. Как обычно, в последний день все переделав (рефакторинг же, ога!) и едва не поламав все написанное (зато кода в 2 раза меньше!) - отправил на почту рекрутёру. После этого было 15 дней мучительного ожидания ответа. И через две недели получил ответ: приглашение на собеседование(!), на позицию полноценного Java-разработчика(!!). По информации рекрутёра - моё тестовое задание настолько понравилось(!!!), что было решено взять меня на другую должность. Приятно, блин. Бонусом шла сумма зарплаты именно та, что я хотел изначально(!!!!). На следующий день было собеседование c HR, потом техническое. Тем же вечером получил оффер. Через 2 недели начал работать.
Пару слов про работу удаленно
На данный момент работаю 2 месяца. Дома, удалённо. Это не так страшно, как казалось изначально. Работа нравится, особенно, когда все получается))) Несмотря даже на целую кучу минусов, описанных здесь, работать очень приятно. А если серьезно, то главный минус в том, моя жена работает QA тоже удалённо и у нас однокомнатная))). Кроме этого сложно, без живого контакта. В офисе можно прийти к кому-либо и пнуть, мол нужна помощь и показать пальцем на проблему. Здесь же нужно качественно её описать, вместе со своими ощущениями, страхами и переживаниями. С другой стороны это заставлять детальнее изучить проблему и в части случаев, я даже не задаю вопрос. Из плюсов, основной это более-менее свободный график, экономится время на проезд, отсутствие Большого Брата за спиной (на удаленке, кстати, это не всегда так) и конечно же, скилл самоорганизации. Ну что ещё? Можно спокойно борщика с чесночком поесть и после этого обсуждать насущные вопросы с коллегами :D
Вот и всё, что хотел сказать. Может немного сумбурно, т.к. писал я вечером, после работы, но как мог пытался сделать эту статью интересной. Надеюсь, что-либо из написанного кому-то да пригодится.
Keep calm and write code!
JuriMik
26 уровень
if (isPrepared)
return true;
return false;
Во-первых, мне это говорили уже в нескольких местах, но когда if используется без фигурных скобок — это дурной тон. Да, можно. Да, язык позволяет. Но лучше так делать не стоит. У меня на работе за это дают по рукам.))) Лучше использовать скобки, else можно не писать.
Но еще в данной ситуации использовать тернарный оператор
Как видишь, это тоже лишнее. Можно упростить до
еще лучше сократить функцию до одной строки и убрать переменную isPrepared
По примерам отдыха, за последний месяц:
— посмотрели с женой 10й сезон «Теории Большого Взрыва», «Шерлока» и так, по мелочи несколько фильмов дома;
— выделил день для поездки на склон. Катался на борде, хочу еще (летом альтернатива велосипед);
— сходил в кино с двоюродным младшим братом на Звездные Войны;
— метод «Помодоро» (линк на видео в статье, можно в гугле найти тот же доклад на русском с JavaDays Kharkiv/Kyiv) — реально помогает меньше уставать. У меня пока что не получается на 100% работать по нему. Это, в принципе, нормально. Главное, найти чем заполнить перерывы. У меня обычно в перерывах билдится и деплоится, поэтому я могу что-то читать или играться в планшет;
— дела по дому. Я недавно купил своё жильё, поэтому дел невпроворот. Шкафчики на кухне, сантехнику в порядок привести, полочки в кладовке сделать, мебель подвигать, электрика и прочее (не говоря о том, как мне «повезло» при переезде, когда в тот день не работал лифт, а у меня 9й этаж)));
— почитать что-нибудь не о программировании. Я люблю Стругацких, например;
— можно было еще найти себе какое-либо хобби, но мне это не нравится, я решил вместо этого поступить на заочку (в декабре ползал на сессию);
— литература по программированию сугубо для меня тоже отдых. Но не вся, не спорю. Я отдыхал, когда читал «Код» Петцольда, «Программист-прагматик» Ханта и когда перечитывал «Effective Java» во второй раз. Про Эккеля и Хорстмана такого сказать не могу, да. Сегодня мне доставили «Паттерны проектирования» серии Head First — один выходной будет посвящен ей. Вообще, я когда читал что-то и не мог понять, я не парился и просто читал дальше. Зачастую, все понятно становилось через несколько страниц. Иногда, нужно перечитать через 2 дня. Иногда через месяц-два. Не идёт глава Эккеля про многопоточнос
ЗЫ забавно получается, я думал только я знаю хак про ходьбу, оказывается тут все толпами маршируют по улицам. Теперь буду каждого прохожего подозревать в программировании. Кто идет к метро пешком — тот программист :))
ЗЫы а за квартиру — мои поздравления! Это круто:)
Еще JuriMik правильно подметил, что отдыху часто мешает психологический фактор. Когда кажется, что вот ты сейчас тратишь время на отдых, а мог бы потратить его более полезно. Но тут важно понимать, что хорошо отдохнувший человек, может за день сделать, то что в усталом состоянии легко растягивается на неделю. Главное найти баланс и не бояться потратить некоторое время на эксперименты ).
Мой коллега по занятиям с ментором, в подобной ситуации, сидел на рабочем месте допоздна, т.к. на работе было комфортней учиться, никто не дергал. Сейчас работает уже. Тут главное, чтобы вторая половинка понимала эти намерения.
Я удаленщик
Да, это вот про меня как раз. Действительно это давит, и ничего с этим поделать не могу. Всегда кажется что я просто лентяй.
С кодом проблем никогда не было. Если бы мне кто-то сказал «тебе не обязательно читать книги, просто кодь. Всегда. Благослови тебя Билл» я бы сказал «ок» и кодил бы по 12 часов в сутки за нехер. Но нет же, я гуглю «Андроид собеседование» вижу среди прочих вопросы о коллекциях Java и достаю свою губозакаточную. Боязнь пред планетарными фейспалмами технических экспертов заставляет меня делать то, что мне тяжело дается. Отсюда и хандра. Как победить — хз. Мотивации 0 по большому счету из-за того, что моя цель фикс это андроид. Хочется бесконечной практики, от которой я получаю максимум удовольствия, чего не скажешь о чтении трудностей перевода Эккеля. В целом, это локальная проблема, с которой за два года сталкивался не раз и не два. Но хочется поныть и я поныл :)
ЗЫ ты вот писал
Ну оно и понятно
Вот людям живется
Работать ты тоже в таком режиме собираешься? ;-)
1) Если в жизни перегруз и избыток стресса, то никакой бифазный сон не поможет. Чем больше стресса, тем больше нужно спать. Иначе легко довести себя до состояния, когда мозг уже не работает. Потом сложно выбраться.
2) Если цель — во чтобы то ни стало, обучиться программированию, то имеет смысл найти работу с более свободным графиком. По крайней мере, на время обучения.
Я бы даже пошел на меньшую зарплату, лишь бы освободить время. Потому что в перспективе все это даст гораздо больше. Да и на семью еще немного времени освободится, что тоже очень неплохо.
Спасибо заранее.
Если хочешь попробовать FX — вот линка. Из плюсов FX с ходу назову поддержку CSS и SceneBuilder в Idea. Про Eclipse не знаю, т.к. к моменту, когда я окончательно перешел на Eclipse я на JavaFX забил.
Про swing даже писать не буду ничего. Ибо это уже настолько устарело, что говорить не о чем. За 2 года я видел целую 1 вакансию, где требовался этот навык. По FX ненамного больше, если что.
Поэтому, если есть желание разрабатывать для десктопа (я сейчас о Windows), то рекомендую смотреть в сторону C#/WindowsForms.
Upd. Гуглом нашёл вот такую вещь — SWT. Можешь попробовать ;)
Спасибо еще раз за ответ, и удачи.
Спасибо, взаимно!
А за статью спасибо, у меня тоже мотивация бывает пропадает, поэтому даю себе установку не пересиживать перед компьютером, а 1-2 часа в день стабильно уделять учебе, тогда надолго сохраняется настрой, даже желание побыстрее начать следующий день чтобы приступить к решению задач на JR ;-)
Что это должно означать? ))
Ну а по остальному, типа «как бомжи» — без комментариев, смешно читать :-D
Серьёзно? Откуда?
что? ХарьковЛайф? ты наверно шутишь, эта школота училась у меня.
PS 3 года назад я был активным участником всякого рода срачей. Да, я был молод и не ведал что творю, но времена изменились. Возможно крыза виновата или два тома хорстмана, упавшие мне на голову с полки
Автору — спасибо за интересную историю :)