Разработчик java: Java — Википедия – Как стать программистом Java / Habr

Содержание

Курс Java-разработчик. Обучение на Java-разработчика онлайн

  • Вводный модуль

    • Какие бывают программы
    • Где и для чего применяется Java
    • Как выглядит программный код
    • Установка среды разработки
    • Исправляем готовое приложение
    • Пишем консольное приложение
    • Домашняя работа
  • Синтаксис языка

    • Приветственное видео
    • Что вообще бывает в коде
    • Переменные в Java
    • Boolean, операторы сравнения и условные операторы
    • Циклы
    • Разбираем сложный код
    • Домашняя работа
  • Система контроля версий Git

    • Версии программного кода
    • Установка Git
    • Индекс и частичные коммиты
    • Сравнение версий
    • Отмена изменений и откат версий
    • Репозитории и коллективная работа
    • Ветки — создание и управление
    • Слияние и разрешение конфликтов
    • Полезные инструменты
    • Правила работы с Git
  • Объекты и классы

    • Понятие класса и объекта
    • Метод, параметры, return
    • Статические методы и переменные
    • Константы и Enum
    • Создание объектов и конструктор
    • Инкапсуляция, геттеры и сеттеры
    • Копирование объектов
    • Внешние библиотеки классов
    • Создание JAR-файлов
  • Числа, строки, даты

    • Объекты и примитивы
    • Зачем нужны объекты и примитивы
    • Значения по умолчанию
    • Boxing и unboxing
    • Повторяем изученное
    • Домашняя работа
    • Какие бывают числа
    • Биты и байты
    • Числа int и double
    • Точность чисел с плавающей точкой
    • Преобразование чисел разных типов
    • Преобразование строки в число и обратно
    • Какие бывают операции с числами
    • Инкремент и декремент
    • Класс Math
    • Символы и кодировки
    • Специальные символы
    • Методы класса String
    • Конкатенация строк
    • Сравнение строк
    • Регулярные выражения
    • Календарь и метка времени
  • Массивы и коллекции

    • Создание массивов
    • Перебор элементов массивов
    • Обход массивов в обратном порядке
    • Массивы массивов
    • Домашняя работа
    • Списки элементов
    • Наборы уникальных элементов
    • HashMap и TreeMap
    • Поиск и сортировка
  • Наследование и полиморфизм

    • Наследование классов Java
    • Домашняя работа
    • Доступ к методам и переменным
    • Абстрактные классы
    • Интерфейсы
    • Полиморфизм
    • Интерфейс Comparable
    • Интерфейс Comparator
    • Краткая реализация интерфейсов
    • Интерфейсы Map и Set
  • Особенности ООП в Java

    • Лямбда-выражения
    • Домашняя работа
    • Указатели на методы
    • Метод forEach
    • Способы получения Stream
    • Sorted, max, min
    • Map reduce
    • Static- и default-методы в интерфейсах
    • Generics
    • Система сборки Maven
    • Репозиторий Maven
    • Аннотации и Lombok
  • Исключения, отладка, тестирование и логгирование

    • Возникновение исключений
    • Отлов исключений
    • Типы исключений
    • Домашняя работа
    • Отладка приложений
    • Виды тестирования ПО
    • Модульное тестирование
    • Логгирование в консоли
    • Логгирование с помощью log4j2
  • Работа с файлами и сетью

    • Класс File
    • Чтение файлов с помощью FileInputStream
    • Чтение файлов с помощью BufferedReader
    • Чтение файлов с помощью класса Files
    • Домашняя работа
    • Запись в файл
    • Табличные файлы
    • Структура XML и HTML-файлов
    • Парсинг HTML-файлов
    • Формат JSON и парсинг JSON файлов
    • Конфигурационные файлы
  • Работа с MySQL в Java

    • Установка MySQL
    • Подключение через JDBC
    • Запросы без ResultSet
    • Домашняя работа
    • Hibernate — подключение и настройка
    • Hibernate: изменение данных в базе
    • Связи ManyToOne и OneToMany
    • Связь ManyToMany
    • Hibernate query builder
    • Ленивая загрузка данных
    • Where и OrderBy
    • HQL
  • Многопоточность

    • Зачем нужна многопоточность
    • Класс Thread
    • Интерфейс Runnable
    • Домашняя работа
    • Состояние гонки и критические секции
    • Атомарные переменные
    • Ключевое слово Volatile
    • Synchronized-методы
    • Synchronized-блоки
    • Взаимодействие потоков — методы Wait и Notify
    • Потокобезопасные классы
    • Взаимная блокировка — Deadlock
    • Интерфейс Callable
    • Executors, Executor и ExecutorService
    • Метод Shutdown
    • ThreadPoolExecutor
    • SheduledExecutorService
    • Приостановка и прерывание потоков
    • ForkJoinPool и RecursiveTask
  • Разработка веб-приложений

    • Создание Maven-проекта
    • Создаём приложение на Spring Boot
    • Создание первого контроллера
    • Домашняя работа
    • Концепция MVC
    • RESTful API и CRUD
    • Создание контроллера
    • Request, response и статусы ответов
    • Подключение к БД и создание сущности
    • Репозиторий и добавление элементов в БД
    • Получение данных из БД
    • Изменение и удаление данных в БД
    • View и подключение шаблонов
    • Параметры конфигурации
    • Упаковка приложения в JAR-файл
  • Нереляционные базы данных и очереди

    • Введение
    • Основы Redis, простейшие команды
    • Домашняя работа
    • Сложные структуры данных в Redis
    • Сравнение Redis vs MySQL
    • Базовые возможности MongoDB
    • Агрегация данных в MongoDB
    • Итоги
  • Производительность и оптимизация

    • Факторы производительности
    • Преждевременная оптимизация
    • Что нужно оптимизировать
    • Длительность конкатенации строк
    • Буферизация
    • Два принципа оптимизации по времени
    • Домашняя работа
    • Какую память нужно экономить
    • Память можно не экономить
    • Память и разные структуры данных
    • Чем меньше запросов, тем лучше
    • Multiinsert
    • Утечка памяти
    • Индексация и оптимизация запросов
    • Кэширование запросов
    • Хранение данных
    • Заключение
  • Распределённые хранилища и вычисления

    • Что такое большие данные
    • Файловая система HDFS
    • Практическая работа с HDFS
    • Домашняя работа
    • Концепция MapReduce
    • Фреймворк Apache Spark
    • Установка Spark
    • Запуск в Spark собственного приложения
    • Запуск приложения обработки текста
    • Модуль YARN
  • Заключительный модуль

    • Заключительный модуль
    • Desktop-приложения — создание интерфейса
    • Desktop-приложения — события и их обработка
    • Desktop-приложения — кастомизация интерфейса
    • Домашняя работа
    • Android-приложения
    • Язык программирования Scala
    • Язык программирования Kotlin
    • Реактированое программирование и RxJava
  • Бонус-модуль. Паттерны проектирования

    • Что такое паттерны проектирования
    • Паттерн Singleton
    • Паттерн Factory
    • Паттерн Abstract Factory
    • Паттерн Decorator
    • Паттерн Adapter
    • Паттерн Bridge
    • Паттерн Strategy
    • Паттерн Observer
    • Паттерн Iterator
    • Другие паттерны
  • Алгоритмы и структуры данных

    • Общие сведения
    • Вычислительная сложность и расход памяти
    • Массивы, сортировка и поиск
    • Рекурсия
    • Стэк и очередь
    • Деревья
    • Графы
    • Хэш-таблицы
    • Строки
    • Битовые маски
    • Связные списки
  • Прокотол HTTP

    • Что такое HTTP. Заголовки и тело запроса
    • Заголовки и тело ответа. Коды ответов
    • Запросы GET и POST
    • PUT, DELETE, OPTIONS
    • Стандарт REST
    • Типы кодирования POST-запросов
    • Encoding, сжатие, Content-Type
    • Куки и сессии
    • HTTP 1.0, 1.0 и 2.0
    • HTTPS
  • Дорожная карта web-разработчика Java в 2019 году

    Java – это огромная экосистема, в которой легко потеряться. Это подробный гайд по фреймворкам с подборкой книг и лайфхаков.

    Почему Java?

    Java – технология с долгой историей. Вокруг нее постоянно растут стеки инструментов. Потом они становятся монструозными, и на смену им приходят новые. Против Java ведется политическая война со стороны других корпораций. Этот язык программирования никогда не будет модным. Он не выглядит сексуально с его бойлерплейт-кодом и слухами о плохой производительности.

    При этом экосистема Java является стандартом де-факто для корпоративной разработки. Платформа уверенно занимает нишу в мобильных технологиях и Web. Реализованы шикарные инструменты для big data, такие как Hadoop и Spark. Все это взято у конкурентов без боя: бизнес требует от инструментов разработки прозрачности и надежности. Поэтому Java с её безопасностью кода, хорошим подходом к многопоточности и низкому порогу вхождения для свежих разработчиков, дает бизнесу то, что ему нужно.

    Для новичков Java привлекательна простым и понятным синтаксисом, плавной кривой обучения. Назойливые проблемы со всякими низкоуровневыми штуками вроде менеджмента памяти и кроссплатформенности JVM берет на себя. Поэтому учиться легко, а после всегда можно найти хорошее рабочее место.

    Быстрый старт

    Для начала нужно установить JDK и любую IDE. Из версий сейчас самая популярная 8-я. Из IDE можно начать с IntelliJ IDEA.

    Есть две классических Java книги, которые рекомендуются сообществом к изучению. Это «Effective Java» Джошуа Блоха и «Философия Java» Брюса Эккеля. Но чтение толстых книг в начале обучения фундаментальным основам языка – не самый эффективный и быстрый путь влиться. Лучше взять за основу что-нибудь проще. Например, «Head First Java», её чтение не утомляет.

    Так почему «Идея»?

    Разработчик IntelliJ IDEA создал отличный плагин EduTools, который встраивается прямо в IDE. Он содержит в себе упражнения, позволяющие быстро изучить основы языка в интерактивном режиме. Этого инструмента, в сочетании с литературой, вполне достаточно для построения базы.

    Если есть хороший технический бэкграунд в другом объектно-ориентированном языке программирования, то можно срезать углы. Потому что существует класс книг, написанных специально для таких «новичков». Например, «Java for C/C++ Developers» от Michael C. Daconta. В таких книгах обычно перечисляются ключевые отличия одной технологии от другой. Это экономит время на обучение, фокусируя только на нужных деталях.

    Обучение через тестирование

    Область, которую предстоит изучить, огромна. Нет границ, которые позволят уверенно сказать «всё, теперь я знаю Java». Ни прочитанные книги, ни написанные программы, ни пройденные курсы, ни освоенные технологии.

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

    Заведите метрики для отслеживания прогресса. Для этого нужно проходить тесты достаточно часто, благо сейчас их много в Интернете. Мы проходим Java тест, смотрим на результат, ищем пробелы в знаниях, выписываем, гуглим, восполняем. Это хорошая стратегия, она эффективнее последовательного изучения книги за книгой. Хороший маркер – это когда вы написали какой-то код, а спустя время поняли, что он плох. Хорошим финалом при этом будет прохождение OSJP – самой авторитетной сертификации от Oracle.

    Что еще?

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

    Для начала стоит представлять типовую архитектуру того, что делает web-разработчик. Всё, что видит перед собой пользователь в браузере – это клиент или frontend-часть приложения. Данные и команды, инициированные действиями пользователя, отправляются на сервер по протоколу HTTP в соответствии с определенными договоренностями об их формате и значении. Эти договоренности формируют web API приложения и реализуются надстройками над HTTP вроде RESTful или, реже, GraphQL. Данные обычно упаковываются в JSON или XML, хотя есть место и кастомным реализациям.

    Серверная часть приложения, backend, принимает данные, десериализует их во внутреннее представление, осуществляет авторизацию и аутентификацию пользователя, валидацию пришедшей информации, реализует какую-то бизнес-логику, сохраняет часть информации в БД и формирует необходимый ответ для клиента. Само приложение для взаимодействия с клиентом может поднимать встроенный web-сервер или само встраиваться в сторонний web-сервер.

    Это значит, что нам необходимо иметь ясное представление о:

    • СУБД и SQL, реляционном и нереляционном хранении данных. Для этого рекомендуется книга «Head First SQL» + ознакомление со статьями по NoSQL для общей эрудиции. Погонять запросики помогут удобные online-сервисы.
    • Протоколе HTTP и передаче данных. Фундаментальная вещь – это «Компьютерные сети» Эндрю Таненбаума и первые общие главы любой книги по PHP от Дмитрия Котерова. Несмотря на другой язык программирования, автор дает очень хорошее общее понимание взаимодействия клиента и сервера.
    • JSON и XML. Достаточно просто статей из Википедии для общего понимания этих форматов.
    • Javascript и HTML. Базовые знания нужны, потому что часто backend генерирует странички, выдаваемые в браузер, например, по технологии JSP. Достаточно посмотреть путь javascript-разработчика и выбрать то, что приглянулось. Хотя можно взять за основу что-то вроде Vaadin, который на выходе сгенерирует Javascript-код и подтянет нужные стили по Java-коду.

    Pet project

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

    Хороший подход – придумать идею web-сервиса и постепенно реализовывать его, шаг за шагом, по мере приобретения новых знаний. Это может быть ToDo List или каталог просмотренных фильмов, дневник или маленький движок форума, игрушечные CMS или CRM. Это нормально, если код придется часто переписывать, порой с нуля: это говорит о прогрессе.

    Очень важно сделать все «велосипедом», с минимумом дополнительных библиотек и уж точно без фреймворков. Самописный web-сервер на основе сокетов, маршаллер XML/JSON, собственные контейнеры. Не обойдется без изучения рефлексии и базовых паттернов (лучшая книга по шаблонам разработки — GoF). Код на выходе получится ужасным, но основное тут – получить набор проблем, которые очень красиво решаются фреймворками.

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

    Java EE и Spring

    Java Enterprise Edition и фреймворк Spring постоянно идут рука об руку в обучении. Важно понимать их различия и сходства. Формально говоря, Java EE (Jakarta EE) – это спецификация, описывающая архитектуру серверной части приложения. Отчасти, Java стала столь популярной технологией благодаря смещению акцента разработки на бизнес-логику. Если вы приходите к заказчику, предприятию, то его не интересуют технические детали. Зато его интересует, каким образом новый продукт улучшит его жизнь и принесет финансовую прибыль.

    Набор спецификаций согласует все части приложения и гарантирует их взаимную работу. Так вводится парадигма предметно-ориентированного проектирования. Все хорошо понятные бизнесу предметные области выделяются и перекладываются в чистый Java-код. Затем пишется интеграция между ними, декларируется сквозной путь данных в процессе обмена. В итоге получается пакет кода, описывающего бизнес-логику ПО. А реализация всех технических деталей ложится на сервер приложений. Этот класс ПО называется middleware, его примерами являются WebSphere, Weblogic, WildFly. Такой контейнер, по сути, одна большая зависимость, которая и «поставляет» функционал в соответствии с написанной логикой.

    Spring же – просто фреймворк. Java EE – это не самая удачная попытка стандартизации, ставшая тяжеловесной, а Spring изначально появился как легкая и понятная альтернатива. Впрочем, и Spring разросся со временем и появился фреймворк над фреймворком – Spring Boot.

    В процессе обучения лучшая стратегия – ознакомиться и с той, и с другой платформой. Для изучения Java EE отлично подходят книги «Head First Servlets and JSP» и «Программирование web-приложений на языке Java» Буди Курняван. Для Spring – «Spring в действии» Крейга Уоллса. Так как Spring включает в себя очень много всего, сфокусироваться для начала следует на модулях Core, MVC и Web-MVC и Security.

    Какой стек выбрать?

    Когда придет понимание, что Spring Beans похожи на EJB, Spring Service Locator – на JNDI, Spring Security – на JAAS, Spring Data – на JPA и т. д., это станет важнейшим майлстоуном в обучении. Вторым будет ознакомление с хорошими реализациями, постижение best practices. В случае Spring можно воспользоваться кодогенератором JHipster – сгенерированный этим инструментом код имеет хорошую структуру и задействует множество популярных технологий. Кстати, в дальнейшем этот сервис можно будет использовать для быстрого прототипирования.

    В дальнейшем можно сфокусироваться на одной из платформ, а за развитием второй просто следить в фоновом режиме, углубляя эрудицию. Порой придется выбирать какую-то технологию, исходя из того, что более подходит к задаче. Например, на Java EE с её JSF и PrimeFaces легче сделать масштабируемое приложение с генерируемым сервером клиентом. А на Spring легко делаются модные микросервисы. Но это все условно – порой эффективнее разрабатывать на хорошо знакомом фреймворке, а не на том, который лучше приспособлен.

    Что дальше?

    Помимо основных фреймворков, в Java куча всего полезного. Например, Jasper для построения отчетов в реальном времени. Или JOOQ для создания запросов к базам данных. Нужно уметь тестировать свой код при помощи JUnit или Mockito. Полезно использовать Sonar для валидации стиля кода. Если предполагается большой объем данных, то почти наверняка придется столкнуться с Hadoop. А Gradle и Maven помогут систематизированно управлять жизненным циклом своего ПО.

    В этом многообразии легко потеряться. Поэтому важнее не изучать эти инструменты, а изучать информацию о них. Где они применяются, в чем ключевые особенности. И использовать их только тогда, когда без них не обойтись. Потому что вряд ли придется писать сложный код на Gradle. А большую часть Maven-инструкций можно просто скопировать со StackOverflow. Нет нужды читать книги толщиной с руку по этим технологиям, тратя лишнее время.

    Помимо Spring и Java EE, есть также Spark и Play, Struts и Grails. Их нужно обязательно попробовать. Хотя бы для того, чтобы понять, что есть жизнь и без Spring с его DI. Развитие эрудиции по всему многообразию инструментов и фокус на одном из инструментов – лучшая стратегия в обучении.

    Как искать Java-разработчика: пособие для начинающих

    Я занимаюсь подбором ИТ-специалистов более 7 лет, за это время я получила обширную экспертизу в этой области. Думаю, данный материал будет интересен как рекрутерам с опытом работы с данными специалистами, так и тем, кто только знакомится с миром ИТ, поэтому информацию постараюсь дать максимально просто.

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

    Java-программист или Java-разработчик (не путать с JavaScript) занимается разработкой программного обеспечения (ПО) обычно в команде программистов. Написанный программный код программист сохраняет в специальном хранилище, которое называется системой контроля версий (Git и тп) . Кроме того, он должен исправлять свои ошибки в написанном коде, уведомление о которых поступает ему от тестировщиков.

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

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

    Особенности:

    1. Айтишники в основном более интровертны и обычно любят говорить по делу. Предпочитают общаться по электронной почте и не любят, когда им звонят. Отчасти потому, что квалицированному специалисту постоянно названивают рекрутеры и отвлекают от работы, отчасти потому что они лучше воспринимают информацию и гораздо эффективнее общаются по переписке.
    2. Программист обычно сосредоточен на конкретной задаче, над которой он работает не отвлекаясь.
    3. Уровень интеллекта у айтишников  в среднем достаточно высок, так как они получили хорошее математическое образование.
    4. Айтишники любят более неформальное общение и неформальный подход к работе.
    5. Они в основном совы и предпочитают работать с 11:00. Также многие достаточно свободолюбивы, не любят дресс-код итд. В таких условиях они обычно достигают лучших результатов.

    1. Какова ситуация спроса и предложения на кадровом рынке по этой вакансии, что важно знать о компании, вакансии и условиях работы, чтобы выполнить задачу корректно и в срок, о чем важно спросить работодателя.

    На рынке ИТ, в том числе и Java-разработчиков, даже в кризис правила игры определяет соискатель. Предложений достаточно для того, чтобы средний кандидат мог найти работу за 1-2 недели, выбирая между несколькими предложениями о работе. В среднем, на одну вакансию в сфере ИТ претендует 3 кандидата (из исследования hh.ru).  Тем не менее, Java не является редкой технологией, эта платформа достаточно популярна у программистов, поэтому найти нужное количество кандидатов для собеседования возможно, но потока по этой вакансии у вас не будет.

    При снятиии потребности у заказчика (работодателя) необходимо сразу получить полное описание вакансии, так как составить её самостоятельно без технических знаний в данной сфере рекрутер не сможет.

    Обычно требования к джависту состоят из следующих блоков:

    –       Требование к образованию – чаще всего необходим кандидат с высшим техническим образованием.

    –       Знание и опыт коммерческой разработки на языке Java (не менее определённого количества лет), то есть студенческие и личные проекты работодателя не интересует.

    –       Часто указывается знание паттернов проектирования, но не всегда. Обычно успешный разработчик их знает и умеет применять.

    –       Знание определённого набора фреймворков (Hibernate, Spring итп.)  и библиотек (например, JQuery). В каждой компании они требуются свои. Важно в этом пункте сразу уточнить у работодателя, что является обязательным, а что будет плюсом.

    –       Знание баз данных, например – MS SQL, Oracle и так далее.

    –       Владение английским языком требуется часто, но не всегда. Обычно, хороший программист постоянно читает много книг по нужным технологиям, в том числе на английском, поэтому так или иначе владеет языком на уровне чтения технической литературы.

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

    Обязательно уточните у работодателя следующее:

    1. Какой график предусмотрен для кандидата, есть ли переработки, имеется ли возможность график сдвигать?
    2. Присутствует ли дресс-код и насколько строгий?
    3. Где будет располагаться рабочее место кандидата, будет ли это опен спейс или в компании кабинетная система, будет ли он находиться среди коллег-айтишников или среди коллег из других подразделений?
    4. В вопросе компенсации важно иметь четкое представление, что есть оклад, что есть премия и бонусы, белая ли зарплата.
    5. Обязательно узнать обо всех аспектах соц. пакета, он обычно у айтишников очень широкий: кроме ДМС это может быть компенсация фитнеса, бесплатная столовая, 100% оплата больничного, и даже игровые приставки в офисе.
    6. На каком проекте или каких проектах будет работать данный сотрудник, сколько человек в команде, и вообще, лучше честно и прямо спросить: «Чем эта вакансия может заинтересовать кандидата, что мы можем рассказать кандидату, чтобы он загорелся». Это очень хороший вопрос, и адекватный нанимающий менеджер охотно расскажет про все преимущества.
    7. Подразумевается ли профессиональный и карьерный рост на данной позиции?
    8. Какие знания и навыки из описания вакансии обязательные (без которых резюме не будут смотреть) и какие желательные. Например, «знание Java – от 2 лет опыта работы и знание Spring.MVC – обязательно”. Уточните у заказчика, может ли кандидат не указать каких-то из этих ключевых слов в резюме.

    2. Как представлять вакансию соискателям (нюансы и правила создания презентации вакансии).

    Здесь нужно исходить их трёх основных мотиваторов айтишника:

    1. Интересные проекты.
    2. Технологии, с которыми он будет работать (например, ему уже надоела та платформа, на которой у него большой опыт, но ему очень хочется работать только с Java).
    3. Повышение своего дохода. Этот пункт может быть заменен на комфортность работы (дорога до офиса, удобство графика, наличие столовой, хорошего места для питания, парковки) или команду (насколько хороший микроклимат в команде и насколько она профессиональная).

    В описании вакансии для публикации на ресурсах и в соц сетях обязательно хорошо распишите условия, избегайте казённых и шаблонных фраз. В заголовке достаточно написать «Программист Java” или “Ведущий Java-разработчик».

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

    Кандидату лучше сначала высылать письмо, и потом звонить: “Я высылала вам письмо с вакансией” работает лучше, чем внезапный звонок.

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

    3. Где размещаться (источники поиска, в том числе специальные и нетривиальные).

    По статистике всё-таки больше кандидатов на Java находится на hh.ru, а лучшие приходят по рекомендации коллег-программистов.

    Источники:

    1. hh.ru (и активный , и пассивный поиск).
    2. LinkedIn (лучше заранее работать над своей сетью контактов в тех сферах, где вы ищете и будете искать людей).
    3. Рекомендации других сотрудников-айтишников.
    4. Профессиональные форумы sql.ru и rsdn.ru, vingrad. Периодически появляются новые, теряют актуальность старые. Поэтому постоянно ищите новые ресурсы.
    5. Другие источники: ITMozg, Brainstorage, Programmersforum,  Javatalks, Github.
    6. Facebook, Twitter, Вконтакте, жж-сообщества по программированию.
    7. Корпоративный сайт компании или агентства.

    4. Стратегия поиска (отклики, активный обзвон, соцсети, объявления и т.д.).

    1. Размещение вакансии на hh.ru, сбор откликов и активный поиск.

    Для эффективного поиска лучше создать автопоиск на основании ключевых слов, которые соответствуют обязательным требованиям заказчика, например если это опыт в Java и фреймворк Hibernate, наш запрос будет выглядеть как

    Java and Hibernate

    Количество лет опыта мы будем определять уже по резюме.

    2. Публикация объявления о вакансии со ссылкой на описание в соцсетях и на LinkedIn. В зависимости от соцсети преамбула может быть более или менее формальной и должна быть привлекательной и интересной. Попросите своих знакомых сделать репост ваших публикаций.

    3. Публикация объявления на профессиональных форумах. Обязательно сначала прочитайте правила форума и раздела «Работа» или «Вакансии». За невыполнение требований вас забанят, а вакансию удалят. Например, на sql.ru публикацию нельзя редактировать, обязательно нужно указать оклад, название компании или агентства и город.

     5. Как проводить первичный отбор по телефону (важные правила переговоров  и критерии отбора).

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

    Также, ваша задача  – максимально дружелюбно и лаконично передать основную информацию, чтобы привлечь кандидата и чтобы он согласился на встречу. Хорошо, если у вас на первом очном интервью сразу будет присутствовать технический специалист, обязательно в таком случае упоминайте, что интервью будет техническое. К HR-интервью и агентствам айтишники относятся с осторожностью и некой опаской, это факт.

    6. Особенности очного общения и оценки кандидатов.

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

    В процесс оценки по желанию заказчика может включаться выполнение тестового задания или предоставление примеров программного кода разработчика.

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

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

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

    Обязательно давайте обратную связь кандидату по телефону или по электронной почте в любом случае.

    6. Подготовка кандидатов к интервью в компании.

    Здесь нет никаких особенностей, кандидата необходимо снабдить всей необходимой информацией о компании и условиях работы, так как технари на эти вопросы не всегда могут ответить кандидату. Очень желательно рекрутеру присутствовать хотя бы на первом интервью с нанимающим менеджером и техническим специалистом, даже несмотря на то, что 90% того, что будет обсуждаться, не-технарю будет непонятно. Это даст вам возможность скорректировать свой поиск и лучше подобрать хорошего кандидата данному заказчику.

    Спасибо за внимание, я надеюсь, что поиск айтишника, если он вам предстоит, будет лёгким и интересным!

    Диана Цуркан, IT HR, ithrdiana.wordpress.com

    Как стать Java разработчиком? (Java Developer)

    Как стать Java разработчиком? (Java Developer)

    Курс программирования java от ITVDN.com и купон на 15% скидку «BCJBD1F»

    Бесплатная регистрация по ссылке https://itvdn.com/ru/specialities/java-developer

    Java обучение

    Одна из лучших школ по программированию ITVDN предлагает  курсы Java обучение

    Java Developer – это программист, приоритетной задачей которого, является создание сложных систем для обработки данных (BigData). Как правило, java разработчики создают БС (сложные банковские системы), web приложения, на java пишут серверную часть (Back end), облачные хранилища данных.

    В наше время, Java программисты (java developer) очень востребованы. Их опыт применяется в тех областях, где требуются проекты с многопользовательской обработкой данных. А также предъявляются очень высокие мерки требований к уровню безопасности. В обязанности Java программиста обычно входит:

    • разработка архитектуры приложения
    • разработка бизнес-логики приложения
    • поддержка и сопровождение проекта
    • написание технической документации

    Java – это объектно ориентированный и строго типизированный язык. Его можно сравнить с C (си) подобным синтаксисом. А C (си) в свою очередь похож на C++ (cpp) и C# (C sharp). В тоже время, в языке Java есть как свои плюсы, так и минусы. Если помним, то Java-приложения для запуска использует специальную виртуальную машину, из за этого факта, приложения запускаются немного медленнее, по сравнению например с тем же C++, но этот минус легко превращается в плюс, когда виртуальная машина позволяет запускать приложения на windows или unix системах. Это дает независимость от платформы. Для Java написано огромное количество фреймворков, библиотек и это дает вам возможность разрабатывать собственные приложения быстрее.

    Как правило, Java разработчик обладает уверенными знаниями в ООП (объектно-ориентированном программировании), он должен уметь писать читабельный код, который будет понятен другим программистам java и применять шаблоны проектирования, хорошо знать структуры данных, алгоритмы, так как это напрямую влияет на скорость работы приложения, ибо скорость выполнения итерации сильно зависит от применения эффективного алгоритма, java developer обязан знать базы данных (DB), что бы выполнять сложные запросы и выборки из нескольких таблиц. Под Java написано множество библиотек и фреймворков (Framework). И для того, что бы быстро разрабатывать приложения, не изобретая велосипед, нужно знать их не только на уровне любителя, но и понимать, как эти библиотеки и фреймворки устроены внутри.

    Курс программирования java от ITVDN.com и купон на 15% скидку «BCJBD1F»

    Для легкого старта в изучении языка Java ITVDN рекомендует пройти курсы Java developer.

    Как проходит обучение java обучение?

    Как стать Java разработчиком? (Java Developer)

     

    План обучения

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

    Как стать Java разработчиком? (Java Developer)

    Смотрите видео уроки

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

    Как стать Java разработчиком? (Java Developer)

    Учебные материалы

    Скачайте исходники программного кода, опорный конспект и презентации к урокам и работайте с ними.

    Как стать Java разработчиком? (Java Developer)

    Выполняйте задания

    Закрепляйте полученные знания, выполняя домашние задания после каждого урока.

    Как стать Java разработчиком? (Java Developer)

    Проверка знаний

    Проходите онлайн тестирование после каждого урока и после всего курса.

    Как стать Java разработчиком? (Java Developer)

    Общение с ментором

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

    Как стать Java разработчиком? (Java Developer)

    Тренажер навыков

    Формируйте навыки написания кода, используя Тренажер.

    Как стать Java разработчиком? (Java Developer)

    Форум

    Общайтесь с другими студентами, тренерами, единомышленниками на форуме ITVDN.

    Как стать Java разработчиком? (Java Developer)

     

    Вебинары

    Участвуйте в бесплатных образовательных вебинарах по программированию, задавайте Ваши вопросы в прямом эфире.

    Как стать Java разработчиком? (Java Developer)

    Сертификат

    Пройдите тестирование и получите сертификат, подтверждающий Ваши знания.

    Как стать Java разработчиком? (Java Developer)

    Диплом по специальности

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

    Как стать Java разработчиком? (Java Developer)

    Бонусы

    Получайте бонусы за использование ресурсов ITVDN и обменивайте их на подарки и скидки.

     

    ВИДЕО КУРСЫ ПО СПЕЦИАЛЬНОСТИ «JAVA DEVELOPER»

     

    Как стать Java разработчиком? (Java Developer)Обязательные курсы             Как стать Java разработчиком? (Java Developer)Дополнительные курсы

    Как стать Java разработчиком? + купон на 15% скидку BCJBD1F

    ЗАПИСИ БЕСПЛАТНЫХ ВЕБИНАРОВ JAVA

     

    Как стать Java разработчиком? (Java Developer)Бесплатные вебинары

    В конце обучения вы получаете сертификат и диплом по java

    Диплом Java DeveloperДиплом Java DeveloperСертификат о прохождении курсаСертификат о прохождении курса

    Требования к 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

    Java — данный язык очень сильно типизированный объектно-ориентированный язык программирования, java был разработан американской IT компанией Sun Microsystems (в будущем ее выкупит компания Oracle). Приложения написанные на Java как правило транслируются в специальный байт-код, из-за этого они могут работать на любой компьютерной архитектуре (windows, unix) с помощью виртуальной Java-машины. Датой официального выпуска считается 23 мая 1995 года. На 2019 год Java считается одним из самых востребованных языков программирования.

     

    Курс программирования java от ITVDN.com и купон на 15% скидку «BCJBD1F»

    Бесплатная регистрация по ссылке https://itvdn.com/ru/specialities/java-developer

     

     

    Java Enterprise vs Android в 2019 — что выбрать новичку? / Habr

    Решил поделиться своими мыслями на тему того, в какую отрасль разработки стоит пойти человеку, освоившему Java core и основы computer science. А дороги как известно две: Java Enterprise или Android-разработка. Под Java Enterprise программированием я понимаю разработку, вакансии которой на hh имеют заголовок «Java-разработчик». Вакансии, связанные с android-разработкой можно найти на том же сайте по запросу, соответственно, «android-разработчик».

    Будем считать, что вы изучили на базовом уровне core языка Java, а также ознакомились с темами алгоритмов, SQL и другими базовыми вещами из computer science, и теперь выбираете путь куда двигаться дальше с прицелом на то, чтобы как можно скорее устроиться на должность junior-программиста. Обсудим какие есть плюсы и минусы в выборе между двумя обозначенными выше ветками разработки.

    1) Стек технологий


    Java-программирование пришло в бизнес уже почти 20 лет назад. Как следствие, в сфере появилось большое разнообразие фреймворков. На каждом проекте используется свой стек технологий, и бывает достаточно сложно понять, какие технологии еще будут жить, какие вот-вот умрут, а какие уже давно не используются. При этом, кроме джавовских вещей от джависта также требуют знать UI технологии: JS с фреймворками, html, css

    Так как android относительно молодая ОС, а в бизнес она вошла еще позже, то тут нет такого зоопарка фреймворков как в большой джаве. Нет тут ни спринга, ни хибернейта, ни других более экзотических вещей. Работу тут можно начинать имея в багаже знаний лишь android sdk и java core. UI, насколько мне известно, предоставляется прямо «из коробки» (android studio), средствами drag and drop. То есть GUI часть дополнительно изучать не нужно

    2) Особенности сферы


    Как это ни печально, в России Java-программирования нет (за небольшим исключением — банки и гос порталы). То что мы пишем тут отправляется заказчикам в Европу и Америку. Следствием того, что заказчиками являются крупные компании является сложность самой бизнес-логики. Минимальный порог вхождения предполагает не только знание основных фреймворков, но также и специфические требования по распределенным системам, big data, глубокому пониманию многопоточности, машинному обучению

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

    3) Есть ли будущее?


    Насчет промышленного программирования на большой джаве — не знаю. Хотя она и держится в первых строчках рейтинга языков программирования, чем это вызвано для меня не понятно. Раньше это можно было объяснить наличием JVM и ее переносимостью, но теперь, когда десктопные приложения больше не разрабатываются и весь функционал выносится в веб — будущее джавы как языка для enterprise программирования для меня под вопросом. Наверное, раз джаву не очень активно используют российские компании, предпочитая ей другие языки программирования, видимо джава не очень современный язык, отвечающий требованиям реальной жизни.

    На рынке смартфонов OS Android нет конкурентов. Вероятность того, что iOS поглотит android близка к нулю. Следовательно, ближайшие пару десятков лет в отрасли вряд ли произойдут существенные изменения. Может будут появляться новые фреймворки, но тот кто начинает с нуля сейчас сможет последовательно их изучать и расти профессионально вместе с развитием самой отрасли. В отличие от большой джавы не нужно пытаться изучить все и сразу, чтобы хоть куда-то устроиться — можно спокойно изучать тот небольшой scope технологий, что используются на рынке сейчас

    Курсы программирования на Java, онлайн курс по Java разработке, курсы по Java, курсы «Джава». Запишись на курсы программирования Java, пройди курсы Java и получи новые навыки!


    Перед вами первая онлайн-программа OTUS, которая стартовала в апреле 2017 года. На данный момент обучение прошли более 430 выпускников.

    Курс обеспечивает глубокое погружение в практику программирования на Java и за 5 месяцев позволяет развить свой уровень с Junior до уверенного Middle-разработчика.

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

    Для кого создан курс?
    Программа разработана специально для программистов Java с опытом разработки от 1 года и для программистов на других языках с опытом работы от 3 лет (приветствуются любые языки ООП).

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

    Продвинутый курс по программированию на Java для Junior разработчиков

    Изучаются такие темы как технологии JMH, ASM, classLoader, класс sun.misc.Unsafe

    Большое количество практических заданий

    Более 400 успешных выпускников курса


    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *