The House That Jack Built
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.
There's a number of different types of consulting I do for customers.
Mentoring is one. Architecture reviews are another. A third is performance
management, where I get involved early on in a project and ensure that
performance goals are met over the project lifetime. But one type
of consulting is quite different: it's called fire-fighting. It's when
a project is in "panic" mode, and deperately needs fixing in a short
time. Inadequate performance is only one of the possible reasons for a
project to get into "panic" mode, but that's the panic mode I get called
in to handle. One of my first questions is "What tools do you have?", so
that I know what to bring with me. I never have to bring a profiler. Every
site has one. They also know how to use it. At least one of the developers
will have been on the profiler vendor's training course. But they still
got into "performance panic" mode. It's not the developer's fault.
It's down to the difference between knowing how to use a profiler
and knowing how to performance tune. It's just another skill, nothing
special about it. You can
acquire performance tuning skills through training, just like you
can acquire most other skills through training.
So please, try to remember that if you want to build a house it's
not enough to know how to use a hammer, you need to know house building
skills; if you want to performance tune an app it's not enough to know
how to use a profiler, you need to know performance tuning skills.
And yes, I do know I'm ranting a bit. It's because I can see yet another
project that has decided all they need to know about is profilers
and everything will be okay. And I know that in a couple of years,
when the project is due to deploy, they will be having a fire-fight.
I don't rejoice that I'll have more work in a couple of years. I
get annoyed because our industry refuses to improve it's practices
when improvement is possible.