How to become a better Java Programmer?

First of all, I wish you a very happy new year, guys. It's that time of year when we start afresh, make plans, set goals, and make resolutions for the new year. Being a Java developer and author of a Java blog, I frequently receive a  a lot of requests from Java programmers from all over the world about how they can improve themselves? How they can become a better Java developer and do well in their job and career. In the past, I have shared my 10 tips to become a better programmer, and every advice on that article still holds true but given it's a new year. I have decided to jot down some new resolutions for Java programmers to improve themselves, enhance their knowledge on Java Programming, and increase their value for future career growth.

So without wasting any more time, let's see what 5 resolutions for Java Programmers in the new year 2020 are.

Before going into details about why these resolutions are important and how they will help you to become a better developer and do well in your career, let's see the 5 resolutions of Java programmers for this year:

  • Learn JVM internals and Java Performance Tuning
  • Write Code Every day.
  • Profile Your Java application once a month
  • Participate in Programming challenges
  • Learn Socket Programming in Java
Now, let's see them in detail and understand how these resolutions will help you become a better Java developer in the year 2020.

5 Tips to become a better Java Programmer

Without wasting any more of your time, lets deep dive into what you can do or learn to become a better Java Programmer. I have also mentioned relevant courses, books, and articles to learn these advanced skills to make it easy for you.

1) Learn JVM internals and Java Performance Tuning

I have taken more than 50 interviews for senior Java developers, and one skill which I have clearly seen lacking is knowledge and understanding about JVM internals, GC behaviors, and Java Performance Tuning.

As your Java experience grows and you become a Senior Java developer with more than 5 to 6 years of experience, it's expected from you to have both big picture and small details about fundamentals.

If you can't profile an application or cannot figure out why it's slow or how to make it fast, then you should read a good book on JVM internals and performance tuning.

If you are serious about this topic then I suggest you take a look at Understanding the Java Virtual Machine series of courses on Pluralsight, which explains memory management, class loading, Security, and Reflection.

Learn JVM Architecture in 2016

Btw, you would need a Pluralsight membership to get access to this course, which costs around $29 per month or $299 annually (14% discount).

If you don't have Pluralsight membership, I encourage you to get one because it allows you to access their 5000+ online courses on all the latest topics like front-end and back-end development, machine learning, etc. It also includes interactive quizzes, exercises, and the latest certification material.

It's more like Netflix for Software Developers, and Since learning is an integral part of our job, Pluralsight membership is a great way to stay ahead of your competition.

They also provide a 10-day free trial without any commitment, which is a great way to not just access this course for free but also to check the quality of courses before joining Pluralsight.

If you like books, you can choose anyone from my list of5 great books on Java Performance. Still, one book which is clearly the most up-to-date and highly recommended by the Java community is Scott Oaks' best seller Java Performance the Definitive Guide.

I have read it a couple of times and still refer to it whenever I get time.

2) Write Code Every day

Another thing I noticed last year is as your experience grows, you spend your time on coordination, replying to an email, being a catalyst, troubleshooter, mentor, and project manager kind of guy.

What you left behind is coding, which is the single most crucial skill for a Programmer. If you feel that you are not doing enough coding, then make a resolution to Code every day.

At least, write something, be it on your project, an open-source framework, a library, or a utility. Since starting is the most challenging thing, I suggest any time you feel resistant, start reading and refactoring Code for fun.

You will enjoy that, and in the process, you will also write Code. You can also solve problems given Cracking the Coding Interview, 189 Programming Questions .

This will not only make you're ready for the interview but also improve your knowledge of the data structure, algorithms, and programming logic.

Write code every day programmer resolution

If you like, you can also check this list of 50+ Data Structure and Algorithms Interview Questions, where I have summarized a lot of frequently asked algorithms questions from interviews.

3) Profile Your Java application once a month

This resolution is attached to the first resolution about reading a good book on JVM internals and performance tuning. Just reading the book will not be enough unless you apply that knowledge to your live project.

I suggest you profile your Java application, at least, a month and spend a good time understanding and analyzing the result.

You can also take a heap dump of your Java processor if you have a recent crash of your Java application then take that heap dump and find out which object is seeking most of the memory, is there a memory leak in Java application?

What is the cause of the slowness of your application? What will happen if another 100,000 new clients will access your application? If you can answer all these questions comfortably, then you are in good shape.

If you need some guidance on solving memory and CPU issues, I suggest you take a look at Understanding and Solving Java Memory Problemsby Richard Warburton.

Understanding and Solving Java Memory Problems free course

4) Participate in Programming challenges

This goal is again somewhat related to our second resolution, write Code every day. Sometimes, you don't have enough chances in your live project to Code.

If you are starving for challenging Code, then there is nothing better than participating in programming and coding challenges.

There are many websites on the internet which host programming challenge and allows you to test your skill, but TopCoder is simply the best.

Good site to for Programming challenges

If you are looking for some challenging programming challenges, then you can also check out some useful websites to practice coding problems.

5) Learn Socket Programming in Java

One more thing which I learned from taking 50+ Java interviews last year is that Java developers need to improve their socket programming and networking fundamentals.

I have asked many questions from my list of Java networking programming questions, but most of the Java developer fails to answer most of them.

Some of them even struggle to outline the key differences between TCP and UDP protocol, which I thought is too essential to ask any Java developer of 2 to 5 years of experience.

If you feel that you have not got enough opportunity to learn Socket Programming in Java or you don't need because you are Java Web developer working in JSP, Servlet and JSF, then also I suggest you to at least read one good book on Java networking, NIO, and socket programming.

One book I highly recommend is TCP/IP Sockets in Java, Second Edition , Practical Guide for Programmers, it's easy to read, exciting and useful to build the fundamentals on Socket.

Best book to learn Java Socket Programming

That's all about some resolutions for Java Programmers. If you are a Java programmer with a couple of years of experience, you can also take inspiration from this list to set your goal.

I have purposefully kept it simple and achievable because I personally believe that small success leads to big success, and setting small goals and achieving them is better than setting a big, impractical goal and failing before kick-off.

But, if you want to add more, you can always add something like learning a new version of Java like Java 12 or Java 13, learning a new version of Spring-like Spring 5 and DevOps in particular. If you are not familiar with tools like Jenkins, Docker, and Kubernetes, then you can also add them to your list of resolutions for this year.

So what are you waiting for? Write down your resolutions for the new year and share it with us. At the end of the year, you can come back here and tell us about how much you achieved.

Further Learning

The Complete Java MasterClass

Spring Framework 5: Beginner to Guru

Learn DevOps: CI/CD using Jenkins and Docker

Other Programming Articles you May like

  • The 2020 Java Developer RoadMap (guide)
  • 10 Things Every Java Developer Should Learn (tips)
  • 10 Tools Every Java Developer Should Learn (tools)
  • 10 Articles Every Programmer Must read (see here)
  • 5 Programming language every Programmer should learn (see here)
  • 10 Interview Questions Every Programmer should know (see here)
  • 6 Books to Learn and Master Programming and Coding (see here)
  • 10 Object-Oriented Design Principles Java Programmer should know (read here)
  • 10 Java and Web Development Frameworks for Programmers (frameworks)
  • How to become a DevOps Engineer in 2020? (roadmap)
  • How to become a React JS Developer in 2020? (roadmap)
  • 20 libraries Every Java Developer should know (libraries)

Thanks for reading this article so far. If you like this article, then please share it with your friends and colleagues. If you have any questions or feedback, then please drop a note.