How to become a better Java programmer?
This article is totally focused on Java development perspective and I assume you are already good programmer at essential stuff like Coding, Data Structures and Algorithms, and Computer science concepts like Networking, Protocols, Object-oriented programming, etc.
These tips are equally useful for both Core Java developer, I mean Java guys who write server-side applications but not really involved with web development skills like JSP, Servlet, and JEE, as well as for Java Web developer whose primary job is to write web applications using Java technology.
Though, I have left out some web stuff like learning JSF or Servlet 4.0 for another day to keep this list short and simple. Anyway, without any further ado, here are some tips and suggestions to become a better Java developer and Software Engineer.
1. Learn JVM Internals and Java Performance Tuning
If you are serious about becoming a Rockstar Java Developer then you must first spend the time to learn JVM internals like what are different parts of JVM, how they work, JIT, JVM options, Garbage collections, and collectors, etc.
If you know the JVM well you can write both robust and high-performance Java application and that’s what Rockstar Java developers do.
As part of this, you should also learn how to profile your Java application, how to find performance bottlenecks like which objects are taking most of your memories, and eating CPUs.
For structured learning, I recommend The Definitive Guide to Java Performance by Scott Oaks which is a great book I have read in the last few years.
For those who prefer online courses over books, Understanding the Java Virtual Machine series on Pluralsight is also a great collection to master JVM internals.
By the way, you would need a Pluralsight membership to join this course, which costs around $29 per month or $299 per year (14% discount). If you don’t have this plan, I highly recommend joining as it boosts your learning and as a programmer, you always need to learn new things.
Alternatively, you can also use their 10-day-free-trial to watch this course for FREE.
If you need more choices then following two courses on Udemy is also a good one to learn how to read heap dump, how to solve memory leak, and understand GC logs:
- Java Application Performance and Memory Management
- Java Multithreading, Concurrency & Performance Optimization
2. Learn Microservices and Cloud
Architecture is changing constantly and many companies are moving from monolithic applications to microservices.
It’s high time for Java developers to learn Microservice architecture and how to create Microservices in Java to take advantage of this recent wave.
Fortunately, the Spring framework provides Spring Cloud and Spring Boot which greatly simplify microservice development in Java.
If you are looking for a course then Master Microservices with Spring Boot and Spring Cloud is a good one to start with.
And, if you prefer books then I suggest you check the Cloud Native Java by Josh Long, which provides a comprehensive guide for developing Java applications for the cloud.
3. Learn Spring Framework (Spring Boot)
It’s almost imperative nowadays for a Java developer to learn Spring framework as most of the companies prefer to do development using Spring frameworks like Spring MVC, Spring Boot, and Spring Cloud for developing a web application, REST APIs, and Microservices.
It also promotes best practices like dependency injection and makes your application more testable which is a key requirement for modern-day software.
If you are a new Java developer then I suggest you start with this Java and Spring tutorial to learn the basics of this awesome framework and if you are already familiar with Spring then you should explore Spring Boot and Spring Cloud for developing next-generation Java application.
If you are looking for some references, then Learn Spring Boot — Rapid Spring Application Development by Dan Vega is a good place to start with.
4. Learn Java APIs and Libraries
If you have worked with great Java developers you might have noticed their overall knowledge of the Java Ecosystem and APIs forms a major part of it.
Java is the world’s most popular and mature programing language and there are tons of libraries and APIs available for doing almost everything possible.
Of course, you are not expected to know all of them but you should be familiar with some key APIs like JSON processing APIs like Jackson and Gson, XML processing APIs like JAXB and Xerces, Unit testing libraries like Mockito and JUnit, etc.
If you don’t know them you can learn or at least get an overview of them. To start with you can check out my list of 20 Java libraries every Java developer should know, which covers libraries from key areas like parsing, bytecode manipulation, concurrency, collections, etc.
5. Learn Java 8+ (Java 13)
This is the most important thing for a Java developer right now. It’s good 4 years old and even Java 13 has been released 6 months back and people are talking about Java 10 features, I know many programmers who have not written a single line of code using Java 8 features like lambdas and Stream API.
Unfortunately, most of them are experienced Java developer with good 7 to 10 years of experience in their belt. I understand that at some point in your career learning becomes slow but if you don’t act now you will be left behind.
Almost all Java development jobs now required Java 8 skills and if you don’t have them, it would be very difficult to do well and perform well in your Java interviews.
Now, if you have made your mind to learn Java 8 but worry about where to start with, I suggest you check The Complete Java MasterClass on Udemy, which will teach you all the basics of Java 8 features.
And, if you are interested in a more advanced, the hands-on course then Refactoring Java 8 by Dr. Heinz Kabutz is a good one to join.
6. Learn Design Patterns and Coding Best Practices
If you are writing a application from scratch then most of the time you are writing object-oriented code and design patterns are tried and tested solutions of common problems.
By knowing and incorporating them into your code you make your application more flexible and easier to change in the future.
It also improves overall code quality and documentation because other Java developers are also familiar with design patterns and they will understand your solution rather quickly.
But, don’t just focus on the code part, understand the spirit, and be creative. Use Java 8 features like lambdas and Streams to rewrite patterns like Strategy patterns.
If you are looking for some resources to learn design patterns then I suggest you check out Design Patterns in Java course by Dmitri Nesteruk. This course provides a comprehensive overview of Design Patterns in Java from a practical perspective and modern implementations.
And, if you need more options then this list of design pattern courses is a good place to explore further. And, for those who like books, my recommended books on design patterns can be found here.
7. Learn Dev tools and IDEs
One of the most important traits of better Java developers is that they are very good on their tools. They not only know more tools than average developers but also they know their tools well.
Since IDEs like Eclipse, NetBeans, and IntelliJ IDEA are the most important tool for a programmer, it makes sense to spend some time to learn better.
You can learn about some plugins which make your task easy or some keyboard shortcuts which helps you to navigate better.
Even some small tips help a long way because you use them a lot more than you think. If you are serious about taking your IDE skills to the next level and use Eclipse, then I suggest you check Eclipse Debugging Techniques And Tricks on Udemy, a perfect course to improve your knowledge of Eclipse.
And, if you need more options then this list of design pattern courses is a good place to explore further. And, for those who like books, my recommended books on design patterns can be found here.
7. Learn Dev tools and IDEs
One of the most important traits of better Java developers is that they are very good on their tools. They not only know more tools than average developers but also they know their tools well.
Since IDEs like Eclipse, NetBeans, and IntelliJ IDEA are the most important tool for a programmer, it makes sense to spend some time to learn better.
You can learn about some plugins which make your task easy or some keyboard shortcuts which helps you to navigate better.
Even some small tips help a long way because you use them a lot more than you think. If you are serious about taking your IDE skills to the next level and use Eclipse, then I suggest you check Eclipse Debugging Techniques And Tricks on Udemy, a perfect course to improve your knowledge of Eclipse.
And, if you are an IntelliJIDEA fan then you can also check out this free course — Up and Running with IntelliJ IDEA by @Nelson Djalo on Udemy. It’s free as of now but please check the price before joining it.
10. Learn DevOps
For a modern Java developer, knowledge of DevOps is essential. He should be at least familiar with continuous integration and continuous deployment and how Jenkins helps to achieve that.
I also suggest you spend time and learn more about DevOps in general and tools like Docker, Ansible, Kubernetes, etc along with Maven and Jenkins.
If you need some resources then Learn DevOps: CI/CD with Jenkins using Pipelines and Docker in Udemy is probably the best course to start with. You will not only learn about CI and CD but also about Maven and Jenkins in depth.
And, if you like books, The Phoenix Project is a good novel about IT, Automation and DevOps. It’s easy to read which means you will go through it without any headache and it will teach you how automation can help you in IT and Software development.
One more course, I would like to recommend, particularly for Docker and Kubernetes is Stephen Grider’s Docker and Kubernetes: The Complete Guide, you will learn these two important tools in one course.
8. Learn Scala or Kotlin
A couple of years of the back I read a book called The Well-Grounded Java Developer which highlighted the advantage of becoming a Polyglot programmer.
It inspired me to learn Scala and later I also tried Groovy because of its increased usage in creating build scripts and unit testing.
That experience has helped me a lot and that’s why I encourage Java developers to learn a new JVM language. I have blogged about it previously on 3 JVM languages Java developers should learn but if you are in a hurry, just Learn Kotlin.
It’s a great language from JetBrains, the company behind IntelliJ IDEA, and also the official language for Android development as announced by Google.
It will not only improve your productivity but also help you to go into the Android development area. If you are looking to learn Kotlin and looking for some good resource then The Complete Android Kotlin Developer course is a good starting point.
And, if you need more choices, here is a list of best Kotlin courses to explore further.
9. Learn Unit Testing
A good and professional developer almost always writes unit tests for his code and if he is really a Rockstar developer you can see that from his code and tests.
Testing has also come a long way now with several tools for unit testing, integration testing, and automation testing available to Java developers.
You can spend a good amount of your time to hone your testing skills in Java but those who are new to Java world and unit testing, JUnit is the best library to start with. The recent version JUnit 5 is both powerful and flexible and every Java developer should know that.
If you are looking for a good overview of JUnit and unit testing in Java then JUnit and Mockito Crash Courses a perfect to start with. It’s not the most up-to-date as it doesn’t cover JUnit 5 but still pretty useful for beginners.
That’s all about some of my 10 tips to become a better Java Programmer. I know it’s difficult to follow all these tips and I am not asking to do that, it’s simply not practical.
You can focus on more important first like Learning Java 8 and Learning Spring Framework if you haven’t known them yet but if you are good at those than you can pick other topics like unit testing, JVM internals, and DevOps.
To start with you need to pick one like Java 8 and commit with that before moving to the next tip. If you are looking for some low hanging fruits then learning your IDE better is a good choice.
You already know your IDE and spending some time learning it better will make you a more productive and better Java developer in a quick time.