Variable neighbourhood search (VNS) is a metaheuristic, or a framework for building heuristics, based upon systematic changes of neighbourhoods both in descent phase, to find a local minimum, and in perturbation phase to emerge from the corresponding valley. It was first proposed in 1997 and has since then rapidly developed both in its methods and its applications. In the present paper, these two aspects are thoroughly reviewed and an extensive bibliography is provided. Moreover, one section is devoted to newcomers. It consists of steps for developing a heuristic for any particular problem. Those steps are common to the implementation of other metaheuristics.