Self-assembly refers to any thermodynamic process in which a bunch of particles (molecules, biomolecules, polymers, colloids) come together in solution to form an ordered structure. In living things it is a widely used and robust manufacturing tool: DNA, RNA and proteins spontaneously form three dimensional structures, and supramolecular structures emerge from protein aggregates with staggering degrees of ordering and specificity. By contrast, most synthetic systems in soft condensed matter do not assemble robustly. In this talk I will discuss experiments on simple systems that allow us to probe the physics and thermodynamics of self-assembly. We use systems consisting of small numbers (N ⇐ 12) of confined spherical colloidal particles to understand what physical parameters (interactions) determine how a system will assemble. We find that the probability of self-assembling a particular configuration can be understood in terms of the geometry of sphere packings. The geometrical model gives some insights into how phase transitions emerge as N approaches the bulk limit. At the same time, it yields some general insights into the design principles for robust self-assembly.