Labels: kodewerk, java, performance, tuning, course, crete

There are times when a new piece of information initiates a sea-change in your thinking and the KodeWerk course has for me been one of these events. Forget everything you thought you knew about writing performant code and prepare yourself to be astounded at how much you never knew!
I've met Kirk on a number of occasions before at Conferences and have always enjoyed his presentations. So when the opportunity came up to take his four day course I jumped at the chance. I would have been eager to attend this course wherever it was held, however Crete really does make an excellent location and since it is held off-season, even with the flights it works out cheaper than it would if it were located in central London!
The course begins by taking you through the first principles of performance tuning, teaching you how to define the problem that you are looking for and ways to reproduce the problems that you are seeking to resolve. This introduction gives you a solid base on which to build your knowledge.
The second day covers recognising different behaviours in the JVM and what these behaviours may mean, you are then taught about quick changes that can be made to the JVM & Garbage Collector that can be used to confirm or rule out your suspicions. Sometimes these quick changes may be enough to get your code running quickly, more often though you need to start looking a little deeper.

On this momentous day the usage of various free tools is covered and how they can be used for investigating performance issues in more detail to quickly locate the root cause of your problems. Kirk quite rightly shys away from using the commercially available tools in his course, since combinations of the various free tools are able to give you the same pieces of information without costing you money. Once you understand the basic principles involved you will be able to use the commercial tools just as easily as the free ones if you should wish.
The final day covers aspects of benchmarking and common sources of performance issues including threading/locking & serialisation. The course ends with a 'real world' exercise in performance tuning a web-app, this allows you to put into practice everything you have learned over the preceeding days and brings into focus how you can use the techniques you have learned & apply them to your day-job.
Overall I would highly recommend this course, we most certainly will be sending other employees of ours to the next one in September, the information learned will be invaluable both to ourselves and our clients.


