Java Junior за 30 часов. Интенсив

в 20:17, , рубрики: java, образование, обучение, обучение программированию, Программирование, разработка, метки: , , ,

Java Junior за 30 часов. Интенсив

Здравствуйте. Меня зовут Кислин Григорий, в начале ноября в Санкт-Петербурге был первый выпуск разработанного мной обучающего семинара Java. Базовый курс который сейчас планируется переименовать в «Java Junior. Интенсив» для более точного позиционирования. Хочу поделиться с вами полученным опытом на тему обучения 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 leastIDE: создание проекта, кодирование, рефакторинг, дебаг, деплой, тестирование. Насколько вы им владеете, настолько быстрее, проще и качественнее будет ваш проект. По IDEA рекомендую познакомится с роликом Эффективная работа с кодом в IntelliJ IDEA.

Практика

И, конечно же, в процессе осваивания всего этого — практика и еще раз практика. Хорошо учится язык в процессе написания приложения среднего объема, если его писать правильно- т.е. ~70% времени гуглить. Для поиска особенно рекомендую ресурс stackoverflow.com, в ответах которого нужно будет отделить зерна от плевел. Особенно хорошо, если это не абстрактное приложение, а что-то нужное. Или, например, тестовое задание на работу. Вам круто повезет, если Вы знаете предметную область, хороший программист и Вас готовы взять на работу без опыта в Java — тогда Вы получаете опыт а вам еще за это платят. Здесь интересная классификация работы, зарплаты и получаемого опыта. Я бы только не стал сводить все к деньгам и карьере. Когда наберетесь опыта и будет возможность выбирать, можно кодировать для себя, для удовольствия. Ну и выгодно продать себя — это тоже часть игры в программирование, мера вашего профессионализма.

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

Но это — светлое будующее. А до этого необходимо подготовиться к собеседованию на Java Junior. Совсем недавно на Хабре опубликовали хорошую статью про собеседование с позиции работадателя. Там тоже люди:) и чем более человеческие отношения у вас сложаться с собеседующим — тем больше шансов на успех. Ну и вообще — останется приятный осадок. Однако есть и такие собеседования, с которых я бы ушел с чувством, что мы мало подходим друг другу и хорошо, что мне не придется работать с таким начальником. Наконец, как только почувствуете достаточную уверенность, ходите на собеседования! (для людей с опытом, я бы еще добавил исследование рынка с позиции архитектуры, решений и технологий, с частотой пару раз в год и на позиции которые действительно интересны). Причем старайтесь из каждого вынести максимум. Если не знаете — не стесняйтесь поинтересоваться правильным ответом.
После собеседования сразу садитесь за гугл до полной ясности и не сидете сложа руки, ожидая результата. Продолжайте заниматься тем же, что и до него: обучаться и ходить на следующие интерью. Относитесь к этому как к процессу. В случае, если ответа не дали в означенный срок, не стесняйтесь позвонить и поинтересоваться результатом. В случае, если у Вас есть email собеседующего (например вам прислали тестовое задание), и вразумительного ответа от HR не дождаться, можно поинтересоваться результатом напрямую. Разумный срок для пингования — раз в неделю. Я где-то полтора месяца, ничего особенного не ожидая, раз в неделю сначала звонил, а потом переписывался с Yota. В результате меня передали в другой отдел, где условия оказались лучше тех, куда я изначально собеседовался.
При этом, все таки, основа любого собеседования на позицию Java-разработчика это ваши знания: общее понимание сути программирования вообще, java в частности и специфические вещи java. Например: «Сколько экземпляров синглетона может быть в одной JVM?» (необходимо произнести ключевую фразу- зависит от ClassLoader). Вот пример вопросов на собеседовании по коллекциям. Причем это далеко не все вопросы. Меня, например, спросили- почему берется не просто хэш ключа, а в нем еще перемешиваются байты? Вопрос скорее на общее понимание работы HashMap и сообразительность, ответ можно посмотреть в реализации HashMap. Конечно, все вышеперечисленное не потребуют от Junior. Но чем больше знаний у Вас будет — тем выше Ваши шансы.

Итоги

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

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

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

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

PS: В конце ноября в Санкт-Пететбурге планируется запустить очередной (а точнее 2й) курс Java Junior. Интенсив. Если он вам интересен — задавайте вопросы, с удовольствием отвечу.

Автор: gkislin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js