What approach should I take to understand a large J2EE application if I don't know any of the frameworks involved yet?

design-patterns, hibernate, java, spring

Solution

I am assuming that the "superb programmers" are still around, so your best bet is to use them. While not every developer is great at explaining things, they should be able to give you an overview of the application so that you can understand what each framework provides and how they work together.

The first thing to accomplish is WHAT, not HOW. Get guidance and hopefully design documentation that will allow you to understand what each piece of the puzzle provides to the solution as a whole.

Once you have an understanding of what each piece/framework/tool contributes, then it will become much easier to start understanding how they do it. Again, one on one with the developers to get you started will help a lot. Over time, as you become more familiar with the code, you will start understanding how these frameworks work, and what they are capable of.

Courses and documentation will of course help, but nothing replaces a warm body (a competent one) to help you understand something, even more so if they created that something.

Once you understand the usage of these frameworks in your own applications, you will find it much easier to start picking up other features that you may be able to utilize in the future.

NOTE: Also, with courses, you may want to check to make sure that they address the specifics of the framework that you are using. Spring is quite extensive, and learning Spring MVC may be of little use to you (in your current position) if your company exclusively uses other frameworks for web development, while Spring DI (the core) and data access may be what you actually need.

Problem

I started working in my company 5 or 6 years ago as a junior Java developer, and I got to do some J2EE programming using Servlets and Jsp. I didn't spend much time in that position and I went to work with databases, so I distanced myself from the software development world. Now I've had to go back to Java programming, and I was given a Web application to develop and maintain. When I opened up the project, I understood absolutely nothing. The application was built using many high level frameworks like Spring, Hibernate, Wicket, Axis for Web services and Maven for building the project. The people that worked in the application are superb programmers, so I am certain that they have applied the patterns and concepts properly, but right now it's just too many things that I've never seen before. What can I do in order to get up to date with current frameworks and technologies effectively? I know Java 1.4 fundamentals fairly well and I have a good understanding of design patterns and object oriented design, but I know nothing about those frameworks I mentioned before. I'd really appreciate some suggestions from people that have a better understanding instead of blindly reading the first book I find about these different subjects. Many thanks in advance for your help.

Original source