This guide presents the main features of serial optimisation for computationally intensive codes with a focus on the HECToR computing resources. From a user point of view, two main avenues can be followed when trying to optimise an application. One type of optimisations DO NOT involve modifying the source code (modification may not be desirable); optimisation consists of searching for the best compiler, set of flags and libraries. Another type of optimisations DO involve modifying the source code; in the first instance the programmer must evaluate if a new algorithm is necessary, followed by writing or rewriting optimised code. According to the these choices this guide presents optimisation as a problem of compiler and library selection, followed by a presentation of the key factors that must be considered when writing numerically intensive code.