Additionally, supporting plugin Beans is a very good thing to do. An example would be a mail server that supports plugin Beans so people can easily change the behavior of the mailserver, without having to muck around in your code. Always think about making it easy on the user to upgrade/change the functionality in your program.
Here's an example of why this is A Good Thing: If you write an email client with a great GUI, I might want to come along and write some classes that use all of your code EXCEPT the GUI code. Instead, I want a commandline email client. If you used the Model-View-Controller design pattern, and kept "maximum code reuse" in mind, all I would need to do is create a different View/Controller for the program.
Check out the PatternsLinks page (http://www.jos.org/wiki/view/main/PatternsLinks) to find books on these patterns. "Design Patterns" is a popular book that discusses MVC and many other OO design patterns.
--MasonZhwiti (4/20/98)
Try to program in a legible way, using human-sounding variable and class names. Provide comments and approaches used within the code, and try to JavaDoc your classes.