So what should they learn and where to start;
- The request & response lifecycle,
- State on AS. How does Session works.
- Servlet's and Filter's
- JSPs, JSTLs and Custom Tags
- A simple blogging application can be created with the above.
- The "Dependecy Injection" Pattern
- Creating & managing Beans with Xml or Annotations
- Proxying and Interceptors
- JDBC Support
- We can improve our app. with the above. Move the data to spring beans, and actually use database at this point.
- Although we don't use the MVC it could be introduced here and see how much it will help with our app.
- The components
- JSF Lifecycle and how its manupilated with immediate attribute...
- How facelets add to JSF
- At this point we can improve app. with the JSF
- Introduce the ajax and ajax enabled components
- How to create custom JSF components
- How state machine logic helps the navigation
- New scopes the webflow introduces
- Improve the app.
- ORM concept
- JPA annotations
- Startegies to manage the hibernate session
- Improve the app.
- We are using JasperReports which I don't know much about that at the moment :)
After this point I am thinking that new requirements could be introduced and the team could work on them as pairs. Pairs will be swapped often and there could be nightly reviews.
As for learning these one also needs some nice examples, one is mesir developed by my buddy Mert. It's a showcase of most of the technologies I wrote above.
For "Dependecy Injection" pattern Martin Fowler has this paper.
As for me Spring's and Hibernate's reference and api documentation is pretty solid.
For JSF Richard Hightower's "JSF for Non Believers" and "JSF fits facelets like glove" are quite fun to read articles.
On extreme programming practices here is a article at objectmentor site which demonstrates a session between two programmers.
Although pretty boring, working for sun certificates are helpful and good to learn the basics (SCJP and SCWCD).
These are what comes to my mind.