Understanding software systems is hampered by their sheer size and complexity. Software visualization encodes the data found in these systems into pictures and enables the human eye to interpret it. In this presentation we place software visualization in the context of reverse engineering and we present several examples of how it can help in understanding software systems. We also go behind the scene and discuss the principles that make for a good visualization.