1. Use hibernate instead of jdbc sql. This will be extremely help to deal with the change of requirements.
2. Nice convention is necessary. The Java Class should have the same pre-file name with the Jsp page; Should put all those similiar function codes in one place(e.g. pojo in folder Model , dao in Dao, controller in Controller ,service in folder service), put all the constants in one file(it's really helpful when you have to change them)
3. Test is important( need to plan the test before you commit the codes in production)
4. Version control. Currently, the projects running on three places. The development, staging and production.
The production running the stable codes retrieved from trunk, the staging always have the tested codes from development environment; development environment have the latest codes(some of them may be part finished - not stable).
The 100% completed codes will be moved to staging every day that the testers can test on them. The well tested codes in staging will be move to trunk for future deployment
5. Freemaker is good for organizing the emails to customers
6. Quartz always work correctly for the cron job
7. It will improve the speed to developing GWT by dividing the codes into multiple modules
8. to be continue...