Synthetic gene circuits are designed to program new biological behaviour, dynamics and logic control. For all but the simplest synthetic phenotypes, this requires a structured approach to map the desired functionality to available molecular and cellular parts and processes. In other engineering disciplines, a formalized design process has greatly enhanced the scope and rate of success of projects. When engineering biological systems, a desired function must be achieved in a context that is incompletely known, is influenced by stochastic fluctuations and is capable of rich nonlinear interactions with the engineered circuitry. Here, we review progress in the provision and engineering of libraries of parts and devices, their composition into large systems and the emergence of a formal design process for synthetic biology.