If I want to become a Performance Consultant for Java applications and systems, what are the main skills I need?
- long experience with Java itself
- using a Profiler (or StackShots)
- database knowledge (to avoid/detect common performance mistakes : indexes...)
- Caching library
- Java concurrency
Do you agree on the importance of these?
What else would you add?
UPDATED from answers:
Additional Skills:
- Garbage Collection, and tuning
- efficient Java code
- Design (high-level vision)
- UI technologies (Javascript, DOM, CSS, Swing, SWT)
- Networking understanding (also used for Ajax)
- Algorithmics, Big O
- Hardware understand for Scaling
Mindset (offered by several answers, although I didn't ask for it):
- Analytical (really measure)
- Pressure-resistant
- People/Political skills