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 stack shots)
- database knowledge (to avoid/detect common performance mistakes: indexes, etc.)
- 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