First thing is to have a global vision of the system that is being implemented. A lot of premature optimization occurs when programmers look at the problem from a narrow perspective. For example, implementing security in specific areas instead of building security as a global concern for the application.So stress needs to be in program design than just plain coding.
Peer programming with right candidates can help improve this situation. As far as tools go, We had used the built-in Netbeans profiler and that was very useful in finding classes that needs to be re-visited in terms of performance/optimization.An excellent example that helped us is here.
The first thing I would do is to make it a rule to avoid premature optimization. I would then be looking at getting a profiler like one of the ones here: java-source.net/open-source/profilers and attaching that to the app. This will tell you what should and should not be optimized.
I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.