10 навыков, которые помогут в карьере Java-программисту

0
1699
views

Сокращенный перевод статьи «10 Skills Java Programmer can Learn to Accelerate their Career».

Советы Java-программисту

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

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

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

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

Советы из этой статьи будут в равной степени полезны и Java-разработчикам, пишущим серверные приложения и не нуждающимся в знании JSP, Servlet и JEE, и веб-разработчикам, чья основная работа — создавать веб-приложения с использованием Java.

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

1. Изучайте проектирование и архитектуру программного обеспечения

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

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

2. Изучайте контейнеры и DevOps-инструменты (Jenkins, Docker, Kubernetes)

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

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

Я советую вам уделить некоторое время более тщательному изучению DevOps в целом, а также изучению таких инструментов как Docker, Chef, Kubernetes и т. п., плюс Maven и Jenkins.

3. Изучите фреймворк Spring (Spring Boot)

Для современного Java-разработчика изучение фреймворка Spring является практически обязательным. Это связано с тем, что многие компании предпочитают вести разработку с применением именно Spring-фреймворков (Spring MVC, Spring Boot и Spring Cloud).

Также использование этих фреймворков предполагает применение лучших практик, таких как dependency injection, и делает ваши приложения более тестируемыми, а это одно из основных требований к современному ПО.

Если вы начинающий разработчик, я советую начать с руководств по Spring — чтобы хотя бы познакомиться с этим прекрасным фреймворком. А если вы уже с ним знакомы, можете исследовать Spring Boot и Spring Cloud — это вам пригодится для разработки Java-приложений следующего поколения.

4. Освойте модульное тестирование (JUnit и Mockito)

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

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

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

На оттачивание навыков тестирования может уйти довольно много времени. Но начинающим разработчикам лучше всего начать этот путь с изучения библиотеки JUnit. Последняя версия JUnit 5 отличается и мощью, и гибкостью. С ней должен познакомиться каждый Java-разработчик!

5. Изучайте API и библиотеки

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

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

Конечно, никто не ждет, что вы изучите их все. Но вы должны знать некоторые ключевые API (JSON), обрабатывающие API (Jackson и Gson), API для обработки XML (JAXB и Xerces), библиотеки модульного тестирования (Mockito и JUnit).

Если для вас все это внове, начать можно с моего обзора «20 библиотек Java, обязательных для каждого Java-разработчика». В этой статье я рассказал об основных библиотеках в ключевых областях.

Библиотеки

6. Изучите, как работает виртуальная машина Java

Если вы серьезно настроены стать выдающимся Java-разработчиком, вы просто обязаны уделить время изучению работы JVM. То есть, вы должны знать, из каких частей она состоит и как эти части работают.

Хорошо зная JVM, вы сможете писать надежные и одновременно высокопроизводительные Java-приложения. То есть, делать то, что делают все выдающиеся разработчики.

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

По этой теме могу посоветовать книгу «The Definitive Guide to Java Performance» Скотта Оакса, это отличный источник знаний по работе JVM и сборке мусора.

7. Изучайте шаблоны проектирования

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

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

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

Но не следует сосредотачиваться на конкретном коде. Вместо этого постарайтесь понять сам дух шаблона и будьте креативны. Используйте такие свойства Java 8 как lambdas и Streams для переписывания шаблонов вроде «Стратегии».

Шаблоны проектирования

8. Изучите Kotlin

Пару лет назад я прочел книгу «The Well-Grounded Java Developer», в которой подчеркивалось преимущество знания нескольких языков для программиста. Это вдохновило меня изучить Scala, а позже я также попробовал взяться за Groovy, потому что его использование в написании скриптов сборки и модульном тестировании заметно растет.

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

Это отличный язык от JetBrains — компании, стоящей за IntelliJ IDEA, а кроме того, это официальный язык Android. То есть, изучение Kotlin поможет вам не только улучшить свою производительность, но и войти в сферу Android-разработки.

9. Изучите микросервисы

Архитектура меняется постоянно. Многие компании переходят от монолитных приложений к микросервисам.

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

К счастью, фреймворк Spring предлагает Spring Cloud и Spring Boot, очень сильно упрощающие разработку микросервисов на Java.

Из книг по данной теме я советую «Cloud Native Java» Джоша Лонга. Это доступное руководство по созданию облачных Java-приложений.

Микросервисы

10. Получше познакомьтесь со своей IDE

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

Поскольку самым важным инструментом для любого Java-программиста является его IDE (Eclipse, NetBeans, IntelliJ IDEA), имеет смысл уделить время более глубокому ее изучению.

Сочетания клавиш

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

11. Глубже изучите Java

Это, безусловно, самое главное для любого Java-разработчика. Язык Java постоянно обновляется. С учетом того, что новая версия выходит каждые 6 месяцев, довольно сложно уследить за всеми нововведениями. Я изучал особенности Java 10, но при этом знаю многих программистов, не написавших ни единой строки кода с использованием таких функций Java 8 как lambdas и Stream API.

К сожалению, многие из этих программистов — опытные разработчики, у них за плечами по 7-10 лет стажа. Я понимаю, что на каком-то этапе карьеры скорость учебы снижается, но если не шевелиться, можно очень скоро остаться на обочине.

Разница в версиях языка

Сейчас почти все вакансии в Java-разработке требуют знания Java 8+. Если у вас таких знаний нет, вам придется туго на собеседованиях.

Это все, что я хотел посоветовать Java-разработчикам. Знаю, что следовать всем этим советам непросто, но вам не обязательно браться за все сразу, это слишком непрактично. Можно сфокусироваться для начала на самом важном, например, на изучении Java 8 и фреймворка Spring (если вы с ним еще не знакомы). А если с этими темами у вас все в порядке, можно выбрать другие, например, модульное тестирование, работу JVM и DevOps.

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here