5 Resolutions for Java Programmers - 2016

First of all wish you 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 request from Java programmers from all over the world about how they can improve themselves? How they can become a better Java developer etc. In the past, I have shared my 10 tips to become a better programmer and every tip on that article still holds true, but given it's a new year. I have decided to jot down 5 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 anymore time, let's see what are 5 resolutions for Java Programmers in the new year, 2016.

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 year 2016.


5 Resolutions for Java Programmers

5 resolutions for Java Programmers

1) Learn JVM internals and Java Performance Tuning
In 2015, I have taken more than 50 interviews for senior Java developers and one skill which I clearly see 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. You can choose anyone from my list of 5 great books on Java Performance, but one book which is clearly the most up-to-date and highly recommended by Java community is the Scott Oaks' best seller Java Performance the Definitive Guide. I have been reading it from last years and still refer it whenever I get time. My goal is to read it again this year. If you like, you can also check the table of content here.

Learn JVM Architecture in 2016



2) Write Code Every day
Another thing I noticed last year is as your experience grows you spend your time on co-ordination, replying email, being catalyst, troubleshooter, mentor and a project manager kind of guy. What you left behind is coding, which is the single most important 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 difficult thing, I suggest any time you feel resistance, 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, 150 Programming Questions. This will not only make you're ready for the interview but also improve your knowledge on the data structure, algorithms, and programming logic.

Write code every day programmer resolution




3) Profile Your Java application once a month
This resolution is attached with 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 in 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 process or if you have a recent crash of your Java application then take that heap dump and find out which object is taking most of the memory, is there a memory leak in Java application? What is the cause of slowness of your application? What will happen if another 100K new client will access your application? If you can answer all these questions comfortably then you are in good shape.

Best book to learn Java Performance and Profiling



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 that participating in programming and coding challenge. There are many websites on the internet which host programming challenge and gives you opportunity to test your skill but TopCoder is simply the best. If you are looking for some challenging programming challenges then you can also check CodeChef, a good website to practice coding.

Good site to for Programming challenges


5) Learn Socket Programming in Java
One more thing which I learned from taking 50+ Java interviews in 2015 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 fail 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 basic 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, interesting and good to build the fundamentals on Socket.

Best book to learn Java Socket Programming


That's all about my top 5 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 lead to big success and setting small goals and achieving them is better than setting big, impractical goal and failing before kick off. So what are you waiting for? write down your resolutions for the new year and share with us. At the end of the year, you can come back here and tell us about how much you achieved.


Further Reading
  • 10 Articles Every Programmer Must read (see here)
  • A tale of good programmer vs average programmer (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)

23 comments :

Vineel Kumar Reddy Kovvuri 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.

Unknown said...

Thank you Javin for your valuable guidance..!!

rupesh padhye said...

Explore Java 8

Unknown said...

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

Damián Fanaro 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.

Torsten Werner 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

Shimpu Borthakur 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.

muralinadh pampati said...

Very nice.. best resolutions

abhishekringsia 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.

Post a Comment