Содержание

Путь к Java Junior Developer / Хабр

Здравствуйте.

Меня зовут Кислин Григорий. В начале ноября в Санкт-Петербурге закончился первый обучающий семинар «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 Junior – лишь начало пути, но уже на этом этапе нужно обладать рядом знаний и умений. Представляем подборку материалов, обязательных для Джуна.

Что должен знать Java Junior программист?

Хороший гайд для тех, кто готовится к собеседованию на должность Джуна. Сверьте свой багаж знаний с требованиями, которые перечислены в видео. Ничего лишнего, только самое необходимое – то, о чем с большой вероятностью спросят.

Видеоуроки по Java GUI

Миновав гайд для чайников, сразу переходим к делу. Уметь обращаться с GUI не просто желательно, но необходимо. В этих уроках вы познакомитесь со Swing. Вся работа выполняется в наиболее удобной для этого среде NetBeans. Курс затрагивает многое – от единичных компонентов до создания продвинутого калькулятора.

Maven

Реальные лекции по Maven, которые дадут базис знаний, необходимый для уровня Java Junior. Довольно понятное объяснение, разделенное на несколько частей.

WebSockets

Тема, которую довольно сложно взять наскоком. Работа с серверной частью, сокетами, объяснение работы чата на Apache Tomcat, потоки. У начинающего программиста самостоятельное изучение вызовет лишь головную боль. Лектор же доступно объясняет работу каждого ключевого элемента и сам механизм.

Java Hibernate

Знание данной библиотеки требуется практически везде, ведь это ORM-решение для языка Java. Автор подробно рассказывает и показывает настройку, мапинг, JPA и разнообразные запросы.

Java. Библиотека профессионала – К. Хорстманн, Г. Корнелл

Это библия джависта. Отличное справочное пособие, к которому обращаются и новички, и уже опытные специалисты. Что-то забыли? Просто откройте «Корнелла и Хорстманна», где необходимая информация как на ладони. Хорошие практические примеры с задачами любого уровня. Если прочтете все – поймете сам язык и его библиотеки. Большое внимание уделено ООП на Java-примерах, в том числе на базе реальных тасков.

Java. Эффективное программирование – Дж. Блох

Все еще актуальная информация из 57 must-have правил, которые помогут программисту в решении большинства задач. Различные приемы описываются всесторонне и абсолютно доступно для начинающего разработчика. Здесь вы найдете разбор языка, библиотек, шаблоны и разношерстные практические советы, без которых не обойтись.

Изучаем Java – К. Сьерра, Б. Бэйтс

Здесь изложена теория ООП в целом и языка Java в частности. В основе лежит способ обучения на практике: это и тесты, и просто интересные примеры. Поэтому закрепление полученных знаний с данной книгой гарантировано. Вы освоите концепции, синтаксис, работу в сети, работу с потоками и другие фундаментальные вещи.

Java 8. Руководство для начинающих – Г. Шилдт

Бестселлер, который будет особенно ценен для Java Junior. Книга позволяет сразу начать программировать. Такие базовые вещи, как ключевые слова и синтаксис, перемежаются с более сложными, вроде многопоточности. Руководство также познакомит читателя со Swing и JavaFX. Автор оперирует профессиональной терминологией с расчетом, что человек это уже знает. Поэтому совсем новичкам книга покажется сложной, но для Джуниора – то, что нужно.

  1. Подборка интерактивных курсов по C# и Java. Здесь собраны полезные ссылки на бесплатные и официальные ресурсы по этим двум языкам программирования.
  2. Скрытые возможности в Java. Статья познакомит вас с такими неочевидными фактами, которые помогут понять тонкости ЯП и блеснуть знаниями на собеседовании.
  3. Кстати, о работе: эта статья по Java приоткроет завесу тайны над собеседованиями и расскажет, что должен знать новичок.
  4. Там же вы найдете пункт о Spring, универсальном фреймворке, который разобран по косточкам в статье Java Spring для начинающих: наиболее полный видеокурс.
  5. Полезными будут и 34 крутые видеолекции по Java FX для начинающих.
  6. А вот тем, кто уже задумывается об улучшении своего кода, предлагаем ознакомиться со статьей Пишем элегантный и чистый Java код в 5 этапов.
  7. Еще в Java работают с базами данных, поэтому вы должны знать SQL минимум на уровне работы с PRIMARY KEY и FOREIGN KEY.
  8. Полезные материалы по Java для тех, кто знает английский язык. Здесь рассматриваются библиотеки, приемы, советы по трудоустройству и многое другое.
  9. Лучшие Java шпаргалки, с которыми не придется перерывать интернет в поисках ответов.

получаем первую работу / Хабр

Здравствуйте! Коротко о себе: программирую с 1989 г., с 2005 года в Java, с 2013 года работаю Java-тренером (до января этого года совмещал с основной работой Java-разработчика). Достаточно много моих выпускников трудоустроились, и я хочу поделится своими соображениями, как получить работу Java-разработчика (и не только Java).

От изучения Java до получения оффера работы — большое расстояние

Требования к кандидатам на вакансию Java разработчика достаточно высоки, см. пример тестового задания на джуниора от одного из аутсорсеров РБ. Конечно есть позиции и с меньшими требованиям, но их не так много и, по статистике на Украине (dou работает через прокси, в России не нашел), соотношение Отклики/Вакансии на такие позиции: от 20 до 50.

Для вакансий с опытом работы (которых значительно больше) получается замкнутый круг: без опыта не получить работы, а без работы не получить опыта. На вопрос «Кто виноват?» ответ очевиден — компании, которые не хотят вкладывать время и деньги в обучение, а хотят получить уже готового специалиста. Остается главный вопрос:

Что делать?

Крупные компании в основном закрывают позиции юниоров своими стажерами. Один из вариантов трудоустройства — пойти на стажировку, но

  • здесь также большой конкурс
  • далеко не все, успешно окнончившие стажировку, получают работу
  • иногда условия обучения достаточно тяжелые и подойдут не всем. Из отзыва про стажировку в EPAMе РБ:

    Там все настолько жутко строго, что я до сих пор в шоке. У них там сильный отбор… все оценивается, дз, тесты, устные опросы, ну и в конце защита своего проекта. Нам назначают таски и ставят дедлайны. Не успел залить таск — все, до свиданья… Чувствую себя как в школе… Вплоть до того что у нас есть список из 200-230 вопросов примерно по всем темам, которые мы должны знать без запинки. Конспекты ведем(!), на каждый вопрос письменный ответ и это проверяется… Епам себе дрессирует программистов) по другому и не скажешь…

Шаги другого варианта хорошо знакомы (отличное видео Якова Фейна «Как стать профессиональным Java разработчиком«):

  • Хорошее резюме
  • Приглашения на собеседования и тренировка в их прохождении
  • Получение оффера

Хорошее (выделяющееся) резюме означает, что его замечает HR и отправляет вам приглашение на собеседование.
В интернете есть большое количество рекомендаций, как этого добиться:
Но, на мой взгляд, главное:

Позиционируйте себя НЕ как юниора.

Для этого необходимо:

  • Хорошее понимание основ: как устроена память, что такое JMM, опыт работы с сервлетами, JUnit, SQL
  • Уровень выше Java Core: основы Maven, Spring (MVC, Security, Test), JPA(Hibernate), REST. Также желательно основы JavaScript и HTML/CSS

Материалов по Java фреймворкам и технологиям в интернете много. Но если вы хотите их освоить, а не прочитать/посмотреть и забыть, необходимо написать на них собственный пэт-проект. Это может быть проект домашней библиотеки или бухгалтерии, или кормления кота или… Хорошо, если в нем будет реальная потребность — тогда при его эксплуатации вы постепенно будете приходить к оптимальным решениям.

Лучше всего делать его на основе небольшого проекта на популярном стеке, например референсной имплементации Spring Pet clinic. С первого раза сделать код красивым и правильным не подсилу даже синьору. Проект должен жить и нести его владельцу радость приобщения к красоте кода через рефакторинг. И, кроме понимания технолигий и развития чувства перкрасного, из работы над собственным проектом Вы получаете навыки нахождения красивых и практических решений для конкретных задач и решения конкретных проблем, из которых состоит ежедневная работа программиста. Для этого нужно:

  • понимание, как работают фреймворки, на чем они основаны, какие паттерны используются
  • кругозор, навыки решения подобных задач
  • работа с инструментами: Git, IDEA, Maven, Tomcat, DB клиент, тестирование REST сервисов
  • умение находить правильные решения в интернете (70-80% это умение выбрать из найденного в Stackoverflow)

Эта задача непростая и, если знаний, опыта, времени недостаточно, рекомендую пройти какой-нибудь тренинг Java Enterprise на этом стеке, обязательно с написанием проекта на основе пройденных технологий на выходе. Мои критерии тренинга:

  • Ведет преподаватель с опытом в Java разработке, лучше как синьор или архитектор
  • Максимальный охват: самые важные и необходимые Java разработчику темы, API, фреймворки, инструменты в одном курсе.
  • В течении тренинга разрабатывается законченный Enterprise проект. Темы идут не по отдельности (в воздухе) на отстраненных примерах, а последовательно, в связке, как дополнения к созданию единого работающего приложения.
  • Последовательное возрастание сложности: от нуля до деплоя готового приложения в облако
  • Практика! Участники на протяжении всего курса должны работать с кодом проекта. Объязательны домашние задания. Если дают только теорию (всего понемногу), то это, на мой взгляд, выброшенные деньги и время. Без практики любое обучение (Java, английский, езда на велосипеде) ничего не стоит.
  • Поддержка группы и преподавателя: возможность задать любой вопрос и получить на него квалифицированный ответ.
  • Доступность и структурированность материалов
  • Ревью Вашего кода.
  • Помощь в составлении резюме и с трудоустройством. Если вам гарантируют по окончанию 100% трудоустройство — не верьте. Хорошо сказано в статье про работу разработчика:

    Работа программиста – не столько профессия, сколько образ жизни. Обучение в университете, самообразование, хобби и, что немаловажно, страсть – ключевые составляющие успеха в этой сфере.

После того, как у Вас будет опыт в собственном Java Enterprise проекте,

Сделайте новое резюме:

Типичное резюме Java юниора начинается так:

Начать карьеру как junior Java developer в современной, перспективной компании, чтобы через 3 года стать специалистом…

Хорошо обучаем…

Оптыт работы: отсутствует

Прошел курсы…

Нужно:

  • убрать слова «начать карьеру», «юниор» и «готов к обучению»
  • вставить в квалификацию все изученные вами технологии
  • в опыте работы написать об участии в проекте с его кратким описанием

Например, ОПЫТ РАБОТЫ:
Участие в разработке Spring/JPA Enterprise приложения c авторизацией и правами доступа на основе ролей на стеке Maven/ Spring MVC/ Security/ REST(Jackson)/ Java 8 Stream API:

  • реализация сохранения в базы Postgres и HSQLDB на основе Spring JBDC, JPA(Hibernate) и Spring-Data-JPA
  • реализация и тестирование REST и AJAX контроллеров
  • реализация клиента на Bootstrap (css/js), datatables, jQuery + plugins.

С таким резюме вы можете не бояться обращаться на вакансии с требованием 1-2 года опыта и, возможно, пройдете на следующий уровень: «Приглашения на собеседования и тренировка в их прохождении», что уже требует отдельной статьи.

Спасибо за внимание и желаю отличной карьеры в IT.

Большая подборка книг, видео и статей для Java Junior

Материалы для Java Junior

Java Junior – лишь начало пути, но уже на этом этапе нужно обладать рядом знаний и умений. Сайт proglib.io опубликовал подборку материалов, обязательных для Джуна.

Видео

Что должен знать Java Junior программист?

Хороший гайд для тех, кто готовится к собеседованию на должность Джуна. Сверьте свой багаж знаний с требованиями, которые перечислены в видео. Ничего лишнего, только самое необходимое – то, о чем с большой вероятностью спросят.

Видеоуроки по Java GUI

Миновав гайд для чайников, сразу переходим к делу. Уметь обращаться с GUI не просто желательно, но необходимо. В этих уроках вы познакомитесь со Swing. Вся работа выполняется в наиболее удобной для этого среде NetBeans. Курс затрагивает многое – от единичных компонентов до создания продвинутого калькулятора.

Maven

Реальные лекции по Maven, которые дадут базис знаний, необходимый для уровня Java Junior. Довольно понятное объяснение, разделенное на несколько частей.

WebSockets

Тема, которую довольно сложно взять наскоком. Работа с серверной частью, сокетами, объяснение работы чата на Apache Tomcat, потоки. У начинающего программиста самостоятельное изучение вызовет лишь головную боль. Лектор же доступно объясняет работу каждого ключевого элемента и сам механизм.

Web-сервис на Java

Видеоуроки от бэкенд-разработчика Allods Team. Вы узнаете о дженериках, запуске сервера, Hibernate, паттернах, юнит-тестах – обо всем, что должен знать Джун. Серверная часть и ряд инструментов, которые использует команда Mail.Ru, писались на Java. Курс предназначен для специалистов любого уровня.

Java Hibernate

Знание данной библиотеки требуется практически везде, ведь это ORM-решение для языка Java. Автор подробно рассказывает и показывает настройку, мапинг, JPA и разнообразные запросы.

Книги

Java. Библиотека профессионала

Авторы: К. Хорстманн, Г. Корнелл

Java. Библиотека профессионала

Это библия джависта. Отличное справочное пособие, к которому обращаются и новички, и уже опытные специалисты. Что-то забыли? Просто откройте «Корнелла и Хорстманна», где необходимая информация как на ладони. Хорошие практические примеры с задачами любого уровня. Если прочтете все – поймете сам язык и его библиотеки. Большое внимание уделено ООП на Java-примерах, в том числе на базе реальных тасков.

Java. Эффективное программирование

Автор: Дж. Блох

Java. Эффективное программирование

Все еще актуальная информация из 57 must-have правил, которые помогут программисту в решении большинства задач. Различные приемы описываются всесторонне и абсолютно доступно для начинающего разработчика. Здесь вы найдете разбор языка, библиотек, шаблоны и разношерстные практические советы, без которых не обойтись.

Изучаем Java

Авторы: К. Сьерра, Б. Бэйтс

Изучаем Java

Здесь изложена теория ООП в целом и языка Java в частности. В основе лежит способ обучения на практике: это и тесты, и просто интересные примеры. Поэтому закрепление полученных знаний с данной книгой гарантировано. Вы освоите концепции, синтаксис, работу в сети, работу с потоками и другие фундаментальные вещи.

Java 8. Руководство для начинающих

Автор: Г. Шилдт

Java 8. Руководство для начинающих

Бестселлер, который будет особенно ценен для Java Junior. Книга позволяет сразу начать программировать. Такие базовые вещи, как ключевые слова и синтаксис, перемежаются с более сложными, вроде многопоточности. Руководство также познакомит читателя со Swing и JavaFX. Автор оперирует профессиональной терминологией с расчетом, что человек это уже знает. Поэтому совсем новичкам книга покажется сложной, но для Джуниора – то, что нужно.

Статьи

  1. Подборка интерактивных курсов по C# и Java. Здесь собраны полезные ссылки на бесплатные и официальные ресурсы по этим двум языкам программирования.
  2. Скрытые возможности в Java. Статья познакомит вас с такими неочевидными фактами, которые помогут понять тонкости ЯП и блеснуть знаниями на собеседовании.
  3. Кстати, о работе: эта статья по Java приоткроет завесу тайны над собеседованиями и расскажет, что должен знать новичок.
  4. Там же вы найдете пункт о Spring, универсальном фреймворке, который разобран по косточкам в статье Java Spring для начинающих: наиболее полный видеокурс.
  5. Полезными будут и 34 крутые видеолекции по Java FX для начинающих.
  6. А вот тем, кто уже задумывается об улучшении своего кода, предлагаем ознакомиться со статьей Пишем элегантный и чистый Java код в 5 этапов.
  7. Еще в Java работают с базами данных, поэтому вы должны знать SQL минимум на уровне работы с PRIMARY KEY и FOREIGN KEY.
  8. Полезные материалы по Java для тех, кто знает английский язык. Здесь рассматриваются библиотеки, приемы, советы по трудоустройству и многое другое.
  9. Лучшие Java шпаргалки, с которыми не придется перерывать интернет в поисках ответов.

Профессия Junior Java Developer

Описание квалификации Junior Java Developer

Junior’ом обычно называют разработчика, который только начинает серьезно работать в определенной области технологий. У такого разработчика есть знания, позволяющие ему работать над реальным проектом, но очень мало (или нет) опыта такой разработки. Поэтому, зачастую в технических аспектах он советуется с более опытным разработчиком. Накопив достаточно знаний и опыта Junior становится mid-level разработчиком.

Если говорить о Junior Java Developer’е, то необходимы такие знания:

  • Программирование (системы исчисления, чем оператор отличается от операции, некоторые алгоритмы)
  • Язык Java (синтаксис, ООП возможности, многопоточность, стандартная библиотека)
  • OOP и OOD (парадигмы, основные паттерны проектирования)
  • Базы данных (JDBC, язык SQL)

Обычно для Java Junior’а не обязательно знание какой-либо конкретной технологии или фреймворка (например веб-сервисов или Spring). Достаточно знать зачем та или иная технология нужна, какие задачи с помощью нее решают, преимущества/недостатки в сравнении с похожими технологиями. Junior детально знакомится с такими технологиями/фреймворками в процессе работы над очередным проектом.

Необходимые тесты

Программирование — Основы

Тест, необходимый для прохождения любому, кто имеет дело с программированием. Здесь собраны довольно элементарные вопросы по булевой алгебре, системам исчисления (особенно двоичной и шестнадцатиричной), простым алгоритмам.

Java — Основы

Тест содержит достаточно большое количество вопросов, но не только по синтаксису языка так и по практическому использованию той или иной возможности. Вопросы теста преимущественно простые, но есть и довольно «хитрые» вопросы, которые проверяют понимание.

ООП — Основы

Знание ООП парадигм на базовом уровне безусловно необходимо для Junior’а. Данный тест ставит себе задачу это проверить. Вопросы в основном теоретического плана и требуют соответствующего уровня подготовки.

ООП в Java

Тест посвящен ООП возможностям Java. Проверяет знание вопросов которые часто задают на собеседованиях Junior’ам: «как реализовать множественное наследование в Java», «в чем отличие абстрактного класса от интерфейса» и т.п. Содержит в основном практические примеры и неплохо дополняет предыдущий тест по теоретическому ООП.

SQL — Основы

На данный момент, базы данных используются в большинстве промышленных приложений. Поэтому эти знания довольно востребованы и Java Junior’у сейчас нужно иметь представление о JDBC и SQL. Тест проверяет базовые знания SQL и наиболее используемые его возможности.

Написание статьи

Тематика статьи предлагается администрации и либо принимается либо отвергается с предложением альтернативной. Тематика должна касаться предметной области. Это требование проверяет умение Junior’а быстро вникнуть в суть проблемы, а также способность излагать мысли последовательно и методично. Как вариант можно предложить на рассмотрение администрации 3-4 темы для статьи, а администрация предложит для написания одну из них. Написанная вами статья не должна быть ранее опубликова на других ресурсах.

Составление вопросов

Необходимость составления вопросов преследует ту же цель что и написание статьи: умение аналитически подходить к изучению нового, отделять главное от второстепенного. Тематики вопросов также согласовываются с администрацией (это нужно так как в некоторых тестах довольно много вопросов и при добавлении еще одного высока вероятность, что похожий вопрос уже есть).

Важно: Вопросы насчет статьи можно задавать в комментариях на странице Вашей квалификации (не перепутайте с публичной страницей описания), на которую можно зайти из ссылки на профиле в блоке Квалификации.

Ждем Ваших комментариев и отзывов.

Что нужно Junior’у, чтобы успешно устроиться / Хабр

Не так давно я отвечал на Хабровопрос по поводу того, что нужно знать, чтобы устроиться после ВУЗа программистом, после чего мне был задан вопрос в личку, а также Вконтакте, а что же собственно нужно в подробностях.
В данной статье я постараюсь рассказать, что должен знать молодой специалист, который ищет работу. Я немного разбираюсь в данном вопросе, т.к. год назад, после 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 тысяч.

По занятости: мы готовы обеспечить задачами на 12 часов в сутки, тут, скорее, вопрос к вам. Нас больше интересует не время проведенное в офисе, а результат. Сможете учиться дома — отлично. Естественно, надо будет приезжать в офис, чтобы обсуждать задачи и проводить разбор решений.

Актуально только для Питера и пригорода. Пишите на [email protected]

От пользователя laflaf

Специальность Java developer, обязанности Java разработчиков

Java Developer – это специалист, основной задачей которого является создание сложных корпоративных систем для обработки данных. К таким системам можно отнести настольные приложения, веб-сервисы, облачные хранилища данных, веб-приложения, а также сложные банковские системы.

Java – объектно-ориентированный строго-типизированный язык программирования с С-подобным синтаксисом, который наиболее близок к C++ и C#. В Java есть как свои преимущества, так и недостатки. Учитывая тот факт, что для запуска Java-приложений используется специальная виртуальная машина, то приложения запускаются медленнее, чем в случае с C++, но эта виртуальная машина позволяет запускать приложения на той операционной системе, где она установлена, что обеспечивает независимость от платформы. Java имеет огромное количество библиотек и фреймворков, которые позволяют разрабатывать собственные приложения быстрее.

Java-программисты востребованы в тех областях, где используют проекты с многопользовательской обработкой данных и высокими требованиями к уровню безопасности. Java-программист обычно разрабатывает архитектуру приложения, бизнес-логику приложения, поддерживает и сопровождает проект и пишет техническую документацию.

Java-разработчик должен обладать уверенными знаниями объектно-ориентированного программирования, уметь писать простой читабельный код с применением шаблонов проектирования, чтобы разработчик с которым он работает в команде мог разобраться в его коде, знать алгоритмы и структуры данных, так как для многопользовательского приложения важна скорость выполнения и приходится искать самый эффективный алгоритм, знать базы данных, так как очень часто приходится выполнять сложные запросы и выборки из нескольких таблиц. Java имеет множество библиотек и фреймворков. Разработчикам нужно знать их не только на уровне использования, но и понимать, как эти библиотеки и фреймворки устроены внутри.

Для легкого старта в изучении языка Java ITVDN рекомендует пройти курсы Java Starter и Java Essential. Java разработчику не обойтись без глубоких знаний баз данных (SQL), а также алгоритмов и шаблонов проектирования. После этого можно переходить к уровню Java Professional.

Требования к Java Developer:

  • Глубокие знания языка программирования Java
  • Уверенные знания ООП и шаблонов проектирования
  • Уверенные знания алгоритмов и структур данных
  • Знания баз данных (MySQL или PostgreSQL)
  • Знания JDBC и базовые знание Hibernate
  • Знания систем тестирования приложений (TDD)
  • Знание веб-сервисов таких как XML и JSON
  • Базовые знание фреймворка Spring
  • Английский язык на уровне чтения технической документации (углубленные знания будут преимуществом)

Java разработчик может занимать такие должности:


Trainee Java Developer

Junior/Middle/Senior Java Developer

Программист Java

Java Team Lead

Java Solution Architect

Lead Java Engineer

Путь к Java Junior Developer / Хабр

Здравствуйте.
Меня зовут Кислин Григорий. В начале ноября в Санкт-Петербурге закончился первый обучающий семинар «Java. Базовый курс », сейчас переименнованый в« Ява. Младший разработчик. Интенсив ». Хочу поделиться с Вами полученным при его проведении опытом на тему обучения Java, а также своим опытом трудоустройства на тему Java разработчика.

Изучаем Ява

Изучить Java — понятие абстрактное. Необходимо уточнение.Изучить все классы Java — нереально, точно так же, как и наиболее востребованные библиотеки для Java. Изучить синтаксис Java — проще. Достаточно прочитать

книги по Java

, например, классиков:

  • Брюсь Эккель «Философия Java»
  • Герберт Шилдт «Ява. Руководство для начинающих »
  • Кея Хорстманна «Ява 2»
  • Кен Арнолд, Джеймс Гослинг, Дэвид Холмс «Язык программирования Java»
  • Джошуа Блох. «Джава. Эффективное программирование »

Также есть много онлайн курсов:

Особое внимание необходимо обратить на такие, как внутренние статические и обычные вещи, анонимные классы, параметры, коллекции и многопоточность.

Вторая вещь после синтаксиса языка — наиболее часто используемая API. На начальном этапе это сервлеты, JSP, JDBC, JUnit.

Затем идет вещь, нужная любому программисту (не только Java) — кругозор. Сюда относится SQL, XML (xsd, xslt, XPath), HTML, JavaScript, оболочка Unix и пр.

Наконец, инструменты разработки. Общие: отладка в браузере (например, firebug для FF), системы багтрекинга и версий, СУБД, инструменты CI и Java: Ant / Maven, веб-контейнеры / серверы приложений.

И, как говорится, последнее, но не менее важное — IDE: создание проекта, кодирование, рефакторинг, дебаг, деплой, тестирование. Насколько вы им владеете, настолько быстрее, проще и качественнее будет ваш проект. По IDEA рекомендую познакомится с роликом Эффективная работа с кодом в IntelliJ IDEA.

Практика

Хорошо учится язык в процессе написания приложения среднего объема. Особенно если стараться писать его правильно- т.е. ~ 70% времени гуглить на тему лучшего решения каждой проблемы и лучшего варианта кода.Для поиска особенно рекомендую ресурс

stackoverflow.com

, в ответах которого нужно будет отделить зерно от плевел. Особенно хорошо, если это не абстрактное приложение, а что-то нужное. Или, например, тестовое задание на работу. Вам круто повезет, если Вы знаете, какую область, хороший программист и Вас готовы взять на работу без опыта в Java — тогда Вы получаете опыт а вам еще за это платят. Здесь

интересная классификация работы, зарплаты и получаемого опыта

. Я бы только не стал сводить все к деньгам и карьере.Когда наберетесь опыта и будет возможность выбирать, можно кодировать для себя, для удовольствия. Ну и выгодно продать себя — это тоже часть игры в программирование, мера вашего профессионализма.

Собеседование

Совсем недавно на Хабре опубликовали

хорошую статью про собеседование

с позиции работадателя. Там тоже люди 🙂 и чем более человеческие отношения у вас сложиться с собеседующим — тем больше шансов на успех. Ну и вообще — останется приятный осадок.

есть и такие собеседования

, с которыми я бы ушел с чувством, что мне мало придется работать с таким начальником.Наконец, как только почувствуете достаточную уверенность,

ходите на собеседования

! (для людей с опытом, я бы еще добавил исследование рынка позиции, решений и технологий, с помощью выберите пару раз в год и на позиции которые действительно интересны). Причем старайтесь из каждого вынести максимум. Если не знаете — не стесняйтесь поинтересоваться правильным ответом.

После собеседования сразу садитесь за гугл до полной ясности и не сидите сложа руки, ожидая результата.Продолжайте заниматься тем же, что и до него: обучаться и ходить на следующие интерью. Относитесь к этому как к процессу. В случае, если не дали ответа вначале срок, не стесняйтесь позвонить и поинтересоваться результатом. В случае, если у Вас есть электронное письмо собеседующего (например, вам прислали тестовое задание), и вразумительного ответа от HR не дождаться, можно поинтересоваться напрямую. Разумный срок для пингования — раз в неделю. Я где-то полтора месяца, ничего особенного не ожидая, сначала звонил, а потом переписывался с Yota.В результате меня передали в другой отдел, где условия оказались лучше тех, куда я изначально собеседовался.

При этом, все таки, основа любого собеседования на Java-разработчика это ваши знания: общее понимание программирования вообще, java в частности и специфические вещи java. Например: «Сколько экземпляров синглетона может быть в одной JVM?» (необходимо произнести ключевую фразу- зависит от ClassLoader). Вот

пример вопросов на собеседовании по коллекциям

.Причем это далеко не все вопросы. Меня, например, спросили- почему берется не просто хэш ключа, а в нем еще перемешиваются байты? Вопрос скорее на общее понимание работы HashMap и сообразительность, ответ можно посмотреть в реализации HashMap. Конечно, все вышеперечисленное не потребуют от Junior. Но чем больше знаний у Вас будет — тем выше Ваши шансы.

Итоги

Путь в тысячу миль начинается с одного шага

Если время не ограничено, можно пробовать освоить все самостоятельно.Если нет, встает вопрос — как получит за минимальное время максимального количества знаний? Можно поискать индивидуальное репетиторство (особенно если пробелы в чем-то конкретном) или закончить курсы Java с максимально широким и глубоким вхождением в тему. Я бы выделил первый выбор:

  • Преподает программист. С вопросами и задачами из собеседований и знанием Java не только по книжкам.
  • Практика. Лучше всего, когда на протяжении курса разбор теории идет вместе с популярным приложением.
  • Работа в IDE (пишу, потому что видел на YouTube курсы java в блокноте).
  • Охват. Максимальное количество тем за отведенные (кроме собственно Java выделю важные темы: работа с XML, SQL / JDBC ,леты / JSP, JUnit). Конечно, не в ущерб пониманию.
    Для этого чаcть несложного материала (синтаксис, операции, типы, управляющие конструкции) слушатели изучают самостоятельно (и бесплатно).

Очень важен в курсе (по слушателям) баланс между практикой, когда на занятии разработка приложения идет вместе со студентами, и когда идет только демонстрация разработки.Если весь код программировать вместе, пройдем где-то половину программы, при этом сосредотачивается не на содержимом, а на том, чтобы успесть записать код. Слушатели не могут работать с проектом самостоятельно, несмотря на имеющийся код. И особенно важны домашние задания, когда происходит усвоение пройденного материала.

Если Вы собираетесь (или продолжаете) изучать Java, то надеюсь, что Вам было небезинтересно :).
Спасибо.

PS: Перепост из песочницы, куда я попал за ссылку на курс.Отдельное спасибо пользователю Хабра, возвратившему мне инвайт.

.

получаем первую работу / Хабр

Здравствуйте! Коротко о себе: программирую с 1989 г., с 2005 года на Java, с 2013 года работаю Java-тренером (до января этого года совмещал с основной работой Java-разработчика). Достаточно много моих выпускников трудоустроились, и я хочу поделится своими соображениями, как получить работу Java-разработчика (и не только Java).

От изучения Java до получения оффера работы — большое расстояние

Требования к кандидатам на вакансию Java разработчика достаточно высоки, см.пример

тестового задания на джуниора от одного из аутсорсеров РБ

. Конечно есть позиции и с меньшими требованиями, но их не так много и,

по статистике на Украине

(dou работает через прокси, в России не нашел), соотношение Отклики / Вакансии на такие позиции: от 20 до 50.

Для вакансий с опытом работы (значительно больше) получается замкнутый круг: без опыта не получить работы, а без работы не получить опыта. На вопрос «Кто виноват?» ответ очевиден — компании, которые не хотят вкладывать время и деньги в обучение, а хотят получить уже готового специалиста.Остается главный вопрос:

Что делать?

Крупные компании в основном

закрывают позиции юниоров своими стажерами

. Один из вариантов трудоустройства — пойти на стажировку, но

  • здесь также большой конкурс
  • : далеко не все, успешно окнончившие стажировку, получают работу
  • иногда условия обучения достаточно тяжелые и подойдут не всем. Из отзыва про стажировку в EPAMе РБ:

    Там все настолько жутко строго, что я до сих пор в шоке.У них там сильный отбор… все оценивается, дз, тесты, устные опросы, ну и в конце защита своего проекта. Нам назначают таски и ставят дедлайны. Не успел залить таск — все, до свиданья… Чувствую себя как в школе… Вплоть до того, что у нас есть список из 200-230 вопросов примерно по всем темам, которые мы должны знать без запинки. Конспекты ведем (!), На каждый вопрос, письменный ответ и это проверяется… Епам себе дрессирует программистов) по другому и не скажешь …

Шаги другого варианта хорошо знакомы (отличное видео Якова Фейна «

Как стать профессиональным Java разработчиком

«):

  • Хорошее резюме
  • Приглашения на собеседования и тренировку в их прохождении
  • Получение оффера

Хорошее (выделяющееся) резюме означает, что его замечает HR и отправляет вам приглашение на собеседование.

В интернете есть большое количество рекомендаций, как этого добиться:

Но, на мой взгляд, главное:

Позиционируйте себя НЕ как юниора.

Для этого необходимо:

  • Хорошее понимание основ: как устроена память, что такое JMM, опыт работы с сервлетами, JUnit, SQL
  • Уровень выше Java Core: основы Maven, Spring (MVC, Security, Test), JPA (Hibernate), REST. Также желательно основы JavaScript и HTML / CSS

Материалов по Java фреймворкам и технологиям в интернете много.Но если вы хотите их освоить, а не прочитать / посмотреть и забыть,

необходимо написать на них собственный пэт-проект

. Это может быть проект домашней библиотеки или бухгалтерии, или кормления кота или… Хорошо, если в нем будет реальная потребность — тогда при его эксплуатации вы будете постепенно приходить к оптимальным решениям.

Лучше всего делать его на основе небольшого проекта на популярном стеке, например референсной имплементации Spring Pet Clinic .С первого раза сделать код красивым и правильным не подсилу даже синьору. Проект должен жить и нести его владельцу радость приобщения к красоте кода через рефакторинг. Кроме понимания технолигий и развития чувства перкрасного, из работы над собственным проектом Вы получаете навыки нахождения красивых и практических решений для конкретных задач и решений конкретных проблем , из которых состоит ежедневная работа программиста. Для этого нужно:

  • понимание, как работают фреймворки, на чем они основаны, какие паттерны используются
  • кругозор, навыки решения подобных задач
  • работа с инструментами: Git, IDEA, Maven, Tomcat, DB клиент, тестирование REST сервисов
  • умение найти правильные решения в интернете (70-80% это умение выбрать из найденного в Stackoverflow)

Эта задача непростая и, если знаний, опыта, времени, рекомендую пройти какой-нибудь тренинг Java Enterprise на этом стеке, обязательно с написанием проекта на основе пройденных технологий на выходе.Мои Уровень тренинга:

  • Ведет преподаватель с опытом в Java разработке, лучше как синьор или архитектор
  • Максимальный охват: самые важные и необходимые Java-разработчики темы, API, фреймворки, инструменты в одном курсе.
  • В процессе тренинга Развитый законченный Enterprise проект. Темы идут не по отдельности (в воздухе) на отстраненных примерах, в соединении, в связке единого работающего приложения.
  • Последовательное возрастание сложности: от нуля до деплоя готового приложения в облаке
  • Практика! Участники на протяжении всего курса должны работать с кодом проекта. Объязательны домашние задания. Если дают только теорию (всего понемногу), то это, на мой взгляд, выброшенные деньги и время. Без практики любое обучение (Java, английский, езда на велосипеде) ничего не стоит.
  • Поддержка группы и преподавателя: возможность задать вопрос и получить на него квалифицированный ответ.
  • Доступность и структурированность материалов
  • Ревью Вашего кода.
  • Помощь в составлении резюме и с трудоустройством. Если вам гарантируют по окончанию 100% трудоустройство — не верьте. Хорошо сказано в статье про работу разработчика:

    Работа программиста — не столько профессия, сколько образ жизни. Обучение в университете, самообразование, хобби и, что немаловажно, страсть — ключевые составляющие успеха в этой сфере.

После того, как у Вас будет опыт в собственном проекте Java Enterprise,

Сделайте новое резюме:

Типичное резюме Java юниора начинается так:

Начать карьеру как младший Java-разработчик в современной, перспективной компании, чтобы через 3 года стать специалистом…
Хорошо обучаем…
Оптыт работы: отсутствует
Прошел курсы…

Нужно:

  • убрать слова «начать карьеру», «юниор» и «готов к обучению»
  • вставьте в установку все изученные вами технологии
  • в опыте работы написать об участии в проекте с его кратким описанием

Например, ОПЫТ РАБОТЫ:

Участие в разработке Spring / JPA Enterprise приложения с авторизацией и правами доступа на основе ролей на стеке Maven / Spring MVC / Security / REST (Jackson) / Java 8 Stream API:

  • реализация сохранения баз Postgres и HSQLDB на основе Spring JBDC, JPA (Hibernate) и Spring-Data-JPA
  • реализация и тестирование контроллеров REST и AJAX
  • реализация клиента на Bootstrap (css / js), datatables, jQuery + плагины.

С таким резюме вы можете не бояться обращаться на вакансии с требованием 1-2 года опыта и, возможно, пройти на следующий уровень: «Приглашения на собеседования и тренировка в их прохождении», что уже требует отдельной статьи.

Спасибо за внимание и желаю отличной карьеры в IT.

.

Путь джависта: юниор

Почти сразу хотелось на манер Как заработать больше посудомойки написать что-то и джавистам, но долго не получалось. Проблем две.

Во-первых , Python более универсален горизонтально. Его для своих узких задач могут использовать не только разработчики, но админы и девопсы, датасатанисты и тестировщики. Выучи свою достаточную часть языка и вперёд, уже этого хватит, чтобы получать повседневную «бытовую» пользуется от знаний.Частичная Java бесполезна. В лучшем случае вы напишете то же самое, что на Python написали бы в разы быстрее, да ещё и стандартный код было бы меньше. Грубо говоря, Java — язык для написания сервисов целиком.

Во-втором , в мире Java нет однозначно рекомендуемых учебников для начинающих. Вроде и книг немало, но чёт как-то… прям вот хорошей (на мой взгляд) нет. А начинающему лучше бы именно одну книгу, да ещё и попроще, да ещё и такую, что не отпугнёт всем этим Java-словием ради какой-нибудь мелочи.

Потому всё сложно.

Решил выкрутиться через дробление. Попробую написать мануалы по уровням: младший, средний, старший. Каждый текст ориентирован на человека, что готов пойти академическим путём через чтение, чтение и снова чтение, перемежая практикой. Не ваш вариант? Проходите мимо. Похоже на ваше? Берите за основу (тем более, стараюсь дать варианты), составляйте свой план. В любом случае, чем без системы болтаться от одной статьи до другой, подбирая отрывочные знания.

Нужду в компьютере и свободном времени не регистрирую. Почитайте эссе по ссылке в первом абзаце, там всё есть. Тайминги тоже не даю, т.к. в каждом даю выбор, а книги достаточно разные, т.ч. попробуйте самостоятельно прикинуть, сколько времени у вас займёт проработка того или иного текста.

Ну и сразу про версию: здесь не будет книг про версию Java ниже 8-й, если книга про Java (скажем, для алгоритмов такого требования нет). Не вижу никакого смысла. И вы в самостоятельной работе обращайте внимание на то, о какой версии автор говорит.Если ниже 8-й, закрывайте страницу / книгу. Есть несколько исключений в литературе, я про них верхну, все они не для уровня младший.

0. Вступление

Хороший младший Java-разработчик состоит из двух обязательных запчастей:

  • Java — язык и часть стандартной библиотеки.
  • Базовые структуры данных и алгоритмы.

Дальше начинается специализация (которая по мере роста из других областей).

Бекендерам (на них нацелен этот мануал) хорошо бы основы вот этого в голове иметь:

  • Spring или Spring Boot.
  • Базы данных — какая-нибудь СУБД (часто соответственно, SQL), особенно если вас будут брать в какой-нибудь банк.
  • Спящий режим.
  • Linux — системы основы типа строки нынче что-то гигиенического минимума для бекендера.

Людям, хочется писать десктопные приложения, полезно:

Друганы маленьких зелёных роботов живут в немножко своём мире и вообще у них грядёт Kotlin вместо Java. Откровенно говоря, мне кажется, что Котлин в следующие лет 5..7 грядёт и в других областях, но знание чистой Java всё равно ещё долго будет актуальным.

Отсюда и структура обучения первого года, отсюда и последовательность изучения ниже.

1. Первая книга для слабых духом

Люди разные, не у всех есть возможность вдумчиво читать какую-нибудь толстую книгу. В мире Java есть не очень толстые книги, пусть и все они по моей оценке тянут на 3+ по шкале 5.

1.a . Если вы совсем не про программирование, то [Barry Burd. Начало программирования на Java для чайников . Для чайников, 2017] — именно 5-я редакция. Неплохая книга, правда, есть в ней один спорный момент — автор использует Eclipse в качестве редактора / IDE. Сам я топлю за IntelliJ IDEA, тем более, у них есть Community (бесплатная) версия, но ни фига не уверен в том, что начинающий читать книгу для одного IDE, используя в другом. Потому… ну, ок, пусть Eclipse, хоть и та ещё козяква.

1.b . Другой вариант жаждущим лёгких знаний: [Майк МакГрат. Java в простых шагах . In Easy Steps Limited, 2017] — 6-я редакция. Не очень, чем эта книга людям нравится (может, тем, что в ней почти в три раза меньше от обычной книги для джавистов), но она действительно нравится и помогает. Объяснений в ней толком нет, обучение через повторяющую обезьянки, но зато сразу пишется код.

1.c . Уже менее начинающая [Герберт Шильдт. Java: Руководство для начинающих . McGraw-Hill, 2018] — 8-я редакция.Шилдт давно и упорно выпускает неплохие учебники, 7-я редакция есть на русском языке ([Шилдт Герберт. Java. Руководство для начинающих . Диалектика, 2018]), её тоже можно брать. Классический привычный путь для сотен тысяч джавистов, дядька уже 30+ лет на учебниках специализируется.

1.oca . Тем, кому сход-то со старта прям нужна сертификация Oracle, стоит указать сюда, я описал свой опыт: 1Z0-808 (Java SE 8 Programmer I)

Подчеркну: удачных книг в этом списке нет.Таких, чтобы и кратко, и понятно, и не зевалось, и чтобы сразу в бой. К сожалению, в Java от старта до первых разумных программ большой промежуток тем, о которых интересно не расскажешь. Этот промежуток надо преодолеть, дальше будет легче.

2. Первая книга для сильных духом

Если вам показались слишком школьными книги из первого списка, попробуйте книги уровня вуза.

2.a . Первой хочу представить [Уолтер Савич, Кенрик Мок. Абсолютная Java .Пирсон, 2015] — 6-я редакция. Собственно, полноценный курс. Хоть и 1296 страниц, но настолько книга доступна и настолько наглядно (хорошо оформлена), что читается легко.

2.b . Тем, кому очень хочется грызть гранит и прикоснуться к олдовости: [Кей С. Хорстманн. Core Java Volume I. Основы . Prentice Hall, 2018] — 11-я редакция (но можно и 10-ю). Тоже известный дядька из поколения Шилдта, издаёт «Core Java» уже 20 лет, я сам по его ранним изданиям учился, но есть один нюанс: это смесь мануала с учебником и документацией, а не ласковый к дошколятам текст.Зато тысяча страниц качественной информации.

3. Алгоритмы и структуры данных

Прочитали первую книгу, выполнив все упражнения? Ура. Берите следующую. Если книги из пунктов # 1 и # 2 советую читать от корки до корки, книги ниже советую прочитать до момента, в который вы поймёте, что дальше уже не можете. Хорошо, если в процессе вы поймёте, почему та или иная структура данных в Java сделана вот так, а не иначе (и не будете на собеседованиях нести про содержимое JCF уж грустные сказки).

3.a . Классика: [Роберт Седжвик, Кевин Уэйн. Алгоритмы . Addison-Wesley, 2011] — 4-я редакция. Мой фаворит. Что текст нравится, что оформление. Заодно и основы языка.

3.b . Новенький в классе: [Аллен Б. Дауни. Think Data Structures: алгоритмы и поиск информации в Java . О’Рейли, 2017]. Больше похоже на конспект (150+ страниц), но лучше так, чем никак.

Других альтернатив для начинающих джавистов не знаю (нет, вот [Michael T.Гудрич и др. Структуры данных и алгоритмы в Java . Wiley, 2014] не надо). Вы можете, конечно, читать другие алгоритмические мануалы, их хватает хороших, только вот рекомендуемые полезны ещё и тем, что вам снова в голову слоями будет укладываться Java-код.

4. Базы данных (SQL)

Эту книгу вам надо читать для того, чтобы проще было разбираться со этапами.

4 . Берём [Томас Нильд. Начало работы с SQL .O’Reilly, 2016] и прорабатываем её всю от обложки до обложки. На нее у вас должно войти 2..3 недели, не больше.

Здесь можно было бы поспорить о том, а не стоит ли начинающим учить не SQL (не СУБД), а не лучше ли какую MongoDB поучить… Нет, не лучше. Пролистайте пару сотен вакансий джуниор джавистов на рынке, оцените соотношение SQL и NoSQL в пожеланиях работодателей. Потому не выпендриваемся, учим то, что сказано.

5. Пружина [Загрузочный]

Там, где у питонистов Django, у джавистов Spring Framework.Задумывался как глоток воздуха после душных EJB, но со временем сам выродился в нечто монструозное. Появилось нечто вроде облегченного и упрощённого на старте варианта: Spring Boot.

Ну и… как-то не понять. В практике используется как Spring, так и Spring Boot. Первый суровее и богаче (ну и просто много где), на другом проще поднять какую-нибудь фитюльку и не париться, что тоже не редкость. Осторожно формулирую так: учите сейчас Spring Boot, чтобы:

  • в процессе учёбы быстро поднимать фитюльки;
  • получить опыт, который может пригодиться;
  • познакомиться с концепциями, знание которых упростит вход в большой Spring.

Но тут есть нюанс: хороших книг про Spring Boot нет. Даже удовлетворительных. Потому ничего книжного не дам. Не книжного полезного будет вот это:

Когда будете самостоятельно гуглить, гуглите Spring Boot 2.

На этом этапе можно уже поиграть в свой проект. Можно было бы и до алгоритмов, но нарушится стройная последовательность от академиков к практикам. Постарайтесь придумать что-то своё, область чего вам интересна. Кому каталог крышечек от пивных бутылок, кому пятнашки, кому выкачивание и анализ Википедии.В общем, что-то, на чём вы начнёте уже более живо осваивать всякую занятную мелочь от структуры проекта до выкатки на сервер.

6. Спящий режим

Наконец, Hibernate — мамонт древних времён. Встретите вы его не везде, но через него как-то более классически войдите в мир ORM. Наконец, вот прямо сейчас на HeadHunter, например, 235 вакансий с упоминанием Hibernate, т.ч. лишним не будет хоть по верхам полистать.

Ну и да, учите строго версию 5.Икс. Младше не надо.

6.a . Можно попробовать [Джозеф Б. Оттингер, Джефф Линвуд. Дэйв Минтер. Переход в режим гибернации . Апресс, 2016] — 4-я редакция.

6.b . Ну или [Кристиан Бауэр, Гэвин Кинг, Гэри Грегори. Сохраняемость Java с Hibernate . Manning, 2016] — 2-я редакция.

Обе книги на тройбан. Попробуйте поступить вот так: из обеих книг прочтите вступительные главы, в которых говорится о том, что такое ORM, зачем всё это, всё такое.Дальше полистайте в каждой страниц 40..50. Вот что вам лучше зайдёт, тем и пользуйтесь. Если обе книги не заходят, ну, сходите в официальные гайды, попробуйте с ними подружиться.

7. Факультативное

Темы выше — лишь начало пути. Хороший специалист не только занимается узко внутри своей специальности, но и пополняет эрудицию по смежным областям. Потому попробуйте в свободное время (откуда оно у вас?) Почитать книги из следующего списка…

7,1 .Эрудиция: серия In Seven Weeks попсовая, но даст вам понять, что мир сложнее и многомернее. Попробуйте [Люк Перкинс, Эрик Редмонд, Джим Уилсон. Семь баз данных . Pragmatic, 2018] и [Пол Бутчер. Семь моделей параллелизма . Прагматик, 2014].

7,2 . Linux: [Кристин Бреснахан, Ричард Блюм. Linux Essentials . Sybex, 2015] — чуть устарела, но общий язык для самых маленьких. Пробить порог входа, а дальше уже крутиться, как получится.Без Linux вы будете страдать, потому надо, надо.

7,3 . Классика: [Шарль Петцольд. Код . Microsoft Press, 2000] — очень доступная книга о битах, байтах, кодах и т.п. Я б её школоте в информатику добавил. Если вштырит, читайте [Генри С. Уоррен. Восторг хакера . Аддисон-Уэсли, 2012] — брулянт, а не книга.

Эдак за год упорной работы из вас получится хороший младший. До похода по собеседованиям советую полистать [Ноэль Маркхэм. Разоблачены собеседования по программированию на Java .Wrox, 2014] — технически устарела, но в целом актуальна для того, чтобы булки не расслаблялись, спросить могут обо всём. А могут и не спросить, об этом главка # 9 .

8. Советы

Полнота обучения гармонией теории, практики и и и сточников (уиии, три и подряд влепил). Иначе говоря:

  • не упарывайтесь лишь по чтению, пишите много кода;
  • не упарывайтесь лишь по коду, много читайте;
  • не упарывайтесь лишь по книгам, читайте и статьи;
  • не упарывайтесь лишь по худ.литу, читайте и исходник;
  • не упарывайтесь лишь по чтению и коду, смотрите и доклады конференций.

Ну вы поняли.

Кстати, о конференциях. На YouTube полистайте JUG.ru — много полезного, особенно начинающим.

Не ленитесь сверяться с документацией, особенно хорошо, если доберётесь до спецификаций (не, не доберётесь, вы же джуниор). Если при этом будете ещё и в исходный код стандартной библиотеки заглядывать, вы джуниор уровня боженьки, есть вероятность вызвать инсульт восторга у собеседующего.

Собственно, вы это и так сделаете, если при выполнении предыдущие шаги, но для раздолбаев всё же подчеркну: освойте GitHub, Maven, JUnit.

9. Всё ли надо?

А я не знаю. Каждое собеседование — заход к конкретным людям на электрические задачи. Если вы сортировку пузырьком от банана не отличите, в одном месте вас всё равно возьмут (им пофиг, предыдущий раб, поддерживавший легаси на Java 1.6, убежал в дурку), в другом вежливо посоветуют таки выпустили из детского сада с хотя бы синим дипломом, в третьем улыбнутся, молча скостят потенциальный оклад и возьмут доучивать.И так с любым байтом знаний.

Люблю формулировать так: каждый дополнительный байт знаний и перелом умений повышает ваши шансы принятым в большее количество мест, чем без этих вот дополнений. Да, вас взяли в ПупкинВаре, но могут взять и в СидоровЛабс, если вы потратите на недельку больше, чтобы доучить что-нибудь. А там и условия чуть лучше, и перспективы.

Но тут каждый за себя. Решать вам, вам же и расхлёбывать.

.