There are two most common types of jobs in the area of software performance engineering. It is possible to be a part of a product development team and to tune a single product, or to work as a consultant for different customers and to tune multiple products.
These two types of work is essentially about the same thing. Both consist of [measure/profile, formulate a hypothesis of what can be improved, implement the improvement (one at a time), measure the effect, repeat until satisfied]. But there is an important difference! When you start working on the performance of an in-house product, you perform iteration 1, then 2, 3, etc, etc. Each subsequent cycle is a little bit more complicated. Starting from around iteration 20 you have to solve really hard puzzles. It may take days or weeks just to come up with a new optimization idea. The product evolves and this adds complexity too.
When you are a consultant, you are coming to a customer and doing the cycle for the iterations 1-10. 1-5 is impressive (picking the low hanging fruits), but can be a bit boring after a while. Sometimes, if a development team tried optimizing by themselves, you can do iterations 5-12. In rare cases of a good local performance team you go straight to iteration XX and do just a single iteration together, if you are lucky.
So, when doing performance engineering the choice is to either become a deep thinker, a wizard of solving puzzles, or to come here and there to fix few simple things.... Actually this dualism is not quite as simple. More on that in the next post.
These two types of work is essentially about the same thing. Both consist of [measure/profile, formulate a hypothesis of what can be improved, implement the improvement (one at a time), measure the effect, repeat until satisfied]. But there is an important difference! When you start working on the performance of an in-house product, you perform iteration 1, then 2, 3, etc, etc. Each subsequent cycle is a little bit more complicated. Starting from around iteration 20 you have to solve really hard puzzles. It may take days or weeks just to come up with a new optimization idea. The product evolves and this adds complexity too.
When you are a consultant, you are coming to a customer and doing the cycle for the iterations 1-10. 1-5 is impressive (picking the low hanging fruits), but can be a bit boring after a while. Sometimes, if a development team tried optimizing by themselves, you can do iterations 5-12. In rare cases of a good local performance team you go straight to iteration XX and do just a single iteration together, if you are lucky.
So, when doing performance engineering the choice is to either become a deep thinker, a wizard of solving puzzles, or to come here and there to fix few simple things.... Actually this dualism is not quite as simple. More on that in the next post.