Привет, войтишник! Решил поделиться своей историей. Начав обучение в конце 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!










ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
if (isPrepared)
return true;
return false;
я говнои т.д. И когда видишь подобные примеры, что взрослые состоявшиеся люди берут и за два-три года осваивают уровень, необходимый для приема на работу — это правда очень вдохновляет! Успехов Вам с новой работой, я иду кодить дальше)Спасибо заранее.
А за статью спасибо, у меня тоже мотивация бывает пропадает, поэтому даю себе установку не пересиживать перед компьютером, а 1-2 часа в день стабильно уделять учебе, тогда надолго сохраняется настрой, даже желание побыстрее начать следующий день чтобы приступить к решению задач на JR ;-)