Complex systems are of vast importance in the practical world as well as presenting many theoretical challenges. The measurement of system complexity is still imprecise. For many systems, their modular construction brings challenges in understanding how modules form and the emergent behavior which may result. In other systems, it is the development of encodings and communication protocols which allow complexity to increase dramatically. We take a broad view of these issues and then consider the nature of the system space which generates complexity. We show examples from cellular automata and applications of neural networks to data mining which suggest that complex systems often occupy simple structured sub-spaces. Finally, we look at the way modularity relates to networks and the implications for understanding human cognitive processing.