Мой путь Java программиста
Я более 8 лет занимаюсь профессиональной Java разработкой. На данный момент я возглавляю исследовательский отдел в крупной Европейской компании в качестве Ведущего Java Архитектора.
Но так было далеко не всегда и были моменты, когда казалось, что мне вообще не быть Java разработчиком и выбор программирования в университете это моя большая ошибка. В этой статье я хочу поделиться как мне удалось преодолеть личностный кризис и доказать не только себе, но и всем окружающим, что нет ничего невозможного.
Помню молодого себя, только получившего диплом о высшем образовании. За годы обучения я так и не научился программировать ни на C++ ни на Java. Нас заранее учили по устаревшим учебникам и книгам, мы прыгали с одного языка программирования на другой.
Ничего удивительно, что первое время после завершения университета я работал кем угодно, только не программистом. Куча проваленных собеседований на должность Junior Java разработчика, тогда мне казалось что программирование это удел гениев и математиков.
После очередного проваленного собеседования на должность Junior Java разработчика, я встретил своего старого знакомого. Тогда он как раз поделился со мной радостью, что получил оффер от Американской компании и собирает документы на релокацию.
Для меня, это послужило огромной мотивацией и в тот самый момент я поставил себе цель — получить оффер и поработать в крупнейших Американских и Европейских компаниях. Я понимал, что если я хочу следовать за мечтой, мне надо заняться самообразованием и надеяться только на себя.
Так я начал читать книги и прочую литературу по Java программированию. Но чем больше я читал, тем больше вопросов у меня появлялось, непонятных терминов и аббревиатур, а потом голова шла кругом ). Ведь большинство книг для начинающих написаны так, как будто читатель должен быть профессором или обладать 10-ти летним опытом работы в программировании.
Я перечитал с десяток различных книг и статей, доходил до определенной главы и понимал, что ничего не знаю и забрасывал обучение. Учиться я мог по 16 часов в день, пока не выгорал, затем забрасывал обучение на пару дней, накапливал мотивацию и заново продолжал обучение. Так, продолжался месяц, пока я не набрал критическое массу знаний, чтобы пройти собеседование на должность Junior Java разработчика.
Так, в чём же залог успеха?
- Обучение по 16 часов в день, двумя спринтами по 5 дней. Очень важно иметь полноценный отдых, желательно по 2-3 дня межу спринтами.
- Не пытайся учиться на сложных примерах и туториалах. Я наступил на все эти грабли, пытаясь создать сайты, мессенджеры, игры. Не чем хорошим, это не заканчивалась, на половине пути я понимал что ничего не знаю и в голову приходи мысли, что наверное программирование это не моё. Лучше писать очень простые программы, но на 100% понимать как они работают.
- Не пренебрегай тем, как работает виртуальная машина Java, что такое стек, куча, типы переменных. Мне казались эти вещи не важными, ведь я учусь программировать, а не теорией заниматься. Каково же было мое удивление, когда на собеседовании я полностью завалился на теории, даже не приступив к программированию.
- Последовательное изучение материала, очень важно. Перед тем как переходить на следующую лекцию, будь на 100% уверен, что ты полностью понял текущую.
- Не бойся отказов на собеседованиях, я завалил около 8 собеседований, прежде чем найти работу. После каждого проваленного собеседования, я становился только уверенней, выписывая на листочек все вопросы на которых я завалился.
1) Мне одному кажется, что здесь явная логическая нестыковка?
2) У всех джавистов такая упоротая логика?
По моему это фантазии копирайтеров джавабрейнс, а не реальная история.
На обучение был потрачен месяц, неясно зачем его на спринты надо было делить)
Так то ничего такого нет, чтобы месяц позаниматься зубрежкой, обычная сессия
Очень тяжело, как физически так и морально долгое время сидеть по 16 часов в день, изучая java core. А когда ты заранее знаешь, что твое обучение ограничено спринтом в 5 дней, как то легче и стараешься максимально выложиться в это спринт.
Поделюсь моим опытом изучения Java.
Я занимался с августа по декабрь 2019 года. Я работал с 9 до 18, работал в Москве, жил в МО, чтоб успеть на работу к 9 утра, мне приходилось вставать в 6 утра, а домой я заходил в 20:34. Получается, что домой я приезжал чисто поспать. Я вставал в 5 утра, и занимался 1 час, потом собирался на работу, бывало, занимался в электричке еще час, но внимание было рассеяным, т.к. обстановка в толкучке была некомфортной. Так же, если я не занимался утром, я не ложился до 23 часов вечера/ночи, занимался. Шло немного туго, т.к. с прохождением материала обучение становилось более сложным, и хронический недосып так же давал о себе знать на усваиваемости материалов. Потом случился новый 2020 год, я сделал перерыв на 2 недели. И после перерыва я не смог продолжить, потому что я не смог выполнить ни одну задачу, я просто напросто за эти 2 недели все забыл. В голове была четкое понимание "я же это делал 2 недели назад, я же знаю как это!", но пальцы уже не могли написать рабочий код. В итоге, поняв, что я не могу сейчас нормально учиться, и нынешняя работа по доходу меня устраивает, я забросил обучение... Вчера, я опять вернулся к мысли, что нужно осваивать программирование. Времени свободного у меня сейчас стало значительно больше.
2 - 3 часа в день тоже неплохо, но ни в коем случае нельзя останавливаться или сбавлять темп. По себе заметил, как только даешь небольшую слабину, вся мотивация пропадает и очень тяжело заставить себя что-то делать. Даже сейчас, я не могу позволить себе, не учится, иначе просто устарею, как по знаниям так и по технологиям. Бывает приходишь часов в 7 после работы, включаешь
компьютер и продолжаешь изучать что-то новое, параллельно кушая (благо супруга понимает и не мешает мне), итак может продолжатся до часу — двух ночи.
Так ты никогда не научишься. Все что ты делаешь - это просто играешься и это тебе уже надоело
По 16 часов в день конечно хорошо учится, правда если не работаешь) Когда работаешь на основной работе (которая не связанна с программированием) , то максимум 3-4 часа получается (
И это намного эффективнее бесполезного изучения паттернов и принципов, которые ты не можешь нигде применить. Разок в жизни можно посидеть месяц (это немного) чтобы попасть на должность джуна
Комментарий недоступен
Не вода, а типичные откровения человека, который занят не своим делом чисто потому, что тут деньги неплохие платят. Вернейший маркер — слова о том, что в институте ничему не учили (такие люди хотят ясную инструкцию «как мне зарабатывать», а не профильное образование инженера).
Как закономерное следствие — через несколько лет обязательно будет статья «как я сильно выгорел в IT», где тот же автор будет плакаться, какой он крутой, но всё равно совершенно не может выносить творящийся в отрасли ужасный ужас.
Обучение по 16 часов в день, двумя спринтами по 5 дней
Назвал бы эту статью исповедью неудачника, если бы она не была тупой рекламой курсов
ну а вдруг кто-то поверит в себя и купит курсы
Чота все эти кейсы про "стопиццот часов в пет-проектах, а потом я -программист" есть бредятина первостатейная. После самоудовлетворения со своими импотентными стартапами не стать программистом. Можно изучить какие-то практики, да, но в энтерпрайзе тебе не дадут ничего кроме джунских задач под присмотром. Можно получить понятие о командной разработке участвуя в опенсорсе, да, но никак не стать разработчиком.
Единственная верная тема для входа вайти - попасть во внутреннюю Гуглу какого-либо интегратора. Там и поднатаскают в практиках современного энтерпрайза, и дадут первое место в команде крупного заказчика = допустят до живого кода. Да, скорее всего придется отдать интегратору 1.5-2 года, работая за еду, но начинающий дев получает билет в самостоятельную жизнь в виде практических знаний и боевого опыта.
Согласен. Через интегратора проще всего устроиться джуном. Многие ещё устраивают свои курсы, где подтягивают потенциальных кандидатов и оценивают их навыки на дистанции. Сам так начинал, и это было проще простого, если есть хотя бы базовые знания в области, потому что больше половины твоих конкурентов за место там - овощи какие-то, которые даже не удосуживаются домашку сделать. И не надо платить не за какие вшивые курсы: тебе сами все покажут и первую работу дадут при должном усердии. А уже потом, отработав хотя бы год, все двери открыты.
Не удосужился перепроверить текст после набора. Речь у меня шла про внутренние школы интеграторов. Я так же прошёл одну такую, но повезло, что наш поток не подписывал кабальное соглашение об отработке. И, через пару месяцев на проекте Сбера от этого интегратора я свалил в нормальную компанию.
PS Откуда у автозамены вылезла "Гугла" - я не знаю))
А что за кабальные соглашения?
Об обязательной отработке n месяцев на позиции, куда они тебя посадят, с зп, которую они тебе дадут, либо компенсации их затрат на обучение курсанта в размере 600 тысяч. Могут и 1 600 000 написать.
С нашим потоком интегратор поступил не очень честно - при наборе обещали одно, в итоге - другое. Поэтому многие решили, что и со своей стороны можно не быть хорошим и не работать на дядю за еду.
Комментарий недоступен
Можно, но это всё гемор, да и много ли человек начнут тяжбу после того, как их выучили и работу дали вообще без усилий? Тут ещё фактор человеческой благодарности работает. Несмотря на то, что наш поток кинули по зп и должности(обещали, что мы придем на место разработчиков, а у всех в договорах стояло "стажёр") больше половины осталась там именно из благодарности. Ну и как некоторые по секрету сказали - с собесами не сложилось..
Комментарий недоступен
Да, конечно, но он не тяжбу по нанесению ущерба будет начинать, а по факту нарушения договора. По дефолту суд не будет рассматривать можно ли вменить норму о признании договора кабальным и ничтожным, если там нет совсем уж явных злоупотреблений вроде права первой ночи))). Придётся встречный иск подавать. А сейчас интеграторы в школы набирают чуть ли не выпускников ПТУ - вчерашних электриков, да сварщиков. Им-то в радость войти вайти..
Это не Java Mentor?
Что? Не знаю что такое Java Mentor. В посте же написано, что речь про внутренние школы интеграторов, читайте внимательнее.
Можете по подробнее рассказать как устроится через интегратора? Я в этой теме новичок.
А подскажите примеры внутренних интеграторов а то что то не гуглится
Иннотех у ВТБ, рт-лабс у РТК из тех что я вспомнил на вскидку.
Ну да. Всё просто и банально. Долбать долбать долбать долбать долбать
Все уже устали и спят. А ты долбать долбать долбать долбать долбать
Блять во настырный! Долбать долбать долбать долбать долбать
Это любой язык программирования так. Плюс конечно интерес адовый и горящие глаза. Или горящий анал (нет денег, занищебродил, экстренная смена работы).
Я по второму пути прошел)). после универа. Зарплата инженера в моих ебенях была 3 тыщи рублей после дефолта 1998
Не, фиговый кейс. Лучше потратить месяц по 5 часов в день, чем неделю по 16 часов. В небольших дозах гораздо лучше усваивается. Есть время на эксперименты. Есть время на ошибки. Есть время на усвоение материала, а не на тупо зазубривание материала.
у меня была тыща или полторы - и до дефолта и после. ещё и задерживали. 3 тыщи - это в казани было
да. и задерживали))
Я бы "языки программирования" поменял бы на "среды, где запускается программа и стандартные библиотеки". Когда я был школьником от состояния "пишу маленькие тулзы для себя и решаю задачки на олимпиадках на делфи/вижуал бейсике" к "то же самое, только на си с плюсиками" за ночь зубрения синтаксиса/операторов/стл перешёл (и выдохнул , ибо синтаксис паскаля мне совсем не нравится, а с вб расстался просто чтоб освободить место на харде). Я это к тому, что надо "уметь программировать", а не "уметь программировать на каком-то конкретном языке"
Картинка для привлечения внимания - огонь)
Я вас поздравляю, такие как вы-герои, ведь самое сложное-это победить себя. Больше-то нам никто не мешает в жизни))
Я считаю, что главное в этом деле - искренний интерес. Причем интерес именно к программированию, а не к статусу и не к "войти-вайти". Если он есть, то выбор любой методики изучения не будет фатально ошибочным. Откровенно плохую вы смените на ходу, не лучшая просто сделает этот путь чуть длиннее, чем он мог бы быть. К тому же "лучшие" у всех разные. Но если интерес отсутствует или быстро заглох, то не надо мучаться.
И еще на мой взгляд важный момент. На начальном этапе обучения надо исключить среды разработки. То есть для Java это редактор с подсветкой синтаксиса и запуск в терминале javac Abc.java && java Abc (начиная с Java 11, можно сразу java Abc.java, но только если программа в одном файле). Как только придет уверенное понимание как Java-программы собираются и выполняются, можно переходить к IDE. И еще, весь код на начальной стадии нужно набирать своими руками. Никакой копипасты!
Что за фигня про "без IDE"? Как программа собирается и выполняется достаточно понять один раз и забить на это. А вручную собирать мало-мальски приличный проект, вручную прописывать зависимости, а потом искать опечатки, когда строки валится - это мазохизм. Меня так один ментор посадил JLS читать, когда я решил в программисты вернуться и за джаву взялся.
И параллельно ещё лишать себя опыта работы с системами сборки. Ну и плюс хоткеи в иде очень сильно помогают и делают работу более продуктивной. Изучение среды - это тоже важный процесс обучения. Один раз поюзал javac и хватит.
Что значит лишать себя опыта работы с системами сборки? Думаете тот же помник или градл.ктс нельзя поправить в ВИМ или нотпад++, а потом запустить таску в консоли? Другое дело, что без подсветки, мета разметки, контроля синтаксиса и подтягивания версий от той же идейки, редактировать их будет очень печально и задолбает очень быстро.
Свои проекты надо делать параллельно. Тогда быстрее дело пойдет и интереснее будет!
Свои проекты надо делать перпендикулярно. Поверь.
Возможно даже по диагонали.
Я бы предложил проект Мёбиуса..
Комментарий удален модератором
После окончания обучения в свитбуке сразу завел себе пет-проект на который потратил около 500ч чистого времени и отточил все самые основные технологии в стеке, после чего с лёгкостью ушел на фриланс. Изучать программирование в коннекте конкретных задач кмк намного эффективнее, чем все подряд без разбору зубрить.
Вы часы таймтрекером считали?
Да, вот этим
Все очень индивидуально и у каждого человека свой рецепт успеха
Все просто. Надо читать толковые книги и программировать. Если что-то непонятно, читать еще раз. Писать код надо с полным пониманием для чего так делается. Java совсем не сложный ЯП. И C++ просто...