Что нужно Junior’у, чтобы успешно устроиться / Habr
Не так давно я отвечал на Хабровопрос по поводу того, что нужно знать, чтобы устроиться после ВУЗа программистом, после чего мне был задан вопрос в личку, а также Вконтакте, а что же собственно нужно в подробностях.В данной статье я постараюсь рассказать, что должен знать молодой специалист, который ищет работу. Я немного разбираюсь в данном вопросе, т.к. год назад, после 3 курса, задался проблемой трудоустройства и успешно нашел свое место, которое смог совмещать с учебой. И я все еще помню о чем разговаривал на собеседованиях (которых было мало, но они были успешными).
Сразу стоит отметить, что данная статья не подходит тем, чья цель работать исключительно в так называемых Major Players (Google, Yandex, Microsoft и т.п.).
Кому интересно — добро пожаловать под кат (под катом вакансии для Москвы и Казани из комментариев, а также предложение о стажировки для Питера).
Итак, Junior — это программист, который должен уметь и все и ничего одновременно.
Junior должен уметь все
Человек, который пришел устраиваться на должность младшего программиста должен знать язык, на котором собирается писать (знать — не означает уметь абсолютно все, но чувствовать себя уверенно, если попросят что-нибудь написать). Также стоит разбираться в специфике конкретной области интересов (если вы собираетесь кодить под сети — стоит иметь представление о сетях, что там и как).
Junior должен уметь ничего
В то же время если ищут Junior’а — значит готовы учить. Вы можете не уметь писать грамотный код, уметь хорошо его комментировать и прочее, да и честно говоря, вряд ли человек без опыта продакшина будет это уметь.
Вроде ничего нового я не сказал, да и конкретики никакой нет, но ее и не может быть. Нет определенных общих требований для Junior’ов, есть конкретные требования на вакансию, можно поискать на hh.ru, там написано.
Теперь о вещах, которые помогут Вам найти свое место
Если Вы студент — значит похвастаться опытом работы не получится, а Ваши студенческие успехи вряд ли интересуют работодателя, если это конечно не супер-пупер достижения на олимпиадах, конкурсах и пр. Но Вам никто не мешает заниматься собственными проектами, о которых можно поговорить (я на собеседованиях на Junior’a почти все время рассказывал о своем проекте), это дает работодателю шанс понять, что хотя опыта коммерческой разработки нет — есть опыт работы над задачей, опыт формулировки задач, возможно опыт работы в команде, это ценится больше, чем курсовик по предмету «Программирование на C++» на 5 семестре.
Еще одним очень важным вопросом является — Алгоритмы и структуры данных. Так уж сложилось, что при устройстве на вакансию Junior’a многие компании готовы простить Вам незнание этих вещей, ведь ваша задача как Junior’а скорее всего, к сожалению, будет жарить код.
Вывод: пишите что-нибудь для себя, пишите полезные утилиты, пишите с друзьями, участвуйте в сторонних проектах. Такой опыт позволит Вам лучше узнать свой язык программирования, научиться писать лучше и понятней.
В заключение
Я не сказал ничего нового в этой статье, я лишь попытался рассказать, что ничего особенного знать не нужно, нужно просто знать и быть уверенным в себе, уметь решать задачи, уметь ставить задачи. А опыт работы заменять опытом участия в различных проектах.
Успехов Вам в поисках.
P.S. И не повторяйте ошибок, когда пришел человек устраиваться летом на Junior C++ и не смог написать простого цикла, объясняя это «Лето ведь, забыл все».
P.P.S. Тут и тут неплохие, на мой взгляд, подборки литературы. Можно выбрать что-нибудь себе по душе.
UPD: Вот список предложенных в комментах вакансий
Москва: Если умеете linux/svn/php5/mysql/jquery/zend и не имеете большого опыта работы, то пишите kai, чтобы получить шанс устроится на работу в приличную компанию с именем.
Москва: Требования: PHP5 (умение не ООП, увы, приветствуется), MySQL (сложные пересечения, вложенные запросы), JS|jQuery.
Писать trijin
Казань: Достаточно основ PHP, Js и MySQL, остальному научим. Писать пользователю rednaxi или на мыло [email protected]
Казань: Ищем человека: php, mysql, js, разумеется, знать сами основы: css и html.
Писать можно в личку пользователю ainuили в жабер (в личке есть)
Приглашения в опенсорс:
alexeygrigorev приглашает в jtalks.org — пишут на джаве движок для форумов, блогов и т.п. В основном участвуют Junior’ы.
Приглашения на стажировку:
Питер: Для тех, кому интересна стажировка в веб девелопменте (php, postgres, memcached, html5, мобильные приложения, и т.д.), приглашаем присоединиться к команде Дзен-мани (zenmoney.ru)
Стажировка подразумевает обучение на примере реальных задач по проекту. Условия очень простые: пока мы обучаем, и для вас и для нас это бесплатно. Как только вы начинаете делать какие-то вещи самостоятельно — мы начинаем платить стипендию. Если через 3-4 месяца вы набираете нужный уровень, возможно устройство в штат компании с зарплатой. Стипендия 10 тысяч в месяц, зарплата после стажировки будет зависеть от набранного уровня и за год может вырасти до 40-50 тысяч.
Актуально только для Питера и пригорода. Пишите на [email protected]
От пользователя laflaf
Большая подборка книг, видео и статей для Java Junior
Java Junior – лишь начало пути, но уже на этом этапе нужно обладать рядом знаний и умений. Представляем подборку материалов, обязательных для Джуна.
Что должен знать Java Junior программист?
Хороший гайд для тех, кто готовится к собеседованию на должность Джуна. Сверьте свой багаж знаний с требованиями, которые перечислены в видео. Ничего лишнего, только самое необходимое – то, о чем с большой вероятностью спросят.
https://www.youtube.com/watch?v=PeuIq0Sj0wM
Видеоуроки по Java GUI
Миновав гайд для чайников, сразу переходим к делу. Уметь обращаться с GUI не просто желательно, но необходимо. В этих уроках вы познакомитесь со Swing. Вся работа выполняется в наиболее удобной для этого среде NetBeans. Курс затрагивает многое – от единичных компонентов до создания продвинутого калькулятора.
Maven
Реальные лекции по Maven, которые дадут базис знаний, необходимый для уровня Java Junior. Довольно понятное объяснение, разделенное на несколько частей.
WebSockets
Тема, которую довольно сложно взять наскоком. Работа с серверной частью, сокетами, объяснение работы чата на Apache Tomcat, потоки. У начинающего программиста самостоятельное изучение вызовет лишь головную боль. Лектор же доступно объясняет работу каждого ключевого элемента и сам механизм.
Web-сервис на Java
Видеоуроки от бэкенд-разработчика Allods Team. Вы узнаете о дженериках, запуске сервера, Hibernate, паттернах, юнит-тестах – обо всем, что должен знать Джун. Серверная часть и ряд инструментов, которые использует команда Mail.Ru, писались на Java. Курс предназначен для специалистов любого уровня.
https://www.youtube.com/watch?v=HX0q3vW4nVQ&list=PLwwk4BHih5fiKbIAenL1UOdakUUsW9zf7
Java Hibernate
Знание данной библиотеки требуется практически везде, ведь это ORM-решение для языка Java. Автор подробно рассказывает и показывает настройку, мапинг, JPA и разнообразные запросы.
Java. Библиотека профессионала – К. Хорстманн, Г. Корнелл
Это библия джависта. Отличное справочное пособие, к которому обращаются и новички, и уже опытные специалисты. Что-то забыли? Просто откройте «Корнелла и Хорстманна», где необходимая информация как на ладони. Хорошие практические примеры с задачами любого уровня. Если прочтете все – поймете сам язык и его библиотеки. Большое внимание уделено ООП на Java-примерах, в том числе на базе реальных тасков.
Java. Эффективное программирование – Дж. Блох
Все еще актуальная информация из 57 must-have правил, которые помогут программисту в решении большинства задач. Различные приемы описываются всесторонне и абсолютно доступно для начинающего разработчика. Здесь вы найдете разбор языка, библиотек, шаблоны и разношерстные практические советы, без которых не обойтись.
Изучаем Java – К. Сьерра, Б. Бэйтс
Здесь изложена теория ООП в целом и языка Java в частности. В основе лежит способ обучения на практике: это и тесты, и просто интересные примеры. Поэтому закрепление полученных знаний с данной книгой гарантировано. Вы освоите концепции, синтаксис, работу в сети, работу с потоками и другие фундаментальные вещи.
Java 8. Руководство для начинающих – Г. Шилдт
Бестселлер, который будет особенно ценен для Java Junior. Книга позволяет сразу начать программировать. Такие базовые вещи, как ключевые слова и синтаксис, перемежаются с более сложными, вроде многопоточности. Руководство также познакомит читателя со Swing и JavaFX. Автор оперирует профессиональной терминологией с расчетом, что человек это уже знает. Поэтому совсем новичкам книга покажется сложной, но для Джуниора – то, что нужно.
- Подборка интерактивных курсов по C# и Java. Здесь собраны полезные ссылки на бесплатные и официальные ресурсы по этим двум языкам программирования.
- Скрытые возможности в Java. Статья познакомит вас с такими неочевидными фактами, которые помогут понять тонкости ЯП и блеснуть знаниями на собеседовании.
- Кстати, о работе: эта статья по Java приоткроет завесу тайны над собеседованиями и расскажет, что должен знать новичок.
- Там же вы найдете пункт о Spring, универсальном фреймворке, который разобран по косточкам в статье Java Spring для начинающих: наиболее полный видеокурс.
- Полезными будут и 34 крутые видеолекции по Java FX для начинающих.
- А вот тем, кто уже задумывается об улучшении своего кода, предлагаем ознакомиться со статьей Пишем элегантный и чистый Java код в 5 этапов.
- Еще в Java работают с базами данных, поэтому вы должны знать SQL минимум на уровне работы с PRIMARY KEY и FOREIGN KEY.
- Полезные материалы по Java для тех, кто знает английский язык. Здесь рассматриваются библиотеки, приемы, советы по трудоустройству и многое другое.
- Лучшие Java шпаргалки, с которыми не придется перерывать интернет в поисках ответов.
«Что нужно знать, чтобы стать Junior Java Developer?» – Яндекс.Кью
Привет, мой юный падаван.
Вообще все зависит от компании, проекта, технологии. Самый простой способ узнать — это зайти на hh.ru и поискать вакансии. Я не нанимаю сотрудников и могу рассказать лишь примерный путь java разработчика.
Чтобы прийти в холодный мир Java разработки, тебе в первую очередь нужно прочитать одну из популярных и несложных книжек. Советую для начала «Философию Java» Эккеля и Java. Методы программирования авторов И.Н. Блинов, В.С. Романчик. Из них ты должен вынести более менее твердые знания Java Core, основы Java EE, понимание ООП. Кончено еще нужно читать много всяких статей с хабра, найти пару блогов. Тебе придется, к примеру, уметь четко и понятно объяснить структуру HashMap, как туда добавить и удалить элемент и сколько памяти все это займет 🙂 Можно почитать про основные паттерны.
Параллельно с этим нужно придумывать/искать примеры всякие, если ты знаешь кого-то, у кого в универе была java — можно попросить лабы/темы курсачей и поделать их.
Следующий шаг — ищешь более менее большую компанию, куда берут на тренинг и последующую стажировку без опыта работы, но с какими-то минимальными знаниями. В моем случае это был Epam 🙂 На курсах обучают жестко всему java core и ты пишешь несколько веб-проектов: несколько задач на паттерны вроде фабрики, на разбор и обработку текста, парсинг из хml в разных вариациях, выпускной проект было что-то вроде такс-менеджера для разработчика, менеджера и заказчика. Менеджер дает задачи программисту, а заказчик может отсиживать результат и связываться с менеджером и программистом, программист выставлял различный статус задаче и % сделанного.
Если такой компании нет, что редко бывает, — ты внимательно изучаешь вакансии для java junior-ов и пытаешься соответствовать путем изучения литературы, общения с другими девелоперам (кстати в вк даже группа где-то была, где можно найти ментора себе). Можешь искать на гитхабе всякие проекты на java и как-то допиливать, просто разбираться в коде. В теоретическом плане перед собеседованием следует повторить всякие основные алгоритмы, погуглить вопросы к собеседованию (http://info.javarush.ru/translation/2014/02/12/Java-Core-Вопросы-к-собеседованию-ч-1.html) и отточить знания на них.
Путь к Java Junior Developer / Habr
Здравствуйте.
Меня зовут Кислин Григорий. В начале ноября в Санкт-Петербурге закончился первый обучающий семинар «Java. Базовый курс», сейчас переименнованый в «Java. Junior Developer. Интенсив». Хочу поделиться с Вами полученным при его проведении опытом на тему обучения Java а также своим опытом трудоустройства на позицию Java разработчика.
Изучаем Java
Изучить Java — понятие абстрактное. Необходимо уточнение. Изучить все классы Java — нереально, точно так же, как и наиболее востребованные библиотеки для Java. Изучить синтаксис Java — проще. Достаточно прочитать книги по Java, например, классиков:
- Брюсь Эккель «Философия Java»
- Герберт Шилдт «Java. Руководство для начинающих»
- Кея Хорстманна «Java 2»
- Кен Арнолд, Джеймс Гослинг, Дэвид Холмс «Язык программирования Java»
- Джошуа Блох. «Java. Эффективное программирование»
Также есть много онлайн курсов:
Особое внимание необходимо обратить на такие вещи, как внутренние статические и обычные классы, анонимные классы, параметризация, коллекции и многопоточность.
Вторая вещь после синтаксиса языка — наиболее часто используемые API. На начальном этапе это сервлеты, JSP, JDBC, JUnit.
Затем идет вещь, нужная любому программисту (не только Java) — кругозор. Сюда относится SQL, XML (xsd, xslt, XPath), HTML, JavaScript, Unix shell и пр.
Наконец, инструменты разработки. Общие: отладка в браузере (например firebug для FF), системы багтрекинга и контроля версий, СУБД, инструменты CI и Java: Ant / Maven, веб-контейнеры/серверы приложений.
И, как говорится, last but not least — IDE: создание проекта, кодирование, рефакторинг, дебаг, деплой, тестирование. Насколько вы им владеете, настолько быстрее, проще и качественнее будет ваш проект. По IDEA рекомендую познакомится с роликом Эффективная работа с кодом в IntelliJ IDEA.
Практика
Хорошо учится язык в процессе написания приложения среднего объема. Особенно если стараться писать его правильно- т.е. ~70% времени гуглить на тему лучшего решения каждой локальной проблемы и лучшего варианта кода. Для поиска особенно рекомендую ресурс stackoverflow.com, в ответах которого нужно будет отделить зерна от плевел. Особенно хорошо, если это не абстрактное приложение, а что-то нужное. Или, например, тестовое задание на работу. Вам круто повезет, если Вы знаете предметную область, хороший программист и Вас готовы взять на работу без опыта в Java — тогда Вы получаете опыт а вам еще за это платят. Здесь интересная классификация работы, зарплаты и получаемого опыта. Я бы только не стал сводить все к деньгам и карьере. Когда наберетесь опыта и будет возможность выбирать, можно кодировать для себя, для удовольствия. Ну и выгодно продать себя — это тоже часть игры в программирование, мера вашего профессионализма.
Собеседование
Совсем недавно на Хабре опубликовали хорошую статью про собеседование с позиции работадателя. Там тоже люди:) и чем более человеческие отношения у вас сложаться с собеседующим — тем больше шансов на успех. Ну и вообще — останется приятный осадок. Однако есть и такие собеседования, с которых я бы ушел с чувством, что мы мало подходим друг другу и хорошо, что мне не придется работать с таким начальником. Наконец, как только почувствуете достаточную уверенность, ходите на собеседования! (для людей с опытом, я бы еще добавил исследование рынка с позиции архитектуры, решений и технологий, с частотой пару раз в год и на позиции которые действительно интересны). Причем старайтесь из каждого вынести максимум. Если не знаете — не стесняйтесь поинтересоваться правильным ответом.
После собеседования сразу садитесь за гугл до полной ясности и не сидете сложа руки, ожидая результата. Продолжайте заниматься тем же, что и до него: обучаться и ходить на следующие интерью. Относитесь к этому как к процессу. В случае, если ответа не дали в означенный срок, не стесняйтесь позвонить и поинтересоваться результатом. В случае, если у Вас есть email собеседующего (например вам прислали тестовое задание), и вразумительного ответа от HR не дождаться, можно поинтересоваться результатом напрямую. Разумный срок для пингования — раз в неделю. Я где-то полтора месяца, ничего особенного не ожидая, раз в неделю сначала звонил, а потом переписывался с Yota. В результате меня передали в другой отдел, где условия оказались лучше тех, куда я изначально собеседовался.
При этом, все таки, основа любого собеседования на позицию Java-разработчика это ваши знания: общее понимание сути программирования вообще, java в частности и специфические вещи java. Например: «Сколько экземпляров синглетона может быть в одной JVM?» (необходимо произнести ключевую фразу- зависит от ClassLoader). Вот пример вопросов на собеседовании по коллекциям. Причем это далеко не все вопросы. Меня, например, спросили- почему берется не просто хэш ключа, а в нем еще перемешиваются байты? Вопрос скорее на общее понимание работы HashMap и сообразительность, ответ можно посмотреть в реализации HashMap. Конечно, все вышеперечисленное не потребуют от Junior. Но чем больше знаний у Вас будет — тем выше Ваши шансы.
Итоги
Путь в тысячу миль начинается с одного шагаЕсли временем не ограничены, можно пробовать освоить все самостоятельно. Если нет, встает вопрос — как получит за минимальное время максимальное количество знаний? Можно поискать индивидуальное репетиторство (особенно если пробелы в чем-то конкретном) или закончить Java курсы с максимально широким и глубоким вхождением в тему. Я бы выделил следующие критерии отбора:
- Преподает программист. С вопросами и задачами из собеседований и знанием Java не только по книжкам.
- Практика. Лучше всего, когда на протяжении курса разбор теории идет вместе с разрабатываемым приложением.
- Работа в IDE (пишу, потому что видел на YouTube курсы java в notepad).
- Охват. Максимальное количество тем за отведенные часы (кроме собственно Java выделю важные темы: работа с XML, SQL/JDBC, сервлеты/JSP, JUnit). Конечно, не в ущерб пониманию.
Для этого чаcть несложного материала (синтаксис, операции, типы, управляющие конструкции) слушатели изучают самостоятельно (и бесплатно).
Очень важен на курсе (по отзывам слушателей) баланс между практикой, когда на занятии разработка приложения идет вместе со студентами, и когда идет только демонстрация разработки. Если весь код программировать вместе, пройдем где-то половину программы, при этом внимание сосредотачивается не на содержимом, а на том, чтобы успесть записать код. Если идет только демонстрация, слушатели не смогут работать с проектом самостоятельно, несмотря на имеющийся код. И особенно важны домашние задания, когда происходит усвоение пройденного материала.
Если Вы собираетесь (или продолжаете) изучать Java, то надеюсь, что Вам было небезинтересно:).
Спасибо.
PS: Перепост из песочницы, куда я попал за ссылку на курс. Отдельное спасибо пользователю Хабра, возвратившему мне инвайт.
Что должен знать java junior
Как начать зарабатывать программированием на Java? Прочитать 100500 книг, посетить сотни семинаров? А как же опыт? Подобные вопросы всегда мучают новичков. Давайте разберем, как сделать шаг в профессию.
Что хочет работодатель?
Любая фирма, в которую вы отправляете резюме, хочет, чтобы сотрудники приносили ей пользу. Формула банальная, но в ней вся суть рынка: чтобы получить работу, нужно быть полезным фирме.
Вот есть, например, «Контора 1» и «Контора 2». «Контора 1» пишет в вакансии, что готова обучить начинающего программиста и потом взять на работу. «Контора 2» обучать не хочет, мол, приходите и сразу начинайте кодить (но перед этим покажите уже написанные проекты, конечно же). Какую фирму вы как новичок выберете?
Очень соблазнительно выглядит предложение «Конторы 1», но я бы советовал избегать таких вакансий: в этих фирмах набирают большую учебную группу кандидатов (20–30 человек) и выбирают лучшего. Все обучение сводится к самостоятельному поиску материала и решению задач, поскольку в реальности никто не заинтересован в получении вами знаний – фирме это просто не выгодно. В итоге, если вы не справляетесь с такой формой обучения, вы не получаете ни работу, ни знания, только потерянное время, которое могли бы потратить на подготовку в реальной работе. С этой точки зрения вакансия «Конторы 2» выглядит более честной.
Суммирая все сказанное, скорректирую нашу формулу: чтобы получить работу, нужно быть полезным фирме здесь и сейчас.
Хорошие новости
Ни одна компания не пишет проект с нуля, поэтому новичку на руку то, что создание современных программ основано на различных библиотеках и фреймворках. Это тот самый случай, когда готовые решения применять не зазорно, а очень даже необходимо. Кроме того, в начале карьеры нет необходимости глубоко разбираться, как работают популярные библиотеки, нужно только уметь подключать и собирать их вместе.
Если вы сделаете простые приложения с использованием фреймворков и зальете их на GitHub, этого будет достаточно, чтобы доказать свою полезность фирме и найти первую работу.
Необходимый минимум
Предлагаю вам список того, что нужно знать Junior Java Developer.
1. Базовый синтаксис языка Java
Без основ ничего не сделаешь, поэтому в первую очередь нужно освоить операторы условия, циклы, массивы, классы и объекты, исключения. Примеры заданий можно найти здесь.
Книга: «Изучаем Java» Кэти Сьерра.
2. Структуры данных и простые алгоритмы
Основной ценностью в программировании являются данные, причем они хранятся не хаотично, а в структурах. Поэтому нужно очень скрупулезно подойти к этой теме, выучив основные структуры и алгоритмы для работы с данными. Всегда держите в голове, что неправильно выбранная структура может на корню испортить программу.
Знание структур и алгоритмов здорово выручит вас и на собеседованиях, где любят давать задачки на применение того или иного алгоритма для работы со структурами, например, отсортировать связанный список.
Книга: «Алгоритмы. Построение и анализ» Томаса Кормена.
3. SQL (базы данных)
Трудно найти приложение, которое бы не использовало базу данных, поэтому этот инструмент программирования – must-have в арсенале любого разработчика. Поставьте сервер базы данных PostgreSQL и потренируйтесь писать запросы.
Книга: «Head First SQL» Линн Бейли.
4. Servlet, JSP
Основная область применения Java – корпоративный сектор, для которого разрабатывают серверные приложения. Основа серверного приложения – это Servlet + JSP.
Книга: «Head First Servlet and JSP».
5. Hibernate
Первый фреймворк в списке. Позволяет извлекать данные из базы. Используется повсеместно.
Книга: «Hibernate in Action» Гэвина Кинга и Кристиана Бауэра.
6. Spring
Этот фреймворк, как вирус, постоянно совершенствуется и адаптируется к любым бизнес-требованиям.
Работа java junior в Беларуси (19 вакансий)
На нем можно написать все, что делает его универсальным и в то же время гибким средством разработки. Начните со Spring Boot – этот инструмент будет вашим основным орудием труда.
Книга: «Pro Spring» Роба Харропа.
7. Maven
Мы программисты, поэтому все процессы должны быть автоматизированы по максимуму. Инструменты для сборки, тестирования и интеграции будут повседневными соратниками в вашей работе.
8. Git
Программы давно не пишут в одиночку, поэтому используйте этот гибкий инструмент для командной работы.
Сколько времени требуется на подготовку?
Каждый хочет получить результат быстро, но вынужден вас огорчить: тут нельзя торопиться. Если заниматься ежедневно и не бросать дело на полпути, на освоение программы-минимум должно хватить года.
Кажется трудным, но осилит дорогу идущий, так что начинайте смело! Как и на любом новом пути, легче всего его пройти, если вас поведет опытный проводник. Наиболее быстрый способ овладеть знаниями – заниматься с индивидуальным ментором.
Что должен знать Junior Java программист? | Foxminded
Разберем, какими знаниями должен обладать джуниор Джава.
Должно быть четкое понимание ООП (объектно-ориентированного языка программирования), трех принципов ООП, как они работают (кто кого наследует, кто кого переопределяет, какие ограничения на наследования есть и пр.). Эти вопросы будут на любом собеседовании на должность Junior Java.
- Методы объекта Object Java
Вопросы по данной теме также будут на любом собеседовании. Возможно, не напрямую, но если вы не будете знать Object Java, это вызовет у интервьюера удивление, так как это база.
- Java Collections Framework
Вы должны знать основные интерфейсы и их реализацию (когда и какую использовать, какие есть особенности, понимать привязку Collections Framework к методам hashCode и equals), понимать, как и почему это работает и пр.
- Многопоточность
В общих чертах у вас должно быть понимание, что такое многопоточность. Это могут спросить далеко не всегда, но общее понимание должно быть. Что такое мьютекс семафор, для чего методы wait и notify должен понимать любой разработчик.
Знание SQL-запросов обязательно на уровне написания простых запросов на Join на двух таблицах. Если вы пишите их легко, особо не напрягаясь, то, скорее всего, вы пройдете. Понятно, если у вас будут сложности на большом списке ложных запросах, на хевингах и так далее — это не будет критично для джуниора. Но писать джоины с двух таблиц вы должны уметь.
- Стеки технологий
Вас этого могут не спросить, но знать нужно. На Java сейчас есть два альтернативных стека технологий: Java ЕЕ и Spring. Если вы еще не знаете никакой и только выбираете, какой учить — учите спринговый. Он более популярен и востребован. Что вы должны знать про стек? Список фреймворков, понимать для чего каждый из них предназначен, какие ограничения, какие аннотации и как он вяжется с остальными фреймворками. Хотя бы в общих чертах. По-хорошему, вы должны написать хотя бы одну программу на этом стеке, потому как если вы не имеете практики, только теоретические знания, то вас быстро поймают, поверьте.
Учить ли второй стек технологий — это по желанию. Конечно, в этом случае будет гораздо проще найти работу, и для собеседователя вы будете выглядеть более серьезным кандидатом. Но! Тут вопрос затрат времени и оправданности. Если стоит вопрос в обучении новому стеку или опыт реальной работы, то тут без сомнений выбирайте работу, так как опыт гораздо важнее.
- Английский язык
Знание языка должно быть не ниже Intermediate. Если нет языка, то найти работу будет очень и очень трудно. Английский по умолчанию должен быть.
- Хорошее резюме
Это, конечно, не знания, но ничуть не менее важный момент. Чтобы пройти на техническое собеседование, вы должны пройти фильтр, а фильтруют кандидатов по резюме. По поводу резюме я уже говорил, ознакомиться можно тут.
Последнее, что я хотел сказать. Некоторые думают, что Junior Java — это человек с улицы, который что-то немного знает и вообще работает за еду, лишь бы его учили. Нет, так дело не пойдет. Если вас берут на позицию Junior Java Developer, это значит, что вы должны иметь конкретные знания для своего уровня, прийти на работу и сразу влиться в процесс. Да, конечно, вам будут помогать и обучать, но не делать за вас то, что вы должны уметь.
Автор: Сергей Немчинский
Как стать Java разработчиком за 1,5 года / Habr
Меня зовут Сергей, мне 40 лет и сейчас я работаю Java разработчиком в немецкой компании. Мы занимаемся разработкой программного обеспечения для пивоварен оценки финансовых и кредитных рисков. Это моя первая работа в качестве разработчика. До этого я работал в сфере IT-поддержки и системной интеграции. Первого февраля 2019 г. закончился мой шестимесячный испытательный срок, и у меня на руках бессрочный контракт. Я хочу поделиться своим опытом, как можно самостоятельно выучить Java так, чтобы получить работу.
Это мой рабочий стол. Пить пиво в рабочее время у нас разрешено, мы же в Германии.
Моя первая статья: «IT-эмиграция с семьей. И особенности поиска работы в маленьком городе Германии, когда ты уже там»
Моя вторая статья: «Получить работу в Германии станет проще».
Disclaimer
Скажу сразу, что всякие варианты «выучи яву за 10 дней» (21 день, 30 дней и т.д.) – это утопия. Нет никакой красной таблетки, чтобы быстро попасть в матрицу. Но за год-два параллельно с основным местом работы – вполне реально.
Что у меня было в активе, прежде чем я начал изучать Java
Сначала я хотел назвать статью «Как стать Java разработчиком за 1,5 года с нуля», но передумал. Я ведь пришел в программирование не из совершенно другой области, а из IT. Но работал я не в разработке, а в поддержке. Вероятно, дальнобойщику будет не так просто повторить мои шаги, чтобы стать программистом. Хотя, если у моей жены получится в свои 34 переквалифицироваться из чистого гуманитария в разработчика (или тестера), то напишу еще одну статью.
Стоит сказать о том, что я уже умел, когда решил стать разработчиком.
В университете в течение 2-х семестров мы изучали программирование на Си и С++. Ничего особенного или каких-то глубоких знаний. Сдали – забыли. Далее, будучи студентом, я писал какие-то простенькие программы на Delphi для себя. И всё. Это было более 20 лет назад.
Дальше моя карьера выглядела так:
- Системный администратор
- Системный инженер
- Зам. руководителя отдела
- Руководитель
- Инженер тех. поддержки
Непосредственно программированием я вообще не занимался.
Онлайн-курсы.
Я начал со следующих специализаций на coursera.org:
Java Programming and Software Engineering Fundamentals – 4 месяца
Я прошел следующие онлайн-курсы:
После этой специализации я уже более-менее разбирался в языке, но писать самому программы было еще нереально. Последний capstone-проект я не сделал. Мне было сложно. И у меня, честно говоря, пропал энтузиазм. Я сделал перерыв.
Object Oriented Java Programming: Data Structures and Beyond– 5 месяцев
Через месяц я решил всё-таки вернуться к занятиям снова. Я пошел на специализацию из пяти курсов:
Последний capstone-проект я также не осилил. Но предпоследний курс в списке «Mastering the Software Engineering Interview» помог мне неплохо подготовиться к последующим собеседованиям. А еще я смог написать свой первый простенький парсер простого сайта на чистом HTML. Уже было неплохо, но не впечатляло.
How to Code – 3 месяца
Следующим шагом были эти два странных курса на edx.org:
Я написал «странных», потому что там вообще речь не идет о Java. Авторы курса используют специальный язык программирования Beginning Student Language (BSL). Я где-то прочитал, что они мега-полезные. Наверное, эти два курса помогли мне лучше понять некоторые приемы написания программ и стали хорошим подспорьем для написания Unit-тестов в реальной работе. Но, если быть честным, их можно пропустить.
Data Structures and Algorithms – 2 месяца
Потом я снова вернулся на coursera.org и начал новую специализацию, сотоящую из следующих четырёх курсов:
Но осилил только первых два. На остальные даже не стал записываться. Параллельно с этими курсами я начал читать книгу OCA, о которой речь пойдет дальше.
Топтание на месте
В тот момент я понял, что топчусь на месте. Прохождение новых курсов не давало такого ощутимого количества новых знаний, как это давали первые. Т.е. знания вроде прибавляются, но это никак не приближает меня к получению работы. Я не понимал, как с такими знаниями можно вообще найти на работу. Я всё также не мог написать ничего, что было бы сложнее парсера. Ну как так-то?!?!? Я даже пытался написать свой сервис парсинга сайтов с блэк-джеком и путанами, но уже после недели разработки мой проект превратился в кашу из классов. И я уже сам не мог разобраться в том, что я там понаписал. Кроме того, мне всё ещё были непонятны некоторые аспекты функционирования языка. И это после того, как я уже потратил примерно год на все этих курсы!!! Двенадцать онлайн-курсов и целый год времени, Карл, вы только вдумайтесь в это. На самом деле, это был провал. Я был уверен, что за год я смогу стать разработчиком благодаря этим курсам. Я заблуждался. Мне нужен был план Б.
Альтернатива
Я стал искать курсы, которые бы помогли мне получить какие-то практические навыки, востребованные в реальной работе. Но ничего толкового не было, либо стоило приличных денег. Те же курсы от отуса стоят 50000 за шесть месяцев и отзывы на них противоречивые. Я не был готов к таким расходам. Я был готов впахивать самостоятельно и искал, как это можно сделать бесплатно или совсем недорого. В итоге все онлайн-курсы, которые мне попадались, делились на две категории:
- Первая рассчитана на новичков или людей с нулевой подготовкой. С их помощью ты достигаешь уровня «три с минусом». Это я! Это про меня!
- Вторая для «хорошистов» с опытом работы, которые хотят стать «отличниками». Вроде таких: «Как писать микросервисы на Java для высоконагруженных проектов с использованием WildFly Swarm». Что это вообще такое???
А между ними зияющая пустота. Ну где я и где все эти микросервисы??? Получалось, что для «троечников» вообще ничего нет. Или есть, но за хорошие деньги. И как стать «хорошистом» бесплатно, без регистрации и СМС, вообще непонятно.
Сертификация Oracle
Тогда я решил стать сертифицированным разработчиком на Java. Потому как фраза «Я профессиональный программист на Java» звучит очень круто и должна сразить будущего работодателя наповал!!! Во всяком случае, тогда я так наивно думал.
OCA: Oracle Certified Associate Java SE 8 Programmer – 2 месяца
Для этого я купил книгу:
На освоение этой книги у меня ушло примерно 2 месяца. Она реально открыла мне глаза на многие аспекты и заставила понять, как работает язык в деталях. Это было хорошее продвижение вперед. Но не в поиске работы, а в понимании языка Java. На экзамен я шел с уверенностью, что сдам его хорошо, и я его сдал. Я набрал 84% при необходимых 65%. Я был безмерно горд собой.
Стоимость экзамена $245. В России он стоит немного дешевле.
Оцените стоимость официального тренинга от Oracle для подготовки к этому экзамену
OCP: Oracle Certified Professional Java SE 8 Programmer – 4 месяца
Я с энтузиазмом принялся за вторую книгу тех же авторов:
На освоение второй книги я потратил уже 4 месяца. И это оказалось реально сложно. Два раза я делал перерывы по одной неделе, потому как понять лямбда выражения или многопоточность мне было действительно непросто. Также меня убивало обилие классов для ввода и вывода. Все эти NIO и NIO2, которые так похожи и которые нужно было знать. Что там базовый класс, что производный? Это был настоящий кошмар. В итоге я назначил дату экзамена за месяц, потом перенес его на две недели, потом еще на две. Меня поджимали сроки, на горизонте маячило собеседование. И мне нужен был этот сертификат. Я не стал переносить экзамен в третий раз и пошел с тем, что имел. В отличие от первого экзамена, я уже не был уверен в хорошем результате. Я вообще не был уверен, что смогу его сдать. От былой гордости не осталось и следа. Объем информации для понимания и запоминания во второй книге раз в пять больше чем в первой. Но я сдал и этот экзамен. К счастью, тестовые задания в книгах оказались сложнее, чем те, которые были на экзамене. Но это был прорыв… для меня. Прорыв в плане знаний и понимания того, как работает язык и какие инструменты он предлагает.
Стоимость экзамена также $245.
Могу сказать, что эти две книги мне дали больше, чем все те онлайн курсы, что я прошел ранее. Но я не знаю, смог ли бы я вообще сдать эти экзамены, если бы не прошел предварительно курсы. С помощью этих экзаменов я перешел на уровень «три с плюсом». И это было уже что-то. Но я всё также не был способен самостоятельно реализовать какой-нибудь интересный проект. WTF????
Я понял, что я достиг максимума от того, что я мог получить сам, и изучать язык дальше было бессмысленно. Более того, я понимал, что мои знания, которые я с таким трудом получил, без практики очень быстро улетучиваются. Тянуть было нельзя, и я занялся подготовкой к собеседованию и приобретением навыков, которые могут потребоваться при устройстве на работу.
Что нужно, чтобы получить работу?
Нужно пройти собеседование и техническое интервью! Про подготовку к собеседованию писать не буду. Это тема для отдельной статьи. Напишу только про те знания, которые нужны, чтобы пройти техническое интервью.
Подготовка к интервью – 1 месяц
Я купил следующую книгу:
Настоятельно ее рекомендую. Она поможет подготовиться к техническоой части собеседования. На неё я потратил примерно месяц. Многие задания были непонятны, поэтому я нашел еще один экземпляр на русском, и когда мне было совсем непонятно, я смотрел в него.
Дополнительные навыки
К этому моменту я уже активно мониторил рынок вакансий в своём городе и выбрал компанию, в которой хотел бы работать. У них была вакансия Java Developer. В вакансии в числе желаемых навыков стояли знания Oracle SQL, GWT, Eclipse, SVN, Maven, Jenkins. Мне не нужны были глубокие знания всех этих технологий, мне нужно было простое понимание, что это такое и как оно работает. Чтобы на собеседовании можно было сказать, мол да, я знаком, но не глубоко.
Oracle SQL – 1 неделя
SQL я уже неплохо знал, так как по долгу службы приходилось делать много произвольных отчетов для руководства. Но это был T-SQL от Microsoft, а тут требовался SQL от Oracle. Пришлось купить книжку, чтобы вспомнить основные моменты и понять разницу.
Эту книжку я пробежал быстренько за неделю. И понял, что я на 70% готов сдать еще один экзамен. Но мне было уже не до этого.
SVN – 1 неделя
SVN распределённая система управления версиями. GIT или SVN используется в большинстве компаний, которые занимаются разработкой ПО. Курсов по SVN я не нашел, поэтому решил взять короткий курс по GIT: «Version Control with Git», чтобы быть в курсе темы. Я даже подумал, что если спросят про SVN, то скажу, что имел дело с GIT. А потом на месте сориентируюсь. Если вдруг будет что-то непонятно, то всегда можно будет сказать, что в GIT это немного по-другому. И это, кстати, сработало.
GWT – 3 дня
Следующая технология из списка – GWT. Потратив несколько дней на поиски информации, я понял, что с этим Фреймворком от Google мне просто не разобраться. Если упрощенно, то можно писать сложные сайты на Java, а этот Фреймворк преобразовывает твой код в HTML + JavaScript и отображает в браузере без всяких надстроек и дополнений. Слишком всё круто. GWT я решил пропустить.
Eclipse – 3 дня
Eclipse — среда разработки, основной инструмент разработчика, с которым я имею дело каждый день. Каких-то специальных курсов я не брал. Посмотрел несколько видео на youtube, понял основные приемы. Попробовал всё сам руками.
Maven, Jenkins – 15 минут.
На эти две вещи времени просто не осталось. Собеседование было уже утром, поэтому я просто прочитал 2 статьи в википедии и лёг спать.
Время
Мной было потрачено примерно 18 месяцев, 2 недели, 6 дней и 15 минут на получение знаний и навыков, необходимых для получения места разработчика. Этим я занимался по вечерам, тратя 1-3 часа в будние дни. И около 5-6 часов на выходных.
Деньги
Я готов был тратить свое время и не готов был тратить деньги. Но потратить их всё же пришлось.
Курсы:
- Все онлайн курсы я прошел бесплатно Бесплатно. Как это сделать на coursera.org я писал тут.
Книги:
Экзамены:
Дополнительные расходы:
- Проезд в другой город на экзамены, т.к. в моем нет сертификационных центров – 120€.
Итого: 702€
Совсем бесплатно, к сожалению, не получилось. Книги покупал на английском, т.к. экзамен тоже на английском.
Результат
Этих знаний хватило, чтобы пройти собеседование и подписать контракт в достаточной крутой немецкой компании. Я бы даже сказал, что их хватило с запасом.
Их также хватило, чтобы пройти шестимесячный испытательный срок и получить постоянное место в штате разработчиков.
За эти 6 месяцев работы в качестве разработчика я закрыл более 200 заявок на разработку, доработку и исправление ошибок в коде совершенно разных подсистем и модулей. И ни от одной заявки я не отказался «потому что я не смог». Да, мне приходилось и сейчас приходится разбираться в новых вещах, искать информацию, вникать в детали. Что-то я делаю медленно, но мне это интересно и процесс идёт. А ещё за это хорошо платят!!!
Но не надо думать, что я очень умный. Я самый простой парень, который просто решил изменить свою жизнь к лучшему. Я такой же, как и ты. А если смог я, то сможешь, и ты!
На самом деле, чтобы стать разработчиком, у меня ушло не 1,5 года, а два. Но это по моей собственной глупости (читайте об этом в моем телеграм-канале). Непосредственно на яву я потратил 1,5 года. Но необязательно повторять мои ошибки. Думаю, что можно достичь того же результата за более короткий срок. Выкидываем всё лишнее и получаем примерно такой путь:
Часть первая – 5 месяцев
Берем следующие курсы специализации Object Oriented Java Programming: Data Structures and Beyond на курсере:
Параллельно читаем книжку:
По результатам сдаем экзамен.
Часть вторая – 2 месяца
Берем следующие курсы специализации Data Structures and Algorithms:
Параллельно читаем книгу:
Часть третья – 4 месяца
Читаем книжку:
По результатам сдаем экзамен.
Часть четвертая – 1 месяц
Смотрим, что конкретно хочет работодатель от соискателей, и тратим по одной неделе на каждую из 4-х самых нужных технологий, программ или Фреймворков (Git, Eclipse, Maven, Spring и т.д.). Плюс изучаем предметную область, в которой работает работодатель, его продукты, если есть и т.д.
Итого год. За год – вполне реально.
О том, как я изменил свою жизнь в 40 лет и переехал с женой и тремя детьми в Германию я пишу в своем телеграм-канале @LiveAndWorkInGermany. Пишу о том, как это было, что хорошо и что плохо в Германии, о планах на будущее. Коротко и по делу. Присоединяйтесь – будет интересно.