Many Java developers ask me how to become a better programmer? How do I improve my programming skills? Or I am good at Java but not so good at problem-solving ability etc. This is a reality, today's era is full of language experts than real programmers. It's easy to understand keywords, methods, and API of the Java programming language. Still, at the same time, it's challenging to solve practical problems, design reusable, and robust software, and get the best of data structure and algorithm. I have often seen Java programmers are not doing so well when asked to design and code a solution in a limited time, but at the same time, they are really good with Java concepts and all theories.
Even senior programmers with 4 to 6 years experience in Java programming, sometimes fail to solve questions like designing coffee-maker, coding Vending Machine, or sometimes even reversing a linked list. I may be just moving off from becoming a better programmer, but it's essential to know your limitations and then work out to resolve those.
If you feel resistance in coding, then you should code as much as possible, if you feel stressed and lost in designing using Object-oriented analysis and design. You should do a design using a pen and paper as much as possible. This resistance is what actually prevents you from being a better programmer.
I have personally found that coding and designing presents a lot of resistance to an average programmer because most of them in their professional job don't do enough coding and development.
By the way, there could be numerous tips to become a better programmer, I will stick with my list, which I personally follow and which has continuously helped me. You may find them useful but if you are on a more senior-level and looking for tips to become a solution architect, you may like to see how to become an outstanding solution architect course by Mark Farragher.
Programming is a combination of many skills, which means it's not possible to learn it in a quick time, instead it will come with time and experience, but that won't happen automatically.
You can spend 5 years doing a Java programming job without being a good programmer. Since most Java, interviews focus on theory rather than programming and coding skills.
Not many programmers practice these essential programming skills. If there is a mandatory problem-solving programming test, I will bet, the average programmer would have been much better. Anyway, here is my list of things that can help you to become a good programmer.
Even senior programmers with 4 to 6 years experience in Java programming, sometimes fail to solve questions like designing coffee-maker, coding Vending Machine, or sometimes even reversing a linked list. I may be just moving off from becoming a better programmer, but it's essential to know your limitations and then work out to resolve those.
If you feel resistance in coding, then you should code as much as possible, if you feel stressed and lost in designing using Object-oriented analysis and design. You should do a design using a pen and paper as much as possible. This resistance is what actually prevents you from being a better programmer.
I have personally found that coding and designing presents a lot of resistance to an average programmer because most of them in their professional job don't do enough coding and development.
By the way, there could be numerous tips to become a better programmer, I will stick with my list, which I personally follow and which has continuously helped me. You may find them useful but if you are on a more senior-level and looking for tips to become a solution architect, you may like to see how to become an outstanding solution architect course by Mark Farragher.
10 Tips to Improve Programming Skill and Become Better Programmer
In order to become a better programmer, you need to be really good at the data structure, algorithms, designing using OOP, multi-threading, and various programming concepts like Recursion, divide and conquer, prototyping, and unit testing.Programming is a combination of many skills, which means it's not possible to learn it in a quick time, instead it will come with time and experience, but that won't happen automatically.
You can spend 5 years doing a Java programming job without being a good programmer. Since most Java, interviews focus on theory rather than programming and coding skills.
Not many programmers practice these essential programming skills. If there is a mandatory problem-solving programming test, I will bet, the average programmer would have been much better. Anyway, here is my list of things that can help you to become a good programmer.
1. Coding, Coding, and Coding
Why have I put coding at the top of this list? Because it's the most difficult and at the same time its central piece of programming.By doing coding, you also realize your mistakes in designing, error handling, threading, and then go back to those respective skills to improve. You just can not work in designing only; coding produces output, which is vital to learn and act as a success.
By the way, do not stop just after solving the problem, it's always better to throw away your first solution, that is just a prototype, your next solution should address issues, missing requirements that you have found building a prototype.
You can also see the Clean Code with Java course on Udemy to learn more about writing production-quality code, which can stand the test of time.
2. Reading Books
Coding is easier said than done, and there is a massive difference between good code and bad code, but how do you know? Until you have seen a good code and know why a particular code is good, you can not understand the difference.This is where books come to help; more often than not, authors are great programmers themselves. They offer their experience in the form of a book. I love books, but one book, which is particularly helped me, is Clean Code by Uncle Bob.
By reading this book, I have found myself finding problems in my code and applying the advice given in this book every now and then. My advice is if you ever find such books, grab them. I also recommend reading these classic books many times and refer them every now and then.
Another similar book is Effective Java by Joshua Bloch, which is full of good advice. Also, by reading books, you are learning from someone else's experience, and there are only two ways to improve yourself, either by learning from your own experience (which is very limited) or learning from others' experience (which is unlimited).
Remember more is not always good, rather than reading 5 books, I suggest read two books, which you enjoyed reading multiple times. These two books are also from my list of must-read books for Java programmers.
3. Contributing to Open Source, Signing-up mailing lists
Contributing to the Open source code, especially from Apache, Google, and some other projects is another way to improve your programming skills and become a better programmer. Just signing their mailing list and the following discussion teaches you a lot.Since most of the discussions happen between good programmers, listening to them and understanding problem and their approach, solution, and view, automatically develop good programming habits for you.
To get most of it, do not just sit passive, ask questions, offer your view, but same time value others as well.
4. Practicing Data Structure, Algorithms, and Design related problems
I was thinking of putting that as the second item, but it ended up fourth. In my opinion, this is the most critical of things to do to become a better programmer. Most of the good programmers I have seen and met are really good in data structures, algorithms, and Computer Science basics.By learning these things, you take better advantage of what is available. Since data structure is a key piece of any program, solid knowledge of them helps during problem-solving.
Similarly, knowledge of key programming principles, search and sort algorithms, and other well-known algorithms develop programming skills on you.
You can join a comprehensive course like Data Structure and Algorithms: Deep Dive Using Java to learn more about basic data structure, their properties, and when to use them in your program. It's one of the better courses I have found on the internet.
And if you like reading books more than online courses, then you also refer these books to improve your knowledge of data structure and algorithms.
Also, blogs are a small piece of information, so it digests well. A blog also helps to learn new technology and new features of existing language and API.
Many times, I have seen something subtle or missed things from a really well-known part of Java described in a small blog post. When it comes to reading good development articles, I prefer to go to websites like Dev.to, FreeCodecamp, and Medium, particularly some dev focused publications.
Look at code of open source projects, your fellow programmer's code, your existing proprietary code, code from Java SDK, and try to understand how they work, try to see what they are doing and why they are doing.
Find patterns, develop navigation skills, initially you will find it boring and difficult, but with time you will develop a good code sense, which will alert you when you make a mistake, help you to spot others' mistakes, gaps, and code smell.
This Code sense is one of the signs of a better programmer, they often tend to look, what you missed. If you want to improve your coding skill, both reading and writing, and need a resource then you can also check out the Pyramids of Refactoring(Java) - Clean Code gradually course on Udemy. It's one of those courses where you will fall in love with the first lesson.
But like coding and designing, unit testing is also a tough job for average programmers, you will see a lot of resistance there. Some programmer writes trivial test, instead of thinking hard on usage scenario.
Remember, there is no substitute for thinking through the process, after analysis, design, and development, unit testing is another opportunity to think through scenarios and gaps in your code. Make it a rule, always write a Unit test for your code.
If you want to learn Unit testing in Java, I suggest you learn JUnit and Mockito, two essential frameworks for unit testing in Java, and if you need a course, I suggest you join the JUnit 5 in 20 steps course by Ranga Karnan on Udemy.
It often helps that the code you think is rock solid, has some bugs which only other programmer can see, Code review and four eye check does that for you.
If you are lucky and get a chance to work in a company that has unit testing, code review as a discipline, then you are likely to be a better programmer than the rest. These two things immensely help to improve programming skills.
If you are wondering what to check on Code reviews, I suggest you check if the code is functionally correct, if standard practices have been followed like SOLID design principles and Java naming conventions. Another thing you can check is if there are enough unit tests or not, which is often neglected.
I have then found gaps, missing requirements, bugs, and design flaws while discussing with teammates. In the software industry, where programmers tend to isolate them with their computer, talking, sharing, and doing whiteboard sessions helps immensely.
Don't just sit and code, talk, listen, and think and hang out with fellow programmers. Participating in the event also helps. You may also get some useful and practice tips to become a better developer overnight, like this one :-)
Participating in StackOverflow and answering others' queries, commenting on blogs, and forums is a nice little way to revise knowledge and same time correct your misconception.
By putting our knowledge in front of others, we not only help others but also put them to the test. Many times you will see someone benefiting from your knowledge, but also you are getting your misconception corrected.
Every programmer wants to become a better programmer, but not everyone succeeds. Apart from the natural talent of programming and problem solving, it requires a lot of hard work, constant learning, and perseverance to become a better programmer. The more you do real work like coding, design, Unit Testing, and Code review, the better you will become. If you just want to do one thing at this moment, I would say go and read clean code.
Other Programming Articles you may like:
Thanks for reading this article so far. If you like these tips, then please share it with your friends and colleagues. If you have any questions or feedback, then please drop a note. If you have any other tips to improve programming and coding skill, then feel free to share with us.
P. S. - If you are a Java developer and looking for some Java-specific tips to become a better Java developer, then you can also check this list of tips to become a better Java programmer this year.
P.S.S. - If you are an experienced programmer with 5 to 10 years of experience and looking for tips to become a solution architect or move ahead in your career on the technical side then you may like to see how to become an outstanding solution architect course by Mark Farragher on Udemy. One of the best courses to learn all the soft and hard skills required to become a solution architect.
5. Reading Good Blogs
Reading good blogs is a small part of reading books. How does reading blogs help you to become a better programmer? Well, it does. Since blogs are often written by programmers themselves, and most of them share their personal views, experience, you often find them relevant.Also, blogs are a small piece of information, so it digests well. A blog also helps to learn new technology and new features of existing language and API.
Many times, I have seen something subtle or missed things from a really well-known part of Java described in a small blog post. When it comes to reading good development articles, I prefer to go to websites like Dev.to, FreeCodecamp, and Medium, particularly some dev focused publications.
6. Reading Code
If reading blogs help to become a good programmer, then reading code help more than that, but at the same time, reading a blog is easy, but reading the code is tough. Do you see resistance? Then you should do it.Look at code of open source projects, your fellow programmer's code, your existing proprietary code, code from Java SDK, and try to understand how they work, try to see what they are doing and why they are doing.
Find patterns, develop navigation skills, initially you will find it boring and difficult, but with time you will develop a good code sense, which will alert you when you make a mistake, help you to spot others' mistakes, gaps, and code smell.
This Code sense is one of the signs of a better programmer, they often tend to look, what you missed. If you want to improve your coding skill, both reading and writing, and need a resource then you can also check out the Pyramids of Refactoring(Java) - Clean Code gradually course on Udemy. It's one of those courses where you will fall in love with the first lesson.
7. Writing Unit tests
The unit test complements the thinking and coding process, and subsequently, helps you to design better. Anything which is difficult to test has a chance of improvement. Also, writing unit tests helps a lot in finding better names, better abstraction, better interface, abstract class design, and overall improves code quality.But like coding and designing, unit testing is also a tough job for average programmers, you will see a lot of resistance there. Some programmer writes trivial test, instead of thinking hard on usage scenario.
Remember, there is no substitute for thinking through the process, after analysis, design, and development, unit testing is another opportunity to think through scenarios and gaps in your code. Make it a rule, always write a Unit test for your code.
If you want to learn Unit testing in Java, I suggest you learn JUnit and Mockito, two essential frameworks for unit testing in Java, and if you need a course, I suggest you join the JUnit 5 in 20 steps course by Ranga Karnan on Udemy.
8. Doing Code reviews
Like Unit testing, Code review is another development practice that helps to become a good solid programmer. Code review helps both reviewer and author, the reviewer improves his code sense and offers genuine advice while the author learns from his mistakes.It often helps that the code you think is rock solid, has some bugs which only other programmer can see, Code review and four eye check does that for you.
If you are lucky and get a chance to work in a company that has unit testing, code review as a discipline, then you are likely to be a better programmer than the rest. These two things immensely help to improve programming skills.
If you are wondering what to check on Code reviews, I suggest you check if the code is functionally correct, if standard practices have been followed like SOLID design principles and Java naming conventions. Another thing you can check is if there are enough unit tests or not, which is often neglected.
9. Talking to a fellow programmer
Reading is a passive event compared to talking. Talking about a program and discussing that with a fellow programmer, often leads to a better solution, it's natural because your mind tends to involve more when you talk and listen to others.I have then found gaps, missing requirements, bugs, and design flaws while discussing with teammates. In the software industry, where programmers tend to isolate them with their computer, talking, sharing, and doing whiteboard sessions helps immensely.
Don't just sit and code, talk, listen, and think and hang out with fellow programmers. Participating in the event also helps. You may also get some useful and practice tips to become a better developer overnight, like this one :-)
10. Participating in Stack Overflow and forums, Commenting in Blogs
This is another form of activity, which helps you to revise knowledge. By sharing knowledge, the first person who benefits is the one who shares. Since programming is big and vast, you tend to forget most of the things which you don't use for more than 3 months.Participating in StackOverflow and answering others' queries, commenting on blogs, and forums is a nice little way to revise knowledge and same time correct your misconception.
By putting our knowledge in front of others, we not only help others but also put them to the test. Many times you will see someone benefiting from your knowledge, but also you are getting your misconception corrected.
Every programmer wants to become a better programmer, but not everyone succeeds. Apart from the natural talent of programming and problem solving, it requires a lot of hard work, constant learning, and perseverance to become a better programmer. The more you do real work like coding, design, Unit Testing, and Code review, the better you will become. If you just want to do one thing at this moment, I would say go and read clean code.
Other Programming Articles you may like:
- The Complete Java Developer RoadMap
- 10 Tools Every Java Developer Should Learn
- 10 Programming languages Polyglot Programmer Can Learn
- 10 Things Every Programmer Should Know
- Top 5 courses to learn Spring Framework in Depth
- 10 Best Cloud Certifications for Beginners
- The 2023 Python Developer RoadMap
- Top 5 Courses to learn Spring Boot in depth
- 10 Books Every Java Developers Should Read
- The 2023 Software Architect RoadMap
- 10 Frameworks Java and Web Developer Should learn
- 20 Libraries Java developer should know
- My favorite free courses to learn Java in depth
- 10 Free courses to learn Maven, Jenkins, and Docker
- The Complete DevOps Engineer RoadMap
- 5 Essential Skills to Crack Coding Interviews
- The Complete Frontend and Backend Developer RoadMap
- Top 10 IT Certifications for Java Developers
Thanks for reading this article so far. If you like these tips, then please share it with your friends and colleagues. If you have any questions or feedback, then please drop a note. If you have any other tips to improve programming and coding skill, then feel free to share with us.
P. S. - If you are a Java developer and looking for some Java-specific tips to become a better Java developer, then you can also check this list of tips to become a better Java programmer this year.
P.S.S. - If you are an experienced programmer with 5 to 10 years of experience and looking for tips to become a solution architect or move ahead in your career on the technical side then you may like to see how to become an outstanding solution architect course by Mark Farragher on Udemy. One of the best courses to learn all the soft and hard skills required to become a solution architect.
This really helps! Thank you for sharing wonderful books along to refer..!
ReplyDeleteNice tips!
ReplyDeleteReading books and coding is my favorite.
It is wonderful post , it motivates programers and coding enthusiasts, one point I like and coincide with my opinion is that " Most of good programmers I have seen and met are really good in data structures, ... " Thanks for sharing tow books Clean Code by Uncle Bob....
ReplyDeleteNice Article and tip. I relaized the blunder of having Clean Code resting at my shelf for quite sometime now.
ReplyDelete"Cracking the coding interview" is also a lovely book that you can refer to.
ReplyDeleteNice Article.Thank You...
ReplyDeleteCan you suggest which is best book for DATA Stucture for coding and leaning, in goole show list of things.
ReplyDeleteThis is probably the best of all your posts!! Kudos, Javin !!
ReplyDeleteA truly wonderful post. The best line in the post is - "This resistance is what actually preventing you from being a better programmer"
Cheers,
Sandeep
Thanks Sandeep, and all of you for kind words. Glad to know that you guys like this article so much. It means so much for me
ReplyDeleteI want to purchase this book "Clean Code by Uncle Bob" could u plz send me the correct link.
ReplyDeleteto develop a command line interface where a text or XML file can be sent to a application to execute multiple individual/unique tasks.
ReplyDeleteany help how to create custom commands in command and parse the command in java file???
Thank you, great advise in this article.
ReplyDeleteThank you, wonderful tips for being better programmer.........
ReplyDeleteThanx for tips..
ReplyDeleteAd #4 - codility.com is an excelent place to develop algorithmic skills.
ReplyDeleteIts really useful...the practice of repeated things along with smartness in proceeding things make programming an art...
ReplyDeleteHi Jarvin,
ReplyDeleteThanks for awsome tips. Will surely try it. Have already ordered 'Effective Java'. Looking forward to tons of learning :P
I used to spend 50% time coding, 50% reading. Now I change a lot, coding helps me much more than reading, I spend at least 80% time coding.
ReplyDeleteDear Sir... The article is really helpful and inspiring. Please suggest me a good book to learn and code data structure.... Kindly reply.
ReplyDeleteCan you please suggest good books for data structures and algorithms?
ReplyDeleteThank you.... Could you please good books to improve Java programming skills...
ReplyDeleteThank you Javin Paul.. this really helpful for my future career..
ReplyDelete@Anonymous, Please check my list of books to improve Java Programming skill
ReplyDelete@Surbhi, Sure, I am writing an article with my list of good books on data structures and algorithms. Mean while you can check this list, which contains some timeless classic on coding, data structure and algorithm.
ReplyDeleteThanks man. I love the part on understanding algorithms, data structures and designs. Thanks man. Really helpful
ReplyDeleteNice Article..... Reading blogs is one of the best ideas.... I have been reading javarevisited blog for past few years and has helped me a lot in keeping be updated with nuances of Java and improving my programming skills though my actual life at work doesn't provide the opportunity to work on more technical stuff..
ReplyDeleteMesmerising one...Thanks for writing it...Gave me lil push..n remind me of the Resistance which caught hold of me for a while...Thanks for bringing this wonderful article...Keep publishing like this.
ReplyDeleteExtremely helpful...Nicely written! Has motivated me to put more efforts in coding...
ReplyDeleteThis is a bunch of bullshit!! When programming code first came out, we did not have OOP programming or should I say reusable objects. We coded for methods or functions, using C language, Pascal, Fortran, etc. Recently, C++ and Java which are both OOP and reusable code was the thing. Look, do you think a IT Manager is going to pay you to rewrite code that has already been written, NO!!! IT industry as already simplified this process too OOP, Databases for data structures, pre-build frameworks to ELIMINATE REDUNDANT CODE!!! Programmers should be using less code, because it is already done for them in these new technology, OOP, Databases, Frameworks,Design Patterns, etc. Got it! Get your head out of your asses and get real!!! Also, the algorithm questions asked at interviews is a bunch of crap too, because more than half of the time we don't need to use them!!! Also, the main reason ALOT of experience programmera v get the algorithm questions wrong is because we DON'T USE THEM, if you coded like this daily we would be get the questions correct. And if you were a programmer you would know this. Tell these people this, so you won't have to admit to these lies.
ReplyDelete@Janice Garcia: First, one does not "program code". One programs computers using code—or rather—with notations that are progressively compiled by a compiler to binary, which are of a physical form, capable of directing the mechanical behavior of a computer towards the goal of making the machine do some useful work.
ReplyDeleteSecond—"we" did not "code for" methods or functions. We coded procedures. But that is a matter of definition and semantics.
Third—"we" did not start with C, Pascal, Fortran, nor etc. "We" started with relays, vacuum tubes, wiring (cut to dimension) and progressed through various layers of how-to-control-the-machine up to and including C (and the others on your list—including "etc").
Fourth—that you believe C++ and Java to be OOP is a nifty clue. To what? You'll have to ask or discover on your own (hint: You think C++ and Java are Object Oriented Programming? You think that's air your breathing?).
Fifth—you have anger issues. Get help.
Finally—People build frameworks. People maintain them. Good or best practices and excellent tools help them. Old code must be maintained, improved, refactored (as needed), and there are a host of other matters beyond the scope of this response.
Honestly, I think you are just an angry and think-too-much-of-yourself person who needs to "shut the F up"—not that I have an anger problem like yourself. I am just responding in language and in a tone that you seem to understand best.
As for your software engineering skills—good luck with that.
Thank you. Nice article. I read your recommended books which helped in me improving my coding skills.
ReplyDeletewhat application to practice java code , Eclipse ? helps please
ReplyDeleteThank you
ReplyDeletethank you :)
ReplyDeleteHi Gavin the most important thing to me from your article is that you have mentioned the resistance to coding and designing. That is the most dangerous thing to a tech guy.very helpful post on all the topics
ReplyDeleteThanks Gavin , for such a helpful article .
ReplyDeleteNice blog, it gives me the path I need to walk throughout..
ReplyDeleteHowever, read the comments make me feel MOTIVATED..!!.
And, one thing I learned these two years as beginner programmer is Team Work.
- It is hard to say to someone that is wrong without hurt his/her feelings
- It is hard to accept corrections from others without set aside our proud.
@Osmar, exactly, the skill you mentioning, saying things in right way, doing things in right way are great skill to have. They are difficult to build and often build at young age with parents, teachers and people around you. They go a long way to define career of any professional including programmers and software engineers.
ReplyDeleteIf you seriously want to become a better programmer , you must improve your data structure and algorithm skill. You can read these books to learn Algorithms. You should be good at algorithm and data structure to write good code. Once you done, that you can look at these books to improve coding skill .
ReplyDeleteVery impressive post:)
ReplyDeleteReally...great post!!....changed my mindset about programming.
ReplyDeleteThank you!!! It really helped.
ReplyDeletethis is a good post
ReplyDeleteThanks dear for such a Nice Post.....!!!!
ReplyDeletethank you
ReplyDeleteThnx a lot sir
ReplyDeleteThis is great. Trying my best to become very good at it.
ReplyDeleteNice post. Hackerrank also good platform for being good programmer.
ReplyDelete@nixon, indeed Hackerrank is a good site to improve programming skill, I have added that on my list of site for coding practice
ReplyDeleteNice Tips. I learned a lot from reading this list. Thank you for sharing.
ReplyDeleteOne point I would like to add is pair programming with a more experienced developer, which gives you real time feedback, along with the added benefit of tapping into the experience, knowledge and skills of the experienced developer.
When you are coding, you have access to the suggestions and inputs made by the other developer.
When you are off the keyboard, you have the opportunity to shadow the other developer, examine how they approach the problem, ask questions to pick at their brain, etc.
All, which I strongly believe helps you to improve programming skills, write more readable code and become a better developer.
Worth reading this post.
ReplyDeleteThumps up....
There is one more thing I am concerned about: lack of enthusiasm. How would you encourage your fellow colleagues to read books, blogs and to do more coding if they are not interested in?
ReplyDeleteHello Alexander, lack of enthusiasm is a big problem but because of that you need a competitive culture where environment push you to do better. If people see, colleagues doing good and rewarded, it motivate them.
ReplyDeleteBesides Effective Java, "Java Coding Guidelines" and "The CERT Oracle Secure Coding Standard for Java" by Fred Long,Dhruv Mohindra,Seacord,Dean and David are also great books to follow.They provide recomendations along with complaint and non-complaint solutions,which I found imensely helpful.
ReplyDeleteHey,I want to know about restful web services as a beginner.How to start it ?
ReplyDeleteThat help a lot, thanks.
ReplyDeletethanks you, i will follow these tips to improve my skills
ReplyDeletecool!
ReplyDeleteThanks
ReplyDelete