Following recent calls for greater attention to theory in software engineering, this paper reviews five theories that provide insight into software engineering behavior — Complexity Theory, Sensemaking-Coevolution-Implementation Theory, the Theory of Boundary Objects, Transactive Memory Theory and the Theory of Cognitive Biases. Rather than providing contradictory explanations, these theories apply at different units of analysis and may therefore be used simultaneously to understand the same software engineering phenomena.