What are the main skills to be a performance consultant?
java, performance
Solution
I think that depending upon the particular client and problem at hand, you'll need to have excellent skills in algorithmic analysis and optimization. Is your problem at the math-algorithmic level, or is it at the Java-algorithmic level?
You'll also need to be very familiar with the implementations of JVM you'll be working with. Knowing the language and API isn't good enough: you'll have to know in intimate detail which language constructs to use in certain situations, and this can vary depending upon the specific JVM you are using. A profiler won't always reveal JVM-specific performance issues. As others have noted, the same JVM can behave differently on disparate harware.
Problem
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