aspose file tools*
The moose likes Java in General and the fly likes Best method to become efficient and effective in Java Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Soft Skills this week in the Jobs Discussion forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "Best method to become efficient and effective in Java" Watch "Best method to become efficient and effective in Java" New topic
Author

Best method to become efficient and effective in Java

Patricia McCormick
Greenhorn

Joined: Apr 23, 2009
Posts: 2
What do you advise as the most efficient and effective path to becoming a good/excellent Java programmer? Do you have a suggested reading list and practice methodology? Would this advice differ if the goal was to be a Java developer or architect?
Thanks very much
Jim Waldo
author
Greenhorn

Joined: Jun 22, 2011
Posts: 29
This is a very deep question. If I had a good, or easy, answer I'd be a hero (or at least a consultant). And it isn't for lack of thinking about this-- I've been worried about just this subject for a long time.

There aren't any particular books that are going to make you a good programmer or a good designer or a good architect, although there are many that might help. I just finished The Design of Design by Fred Brooks, which is an excellent set of essays on what it takes to be a good designer. I'm still sort of happy with my own essay on this topic, written for OOPSLA 5 years ago.

My own view (for those who don't want to slog through the essay) is that the best way to become a good designer (or a good programmer) is essentially to apprentice yourself to a good programmer or designer, and work with them until you master the craft. Programming (and system design) is as much art as it is science, and the way art is taught is by doing art, receiving criticism, and then repeating the cycle. We do the same thing with programming and system design-- you code (or design), it gets reviewed (sometimes in humbling ways), and we repeat. Different people will learn better from different masters, so if you aren't progressing you may need to find a different master. At some times it is like woodworking, at others it is like Zen. There is no single path, but you can tell the difference between those who have mastered the craft and those that are just journeymen.

So my advice, if you are looking to really improve, is to find someone who is a real master and ask him or her to look at what you are doing and give you feedback. If there is no one where you work, look for an open-source project that seems to work (or look for a new job). Read lots of good code, and try to emulate it. Reading books may help, but it won't get you there. Only practice, and patience, will.

Sorry if this sounds overly mystic, but there is something mystical about good programs and good design. Good luck in your quest...


Jim Waldo
Author of Java:The Good Parts
Patricia McCormick
Greenhorn

Joined: Apr 23, 2009
Posts: 2
Hi Jim,
Thanks very much for the good advice and references. I particularly like the idea of working on an open-source project and think that might provide some of the practice and feedback I definitely need. Thanks again!

Bear --
Sorry for my subject title, I modified the subject, hope it's more usable to others.
Pat Farrell
Rancher

Joined: Aug 11, 2007
Posts: 4659
    
    5

Don't let Mr Waldo hear this, but I don't believe you can become highly efficient and effective in any tool by reading a book or article. I believe that the only way is to work in a group with serious code reviews and a mentor that really knows how to do it. Sit at the feet of a great teacher.

One might be able to become really good working solo after many years, depending on your motivation and effort. But by then Java will be replaced by some other cool language.
Jim Waldo
author
Greenhorn

Joined: Jun 22, 2011
Posts: 29
Pat Farrell wrote:Don't let Mr Waldo hear this, but I don't believe you can become highly efficient and effective in any tool by reading a book or article. I believe that the only way is to work in a group with serious code reviews and a mentor that really knows how to do it. Sit at the feet of a great teacher.

One might be able to become really good working solo after many years, depending on your motivation and effort. But by then Java will be replaced by some other cool language.


We are actually saying the same thing...you just did it in a more compact fashion...
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Best method to become efficient and effective in Java