Software used to be something that you walked into a Babbage’s store in the mall and bought in a box. That’s clearly no longer the case. The tech industry’s products and services have grown massively in scale and complexity since that time, and we’re now at a point where no one person can truly understand the systems we’re building entirely. Let’s actually take a look at what we can learn from the academic field of complexity theory: what are the essential characteristics of “complex systems”, and what changes do they imply we need to make in our approach to building and delivering the software systems of today?