Many of us enjoy working on greenfield software systems, which are completely new systems that we can design from the ground up. Such systems do not have constraints based on prior work and do not need to integrate with existing systems. However, the new applications of today eventually become the legacy systems of tomorrow.
Software architects will often find themselves working on existing software systems and being able to do so well is a valuable skill. A legacy application is an existing application that is still in use but is difficult to maintain. There are a number of challenges with maintaining and using a legacy application.