Java

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

В прошлом я написал статью, «10 советов, как стать лучше в программировании». Каждый совет в той статье всё ещё актуален. Учитывая, что прошёл уже год, я решил записать новые советы для Java-программистов о том как стать лучше, расширить свои знания о программировании в Java и увеличить свою ценность для будущего карьерного роста.

Итак, не будем терять времени, давайте разберём мой список советов для Java-программистов на 2018 год.

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

Учитесь настраивать производительность Java

За последние пару лет я провёл более 50 интервью, на должность старшего разработчика Java. Я заметил, что, знание и понимание внутренних компонентов JVM, поведение GC и настройка производительности Java — это те навыки, которых многим явно не хватает.

Изучение внутренних компонентов JVM

По мере того, как ваш опыт растёт, и вы становитесь senior Java developer с более чем 5–6 летним опытом, предполагается, что вы должны понимать как общую картину, так и важные детали в основах Java.

Если вы не умеете профилировать приложение или не понимаете, почему оно медленно работает и как сделать его быстрее, тогда вам следует прочитать книгу о внутренних компонентах JVM и настройке производительности, например бестселлер Scott Oaks «Java Performance The Definitive Guide».

Я читал её в течение многих лет и до сих пор обращаюсь к ней всякий раз, когда есть время. Я поставил себе цель: в этом году прочитать её снова.

Если вы предпочитаете онлайн-курсы книгам, то я рекомендую вам взглянуть на серию курсов от Pluarlsight «Understanding the Java Virtual Machine». В курсе вы узнаете об управлении памятью, загрузке класса, безопасности и отражении.

Ежедневный кодинг в течение 2 часов

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

 

Вы забываете о программировании — самом важном навыке для программиста.
Если вы чувствуете, что недостаточно занимаетесь написанием кода, тогда возьмите за правило практиковаться каждый день. Главное, пишите хоть что-нибудь: будь то ваш личный проект, open source-фреймворк, библиотека или утилита.

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

Можете заняться решением проблем из книги Cracking the Coding Interview, 150 Programming Questions. Таким образом, вы не только убедитесь, что готовы к собеседованию, но и улучшите свои знания в логике, алгоритмах и структурах данных.

Профилируйте Java приложения раз в месяц

Эта рекомендация прилагается к первому совету: прочитать хорошую книгу, о внутренних компонентах JVM и настройке производительности. Но просто читать недостаточно. Вы должны применять эти знания в своих проектах.

 

Я рекомендую вам профилировать свои приложения, по крайней мере, один раз в месяц и уделять больше времени на понимание и анализ результатов.
Также можно взять heap dump процесса или, если у вас недавно был сбой, сделайте heap dump и выясните, какой объект занимает большую часть памяти. Есть ли утечка памяти в вашем Java-приложении?

В чем причина? Что произойдёт, если у вашего приложения появится 100 тыс. новых пользователей? Если вы с лёгкостью можете ответить на эти вопросы, что ж, вы в хорошей форме. А если вам нужно руководство, для решения проблем с памятью и процессором, я рекомендую книгу Understanding and Solving Java Memory Problems, Richard Warburton.

Принимайте участие в соревнованиях по кодингу

 

Это опять-таки связано с уже сказанным, во втором пункте — писать код каждый день в течение 2 часов. Давайте признаем, что, не всегда есть возможность заняться кодом в реальном проекте.

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

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

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

Изучайте сетевое программирование на Java

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

Я задавал много вопросов из моего списка, касающихся сетевого программирования, но многие разработчики не смогли ответить на большинство из них.

У некоторых возникали трудности, даже с объяснением ключевых различий между TCP и UDP, что, как я думал, довольно просто, для любого Java разработчика с опытом 2–5 лет.

Если вы думаете, что не имели достаточно возможностей, чтобы изучить сокет программирование на Java или что вам это не нужно, потому что вы веб-разработчик, работающий с JSP, Servlet, и JSF, то я предлагаю вам прочитать по крайней мере одну хорошую книгу по Java networking, NIO, и сокет программированию.

Одна книга, которую я настоятельно рекомендую, это — TCP/IP Sockets in Java, Second Edition, Practical Guide for Programmers. Она интересна, легко читается и хорошо подходит для того, чтобы понять основы программирования сокетов.

Java 9

В 2017 году было выпущено несколько крупных релизов, и одним из них был JDK 9. Я ещё не знаком с JDK 9, но это первое, что я собираюсь изучить в 2018 году.

Если вы хотите изучить новые возможности Java 9, например, Jigsaw, Reactive Streams, улучшения API и т.д., тогда Java 9 MasterClass — хороший курс для начала.

Spring 5.0

Ещё один большой релиз в мире Java в 2017 году был Spring Framework 5.0. С большим количеством интересных функций, например, реактивная модель программирования и утверждение Java 8 и 9. Утверждение Spring 5.0 должно ускориться в 2018 году, и именно поэтому каждый Java разработчик должен изучить его. Если вам нужна помощь, Spring 5.0: Beginner to Guru — хороший курс для начала.

Spring Security 5.0

Spring Security 5.0 — ещё один интересный релиз 2017 года, который я собираюсь изучить в 2018 году. Spring Security 5.0 был основным релизом, в котором переписали пару модулей и исправили несколько сотен ошибок.

Самая интересная часть — модуль OAuth 2.0. К сожалению, на данный момент существует не так много ресурсов для изучения Spring Security 5.0, но, к счастью, Eugen обновил свой курс Learn Spring Security с учётом версии 5.0, а также добавил новый модуль для OAuth 2.0.

Модульное тестирование

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

Вы можете изучить JUnit 5 и другие библиотеки модульного тестирования, такие как Mockito, PowerMock, Cucumber и Robot, чтобы улучшить свои навыки юнит-тестирования.

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

Если вы новичок в модульном тестировании и хотите изучить его в 2018 году, то Junit and Mockito Crash Coursefrom от Udemy — хороший курс для начала.

Резюмируем

Вот вам мой совет! Если вы Java-программист с парой лет опыта, возьмите этот список для вдохновения, чтобы установить себе цели. Ещё к этому списку стоит добавить изучение AndroidDocker и Spark, они необходимы любому Java-программисту.

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

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

Так чего же вы ждёте? Запишите свои цели на год и действуйте!

Перевод статьи: javinpaul 9 Things Java Programmers Should Learn in 2018