Win a copy of Design for the Mind this week in the Design forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Best method to become efficient and effective in Java

 
Patricia McCormick
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 29
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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...
 
Patricia McCormick
Greenhorn
Posts: 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 4678
7
Linux Mac OS X VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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
Posts: 29
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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...
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic