Good design relies on knowledge of the technologies in use and an appreciation of how they best fit together to solve particular problems. Technologies are comparatively straightforward to learn, and there are many sources from which you can obtain information and insight, such as books and training courses. Gaining an appreciation of how best to apply these technologies is more difficult. By studying design patterns, particularly those targeted at a specific platform such as J2EE, you can accelerate your understanding of the design issues in particular environments. Design patterns also provide you with a set of solutions to these issues that can be applied as part of your application design.