JavaRush /Java блог /Архив info.javarush /Java Middle за 2.5 месяца.
novago219
34 уровень

Java Middle за 2.5 месяца.

Статья из группы Архив info.javarush
Приветствую всех читателей, подумавших, что за 2.5 месяца с нуля действительно можно стать Middle. Поспешу Вас огорчить - это возможно только при очень усердной работе над собой, а я знаю, как всем хочется всего и сразу причем - прямо сейчас и никак иначе. Да и фраза с нуля ко мне применима только в некоем условном статусе, ведь Java, как язык программирования, у меня действительно был абсолютно нулевой. Но кое-что я все-таки уже знал и умел еще до знакомства с JavaRush и пожалуй мне бы хотелось начать свой рассказ именно с этого, потому что мой карьерный рост - довольно странное сочетание знаний, умений и удачи в некотором роде. Итак, позвольте мне привести список, который создал для меня конкурентное преимущество перед другими, а также позволил пройти JavaRush (до 34 уровня) довольно быстро и без особых сложностей (по крайней мере они меня не удивляли). Список состоит из знаний, которым меня наделил университет, а также тем, что мне самому было интересно. Не буду разделять, где что лежит и называть университет тоже не буду. При желании стоит освоить все эти знания самостоятельно, если в Вашем университете их не дают.
  1. Алгоритмы и структуры данных: мой путь в этом направлении начался с изучения принципов построения алгоритмов, чтения классических книг (Кнут) и изучения языка программирования Pascal, а продолжился он языком C, реализацией всех структур данных и разбором преимуществ и недостатков каждого из них. Не буду говорить, что ко всему прочему я умею работать с Машиной Тьюринга и Алгоритмами Маркова, точнее я уже это сказал, но Вы можете пропустить это мимо ушей, хотя, на мой взгляд, понятие о бесконечной ленте памяти и движении указателя по нему, дает наиболее правильное представление о том, как же все-таки работает компьютер изнутри, но это только мое скромное мнение.
  2. Архитектура компьютера и Assembler: когда Вы решите, что полностью разобрались с принципом работы компьютера, попробуйте пописать программы на очень низком уровне (иначе как Вы оцените все прелести Java?), причем лично я рассматривал все учебные варианты с одним, двумя, тремя регистрами и понял, как приходится изворачиваться, когда регистр всего один, а программа работает (удивительно, правда?).
  3. Дискретная математика: естественно, параллельно вышеперечисленному стоит еще и взяться за этот предмет, так как он дает полное представление о логическом мышлении, а теория конечных автоматов расскажет Вам, как устроены внутренности процессора и как они организованы в интегральных схемах. Не будем забывать, что здесь также изучается Теория Графов, которая 100% лишней не будет.
  4. Высшая математика: решил выделить все остальные математические предметы в один пункт, чтобы не слишком забивать Вам голову. Здесь лежат: математический анализ, теория вероятностей и статистика, линейная алгебра - кстати, очень очень важная вещь, если Вы хотите заниматься трехмерной графикой (знаю, у всех мечта - писать игры, правда Вам для этого придется еще и пройти курс дифференциальных уравнений и численных методов, но это так - мелочи), ну и другие области.
  5. Архитектура ОС. Linux: после того, как освоитесь здесь - многопоточность в Java вызовет гораздо меньше вопросов, да и окажется, что сказку про философов Вы уже где-то слышали.
  6. ООП, язык C++: ну вот, почти добрались до вершины пищевой цепи. Не буду разъяснять здесь в подробностях и не буду говорить, почему реализацию ООП именно на C++ смотреть гораздо интереснее.
  7. Дополнительно: еще пара мелочей, которую я уже знал, были: компьютерная графика (OpenGL, Unity 3D) и C# (Core).
Причем тут JavaRush?
Ну вот, вместе со всем этим барахлом знаний, еще в сентябре прошлого года я наткнулся на JavaRush, пролистал пару уровней и забил, так как довольно просто нашел работу после университета (не программиста, но в IT, может кто догадается, что это могло быть?). Но вскоре обнаружил, что мне это стало совсем не интересно, за пару месяцев я почти достиг потолка и понял, что развиваться здесь не имеет смысла, хотя руководство компании предлагало почти занимательные варианты (среди которых был DevOps), которые я отверг. Параллельно я занимался подготовкой школьников к олимпиадам по информатике (забыл упомянуть - мне очень нравилось спортивное программирование), ну и после ухода с основной работы ушел туда с головой. Примерно 4-5 месяцев меня все устраивало, пока и это дело мне не надоело. Вопросы повторялись, все темы были пройдены и вот тут то я и вспомнил про JavaRush. Будучи рационалистом (жадиной), я сперва от корки до корки прошел 10 начальных уровней, затем заглянул подальше (хватило уровня до 15 вроде), понял, что это довольно интересно и в свойственной мне манере - занимался этим просто в любой свободный момент. Есть лишние 5 минут? Отлично, допишу логику метода. Итого: я купил две месячные подписки. За первый месяц прошел от 10 уровня до 28, за второй неполный (примерно 15 дней) - прошел от 28 до 34 уровня. По хронологии - это был апрель-середина мая, то есть потрачено 1.5 месяца (в рублях сами посчитайте). Не буду говорить, как стоит заниматься, а как не стоит - об этом уже очень много сказано.
Трудоустройство
Где-то на 30 уровне я просмотрел вакансии в своем городе и решил не торопиться и не рассылать резюме всем подряд, но точечно выбрать желаемую компанию, подготовиться к ней и только после этого отправлять свои каракули HR-отделу. Каракули я тоже очень старательно вывел и получилось очень даже ничего. Меня довольно быстро пригласили на собеседование и я прошел его очень уверенно (по крайней мере то, что касается Java Core). Не буду расписывать, какие были вопросы. Проблемы начались, когда у меня спросили, как работает Spring, и знаю ли я вообще какие нибудь Enterprise технологии. Собственно, я сказал, что не знаю, а с таким уровнем - Junior гарантирован (выше не прыгнете), но я все же прыгнул и вот тут, наверное, начинается самая интересная часть. В общем, когда мне объяснили условия (2 месяца - испытательный срок, позиция - Junior и вилка зарплат), я понял, что мне они не очень нравятся, но сказал, что согласен, и спросил, могу ли я приступить к работе позже, мотивировав тем, что мне необходимо было закончить дела на текущей работе, прежде чем приходить в новую компанию. Таким образом, я выбил себе почти месяц для подготовки. На собеседовании я был в начале мая, а приступал к работе 23 числа. Естественно, я еще раз изучил требования, узнал, какие используются технологии (Java EE 6) и готовился к работе.
Middle или не Middle?
Ну что же, я начал работу и обнаружил, что они набрали около 5 Junior-ов, среди которых, я конечно выделялся, но не сильно. Первым делом, я познакомился с непосредственным руководителем, подметил, что он курит и начал выходить курить вместе с ним (а так вообще я не курю). Также с нами ходил еще один программист, о нем расскажу чуть позже. В общем, за курением (3-4 раза за рабочий день) я общался с руководителем, более подробно рассказывал о своих успехах, невзначай упоминал свои знания (должны же были они пригодится) и вообще - входил в доверие, как только мог. Шашлык с пивом в конце первой неделе позволил установить более лучшие отношения, который я организовал. В офисе я оставался работать до 11 вечера (рабочий день до 18:30), пока меня не выгонял охранник. Со мной в офисе иногда оставались генеральный директор компании и CTO, с которыми я тоже общался, мы вместе ужинали и вместе выходили из офиса (мне CTO даже предлагал подвезти до дома, но я вежливо отказывался). Таким образом, я во-первых - установил хорошие отношения с непосредственным руководителем, во-вторых - показал высшему руководству, что я доделаю задачу, а только потом пойду домой. Естественно, все это еще не делает меня Middle. Так что же сделало? Напоминаю, что я не знал до собеседования ни одного фреймворка (кроме JUnit). Вот тут, как раз стоит вернуться к программисту, которого я упомянул выше. Это был очень мощный программист с 20-летним опытом, который проработал 5 лет в Москве, около 7 лет в Америке (в качестве главного архитектора проектов) и много где еще, включая правительственные проекты особой важности (все это я узнал, пока курил вместе с ним). Так вот, этому программисту дали очень серьезную задачу и он решил взять меня в помощники. После того, как ему дали эту задачу, оказалось, что ему нужно очень срочно уезжать из страны и работать он не сможет. Он написал каркас приложения и оставил меня за главного, сказав, что будет следить издалека. Именно этот момент помог мне стать Middle и закончить испытательный срок не за 2 месяца, а за один и претендовать на более серьезную зарплату. Потому что следить издалека у этого программиста не получалось и проект полностью остался на мне. За месяц я успешно его завершил, за что и получил свою должность и возможность претендовать на более высокую зарплату.
В чем мораль?
Вы можете сказать, что мне повезло учиться там, где дали все эти знания (но заметьте, я использовал их просто для упоминания перед начальством), что обстоятельства сложились так, что выпал такой проект на мои плечи, да и причем здесь, казалось бы JavaRush? Еще раз напомню, до JavaRush уровень владений Java у меня был 0 - это раз. Во-вторых, когда решаешь задачи с 52 попытки, что-нибудь да запоминается - у меня была набита рука на исключениях, проверках и прочем, что тоже было конкурентным преимуществом перед другими, да и в целом - JavaCore начинаешь понимать очень основательно (что подтверждает сертификат OCA, который я сдал за счет компании и набрал 94%), а без этого дальше двигаться смысла особого не вижу. На следующей неделе меня назначают на новый проект с нуля, который я буду вести сам (включая проектирование базы данных, выбор технологий, а также - набор команды). Также, я буду вести собеседования и рассматривать прогресс Junior-ов для определения: стоит, не стоит. Хочу сказать, что в этих вопросах мне помогли не только фактические знания, но и умение налаживать общение с командой, хорошо показывать себя перед руководством, умение произвести впечатление и доказательство того, что я все доведу до конца. Спасибо за внимание, желаю всем побольше упорства и внимания к деталям.
Комментарии (31)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
realcorwin Уровень 14
11 марта 2017
Притча про суп из топора на новый лад.
AlexandrRS Уровень 41
12 сентября 2016
Вы сделали мой день! :-)
CynepHy6 Уровень 34
5 августа 2016
Стеб или вранье
Smetchik Уровень 15
22 июля 2016
1. Кнут вы весь осилили, все тома изданные у нас или читали в оригинале? Каждый том Кнута это не 200-300 страниц.
2. Очень интересно рассматривать работу ЭВМ с одним регистром(кстати покажите как вы изворачиваетесь с одним регистром на примере операции сложения двух чисел, можете написать пример на псевдоАСМе условного процессора, да стека нет), с академической точки зрения, с практической точки зрения начинающего программиста прикладника, да еще на Java, абсолютно бесполезная вещь.
пп 3,4 и учитывая дальнейшие пункты, за 6 лет обучения вы либо осваиваете на хорошем уровне их, либо имеете очень поверхностное представление.
6. Чем же интереснее смотреть реализацию ООП С++ например по сравнению с Java?
JGosling Уровень 11
19 июля 2016
напомнило сказку про проголодавшегося мужика: купил полбулки съел — не наелся, еще купил съел — не наелся, купил бублик и сразу наелся.
«ЭЭЭх дурень, что ж я сразу бублик не купил»
мне б такого «снуля» чтоб за месяц с 10 по 28 уровень пройти )
Ну а так, мои искренние поздравления, и не забывайте отдыхать чтоб не перегореть
LenaR Уровень 16
19 июля 2016
Спасибо за пост, меня такие истории вдохновляют)) Когда начинала учить Java — думала 2 месяца и готово, ну… не совсем так, понимаю, что надо прочитать книжку не 1 и не 2, просмотреть сотни часов лекций, решить кучу задач и после этого всё равно это будет только самое самое начало, но если это реально нравится и реально прет, то в принципе всё не так страшно) А насчет начальства и удачного стечения обстоятельств — я думаю Вам в любом случае бы что то такое подвернулось (может просто на пару месяце подольше), если есть готовность учиться и достойный уровень знаний для проекта, то этот проект довольно быстро находит нужного человека) Радует такой грамотный, рациональный и четкий подход к поиску работы и тд!
TaInT Уровень 27
19 июля 2016
Оказывается и в IT сфере жопу лизать-дело приоритетное…
А уж начал верить что тут таких не встречу…
Naissur Уровень 40
19 июля 2016
Мораль истории в том, что нужно ходить курить с начальством, ездить с ним же на шашлыки, и работать по 12,5 часов в сутки.
ArtTheft Уровень 9
19 июля 2016
Прям фантастика… После вот таких рассказов, появляются истории про ТЛ в 23 года.
Вы можете сказать, что мне повезло учиться там, где дали все эти знания (но заметьте, я использовал их просто для упоминания перед начальством),
Ну да спортивное программирование и тот список знаний, что выше описал ТС это же фигня полнейшая и простейшая, как сэмки с пацанами пощелкать и выпить пивка…

Ну и подлизывания к начальству, пиво там, шашлык… Ну и конечно правильно некоторые люди написали выше. В одной конторе ты Сеньор, а в другой даже на Джуна не пойдешь…
Kingpin Уровень 31
19 июля 2016
Чет я приуныл, после прочтения… И годы не те, и институт давно позади, и думаешь — о надо ли оно мне, наверстаю ли я так много, когда времени так мало? Впрочем, вопрос риторический.