Over the last two decades, computationally docking potential protein ligands (e.g., enzyme inhibitors) has become one of the most widely used strategies in computer aided drug design. While these docking methods were developed, some effort focused on their user-friendliness up to a point where they can be used by non-experts with nearly no training, somewhat hiding the underlying theory. However, basic knowledge is still required to avoid pitfalls and misinterpretations of docking experiments. Over the years, we have collected the common mistakes and necessary information for the proper use of docking programs. In this review, we compiled this data for non-experts in the field. In a first section, we present the theory of docking and scoring approaches as well as their limitations, followed by the most recent progress towards the consideration of protein flexibility, water molecules, metal ions, and covalent drugs. In a second section, we describe what we believe are the necessary steps to ensure optimal docking. More specifically, we present the selection of a docking program, available databases of small molecules, macromolecules and biological data, the necessary steps for the preparation of proteins and small molecules, and finally post docking analysis techniques. In the following sections, we compile the sources of biases and describe docking to nucleic acids.