Добрый день.
Вряд ли моя история похожа на остальные, везде есть свои нюансы. Пишу свой рассказ, поскольку отлично помню, как сильно меня мотивировали истории трудоустройства других людей. Надеюсь и Вам, мой дорогой читатель, поможет.
UPDATE (18.08.2017): По поводу последнего пункта я несколько изменил свое мнение. Правда не на противоположное, а на немного другое. Суть такова: на этапе подготовки к первому месту работы зарываться в книги категорически не нужно. Однако спустя некоторое время, уже после того как я поработал какое-то время, книги стали хорошими помощниками. И я естественным образом, постепенно проглотил почти все книги, которые купил, и даже парочку сверху. Это получилось само собой. К тому же это не потребовало таких уж больших усилий, поскольку опыта работы стало больше, и материал книг уже не показался таким сложным. На данный момент список такой: 1) Брюс Эккель "Философия Java" 2) Джошуа Блох "Effective Java" 3) Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. "Алгоритмы: построение и анализ" 4) Э. Таненбаум, Т. Остин, "Архитектура компьютера" 5) Хренова туча самых разнообразных статей, большинство - зарубежных авторов. Да и вообще, возьмите за привычку каждый день читать хотябы 2-3 статьи перед сном. Сгодится любая IT-тематика, даже не сильно связанная с разработкой. Не будьте круглым конем в вакууме, расширяйте кругозорчик. 6) Ну и конечно кучу всякой документации, в основном той, которая нужна для работы. С уважением Сергей Алещенко
Продолжение
- В образовании я продвинулся довольно далеко, закончил самый большой университет Санкт-Петербурга. Правда совершенно по другой специальности: механика деформируемого твердого тела. На момент начала прохождения JavaRush учился на 3-ем курсе аспирантуры РАН (специальность - численная механика).
- Даже и не помню, почему я решил начать заниматься именно на JavaRush. Я давно хотел всерьез заняться разработкой, но чтение "талмудов" по языкам только отбивало охоту. Надо было найти принципиально другой подход, и я опробовал первые десять уровней курса. Видимо благодаря ним я и решился на незамедлительное приобретение безлимитной подписки с участием в реальном проекте.
- Учеба шла довольно медленно, но я не переставая двигался вперед. Прошел 31 уровень с процентом решенных задач близким к 100. На это у меня ушел ровно один год.
- Настало время стажировки. Тестовое задание я с треском провалил. Нужно было написать небольшое web-приложение, но сделать этого я не успел, поскольку на тот момент даже не знал слов типа "Spring", "Hibernate", "Tomcat" и т.п. Ждать следующего набора на стажировку мне не хотелось, и я самостоятельно написал 5-6 web-приложений аналогичных тестовому заданию. Их довольно много в сети, есть даже пошаговые видео-мануалы.
- Отдельным и очень важным пунктом хотелось бы выделить рассылку резюме и прохождение собеседований. В первую очередь хочу сказать, что если Вы, дорогой читатель, рассылаете меньше, чем 10-15 резюме в день, то Вы - ленивая задница. Надеюсь с этим разобрались. Также надо быть готовым к тому, что Вам придется каждый раз напоминать о себе телефонным звонком в ту фирму, куда Вы выслали резюме. Что касается собеседований - то с вероятностью, близкой к 100 процентам, вы получите какой-нибудь хардкорный тест, аналогичный тем, которыми изобилует Quizful и прочие ресурсы. Я категорически рекомендую потренироваться на таких тестах. На поиск работы у меня ушло 3 недели. За это время я прошел четыре очных собеседования и два - по скайпу. Отказов были десятки. На последнем, заочном собеседовании, меня и взяли на работу.
- Теперь немного о работе. Я попал в довольно крупную фирму (порядка 100-120 разработчиков). Очень широкий спектр задач и разнообразных проектов (в зависимости от заказчика), начиная от frontend'а и заканчивая суровым и беспощадным backend'ом и datamining'ом. Собственно, меня сразу задействовали в etl-проектах, и я занялся загрузкой и обработкой массивов данных для целого ряда зарубежных заказчиков. Платформа и все инструменты, которые я использую, являются opensource'ными. Почти все из них написаны на Java и Groovy (если кто-то не знаком с Groovy - замечательная штука, рекомендую). Конечно, периодически приходится копаться в исходниках, ибо все это дело очень тяжеловесное, и его нужно регулярно допиливать, оптимизировать и исправлять. Работаю я около месяца. За это время мне так интенсивно "ездили по мозгам", что я проглотил объем информации, на самостоятельное усвоение которой у меня ушло бы года 2-3 по меньшей мере.
- И последнее. Этот пункт сэкономит Вам уйму времени, когда Вы будете готовиться. За время обучения я купил несколько книг: Философия Java (Брюс Эккель), Алгоритмы: построение и анализ (Кормен, Лейзерсон, Ривест, Штайн) и еще несколько по базам данных и архитектуре компьютера. Знаете что? Забейте. Я серьезно, забейте. Я не дочитал ни одной книги до конца. Чтение книг - очень полезное занятие, но не в этом случае. Я постараюсь объяснить свою точку зрения: в данный момент Ваша цель - устроиться работать программистом. Для этого не нужны глубокие знания в программировании, на развитие которых и нацелено прочтение книг. В данный момент Вам нужен вполне определенный набор практических навыков и умений. Выковыривать их из книг - занятие крайне неблагодарное и утомительное. Гораздо лучшими помощниками в этом деле будут JavaRush или, если есть возможность - участие в каком-нибудь opensource-проекте. Что-то полезное Вам вряд ли удастся сделать, но хотя бы послушаете умные разговоры коллег по проекту - может чего-нибудь нахватаетесь. Хотя участие в проектах вовсе не обязательно. А если потребуются глубокие знания в чем-нибудь, то вы спокойно найдете их в книге и сразу же используете для своих задач. При этом нет никакой нужды глотать всю книгу целиком.
UPDATE (18.08.2017): По поводу последнего пункта я несколько изменил свое мнение. Правда не на противоположное, а на немного другое. Суть такова: на этапе подготовки к первому месту работы зарываться в книги категорически не нужно. Однако спустя некоторое время, уже после того как я поработал какое-то время, книги стали хорошими помощниками. И я естественным образом, постепенно проглотил почти все книги, которые купил, и даже парочку сверху. Это получилось само собой. К тому же это не потребовало таких уж больших усилий, поскольку опыта работы стало больше, и материал книг уже не показался таким сложным. На данный момент список такой: 1) Брюс Эккель "Философия Java" 2) Джошуа Блох "Effective Java" 3) Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. "Алгоритмы: построение и анализ" 4) Э. Таненбаум, Т. Остин, "Архитектура компьютера" 5) Хренова туча самых разнообразных статей, большинство - зарубежных авторов. Да и вообще, возьмите за привычку каждый день читать хотябы 2-3 статьи перед сном. Сгодится любая IT-тематика, даже не сильно связанная с разработкой. Не будьте круглым конем в вакууме, расширяйте кругозорчик. 6) Ну и конечно кучу всякой документации, в основном той, которая нужна для работы. С уважением Сергей Алещенко
Продолжение
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Написал продолжение истории в другом топике: Наконец стал разработчиком [volume 2] спустя девять месяцев работы.
Испытатательный период успешно пройден за два месяца (предполагалось, что продлится три). За это время я был задействован в двух проектах: ETL (пилю платформу transmart для Johnson & Johnson), и машинное обучение (пишу приложение распознавания объектов на изображениях и на видео).
P.S. Спасибо JavaRush за знания и умения, а также за уверенность в своих силах.
А вот если претендент плавает в core — это стопроцентный отказ.
Вообщем ездил пару дней назад в одну из крупных компаний в Кракове для устройства на СТАЖИРОВКУ. Пообщался с коллегами, говорят у них в универах Java нету, все учат сами, в интернете и еще как нибудь. Самый трудный этап — входа, потом после стажа даже джуниоров расхватывают очень быстро (для Кракова наверно имелось ввиду).
Далее — желающих попасть на ЭТУ стажировку было около 80 человек. Мест — около 14. И это не самое интересное.
Вопросы: Все вопросы написаны на английском. Из теста запомнились следующие: Что то про бинарный алгоритм(элементы массива в бинарном алгоритме а.Отсортированы, б.Не повторяются… на тот момент вообще не знал что за алгоритм), перевод из других языков (наверно код из Паскаля) какой будет результат после выполнения, not A or not B = а.not (A or B) б.A & B ..., еще куча разных, которых даже не знал, и не встречал, плюс к этому — читаешь материал на русском, а потом даже не узнаешь bubble sort или что нибудь подобное.
Ну и напоследок написать код. Можно гуглить. Мне попались все задачи по JUnit и assertEquals(). Все время хотел начать работу с JUnit, и пришлось этим начать заниматься прямо на тесте)))))
Еще хотелось бы про книги написать. Я тоже думаю что книги — это не то что надо. Я раза 3 начинал читать Экеля. Так ни разу и не дочитал. Получается пересекается с другими источниками, материал изучил, книгу не дочитал ну и т.п. Во время работы не думаю что будет время сидеть и читать книгу, а заказчик будет ждать пока вы изучите этот вопрос и напишете ему свой говнокод ну или несовсемговнокод. Сейчас начал читать Спринг в действии, т.к. не мог разобраться как там и что работает. Бывает материал который схватываешь на лету, а бывает что нифига не понятно (тогда читаешь книгу). Для этого и пишут книги которые можн
Должен сказать, что я много опустил в своем рассказе, полагая что это очевидно. Я довольно долго сидел на Linux и много работал с PostgreSQL и Oracle DB на нем. Как ни странно, навыки работы с терминалом и базами данных через терминал — очень пригодились мне в работе. Все хранилища разумеется работают на Linux, и ни о каком GUI там речи нет. Также работал с git, JPofiler, какими-то библиотеками для web-разработки и еще кучей всяких тулов.
а когда рвешь задницу — то это логичное следствие
Да и запись — 10-15 резюме в день — это только для продвинутых городов (если вам повезло в нем родиться), ну или с переездом. Заспамить HRов не вариант, если в городе всего 30 контор.
К тому же в моей команде несколько человек работают из других городов. Как минимум двое из Самарской области, а один петербуржец, но уже 2 года в офисе не появлялся. Ставишь remote desktop, skype и вперед =)
Что касается моего образования, то я иногда писал код. Но это была не java, а APDL (похож на Fortran 77). Насколько это можно назвать разработкой — сказать не берусь. Исключительно низкоуровневый код.
А на счет «повезло с работой» — это заблуждение. Я три недели с утра до вечера рассылал резюме, постоянно правил его, прочитал кучу форумов на тему «как составить резюме, если нет опыта работы», готовился к собеседованиям и т.д. Никакого везения здесь нет =))
Я устраивался почти что только со знанием java core (при подготовке я делал упор на него). С фреймворками я познакомился самую малость, ни о каком хорошем владении речи не было. Почти на все вопросы на собеседовании, которые касались Spring и Hibernate я не ответил. Однако все написанные мной 5-6 приложений я закоммитил на github и вставил в резюме ссылки на репозитории.
По поводу английского: спросили уровень владения. Я честно ответил, что документацию oracle читаю регулярно и без словаря. А еще участвовал пару раз в международных конференциях по механике, поэтому кое-как болтать умею.