Good article here on Javablogs today:
Do you know how to use a hammer? A screwdriver? A saw? Almost certainly you do. Does that mean you can build a house? Well maybe, but unless you have previous experience at building houses, I don't think I'd want to live in the one you built. Knowing how to use the tools is not the same skill as being able to build a house.
So why is it that so many people seem to think that knowing how to use a profiling tool means you know how to tune an application? For sure, having a profiler as opposed to not having one makes tuning much easier, just like having a hammer as opposed to not having one makes building a house much easier. But the tool increases your productivity, it doesn't enable the ability. You don't suddenly have the ability to build a house because you know how to use a hammer; you don't suddenly have the ability to tune an application because you know how to use a profiler.
That's a very good point. Another thing I see a lot of is assumptions - you get to a site where there's a performance problem, and the customers tell you (with complete assuredness) what's too slow. I find that 9 times out of 10, they haven't even run the profiler - they've just made a guess about the problem. However, the author of that article is correct - while profiling is useful, just using the profiler won't tell you everything. Sometimes you have to tune the memory configuration, and that only shows indirectly via profiling. There are plenty of other similar cases - and they vary by application/language/environment/platform.