Sunday, January 10, 2021

How to become a better Java Programmer in 2021?

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 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 piece of 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 of Java Programming, and increase their value for future career growth.

So without wasting any more time, let's see what you can do to become a better Java developer

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 Networking Programming in Java
Now, let's see them in detail and understand how these tips will help you become a better Java developer in the year 2021.

5 Tips to become a better Java Programmer in 2021

Without wasting any more of your time, let's 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 to become better Java developer

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 of 5 great books on Java Performance.

Still, one book which is clearly the most up-to-date and highly recommended by the Java community is Optimizing Java, a Practical Techniques for Improving JVM Application Performance 1st Edition by Benjamin J Evans, James Gough, and Chris Newland

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 in the classic 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 the 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  Java Application Performance and Memory Management by Matt Greecroft on Udemy. I recently bought this course for $10 but it worth a lot more. I learned a lot of useful tools, techniques, and insights about solving Java and JVM problems. I highly recommend this to all Java developers.

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.

How to become a better Java Programmer in 2021?
If you are looking for some challenging programming challenges, then you can also check out some useful websites to practice coding problems.

5. Learn Distributed Systems and Network Programming

One more thing which I learned from taking 50+ Java interviews last year is that Java developers need to improve their knowledge of Distributed Sytems, 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 it because you are a Java Web developer working in JSP, Servlet, and JSF, then also I suggest you at least read one good book on Java networking, NIO, and socket programming.

One course I highly recommend is Distributed Systems & Cloud Computing with Java by Michael Pogrebinsy, it's easy to read, exciting, and useful to build the fundamentals on Network programming, Distributed System, Cloud Computing, and other useful concepts for Java developers.

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
Java Multithreading, Concurrency & Performance Optimization

Other Programming Articles you May like
  • The 2021 Java Developer RoadMap (guide)
  • 10 Things Every Java Developer Should Learn (tips)
  • 10 Tools Every Java Developer Should Learn (tools)
  • 10 Object-Oriented Design Principles Java Programmer should know (read here)
  • 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 Essential Frameworks for full-stack Java developers? (frameworks)
  • Top 5 Courses to become a full-stack Java developer (Courses)
  • How to become a DevOps Engineer in 2021? (roadmap)
  • 10 Java and Web Development Frameworks for Programmers (frameworks)
  • How to become a React JS Developer in 2021? (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.

P. S. - If you are new to Java and looking for a free online training course to start your Java programming career then you can also check out this Java Tutorial for Complete Beginners course on Udemy. It's completely free and more than 1.5 million students have already joined this course. You just need a free Udemy account to watch this course.


Unknown said...

This is exactly what I planned :) what a coincidence! Thanks for the awesome blog

javin paul said...

@vineel, thanks for kind words. I hope you achieve your 2016 resolutions with flying colors.

Anonymous said...

Thank you Javin for your valuable guidance..!!

Unknown said...

Explore Java 8

Unknown said...

I didn't have any resolution untill I read this.
Thank you very much for sharing...

Unknown said...

Share the knowledge is also part of a good senior developer. Thanks for this useful and awesome blog!

javin paul said...

@Damian Fanaro, that's true. Senior developer should help junior developers in their team, can answer questions on StackOverFlow, comments on blog. These are nice ways to keep your knowledge current and updated as well.

javin paul said...

@rupesh padhye, exploring Java 8 is certainly a good resolutions. Every Java developer now should learn Java 8.

Shashank said...

I totally agree with you.

Unknown said...

explore another JVM language e.g. groovy, scala, kotlin

Anonymous said...

A typo in point number 5.
"differences between TCP and UPD protocol" please change it to UDP

Unknown said...

Mine is to make my basics of everything strong. I believe if your base is strong, everything is stable above it.

javin paul said...

@Torsten, exploring Scala or Groovy is definitely a goal worth pursuing, though I am slightly inclined to Groovy, given that you can use it as scripting language.

javin paul said...

@Anonymous, thanks for spotting that typo, corrected it now.

javin paul said...

@Shimpu, well said, knowing basics is the most important thing. If its time to go back to basics, its time well spent.

Raghu Nair said...

Thanks for this blog

Chinmay Patel said...

You have summed up everything very well. Reading was interesting. But practicing this regularly is important.

javin paul said...

@Chinmay, you are right, easier said than done :-) learning is not easy, you need lot of self motivation.

Unknown said...

Very nice.. best resolutions

abhishek ringsia said...

my goal is to read javarevisited every day. I always find new stuff for me .

javin paul said...

Thank you abhishek for such a nice comment :-)

Anonymous said...

the internals of JVM are not known because Java has been sold as "you don't need to know about internals... programming is easier... encapsulation makes you reuse code without having knowledge of it..." and all these bullshits

javin paul said...

@Anonymous that's true but you need to know as much as possible about JVM, JIT, JVM options, various tools to analyse heap dumps, profilers etc to support a Java application in production.

Dinesh Krishnan said...

Thanks for this blog its useful. But regular practicing is very important.

Post a Comment