OpenMp is the new de facto standard for shared memory parallel programming (SMP-programming). It provides a simpler way of writing parallel programs than the message passing paradigm (MPI), designed for distributed memory computers. By using OpenMP programs can easily be parallelized, by inserting a few directives in your code. Getting good speed-up is however not always easy, and for real applications speed, NOT simply parallelism, is what the user wants. In this talk we review some of the obstacles to good parallel performance, illustrated by example codes we have been working with. We also show some "tricks-of the-trade" on how to speed up your OpenMP code when hit by some of these performance hurdles. No prior knowledge of OpenMP is required, and only brief knowledge of the basic concepts of parallel programming is needed to follow this talk.