In software development, change is the only constant, and most of the effort during a software system life cycle is spent to support its evolution. However, software evolution is mostly driven by perfective and corrective maintenance, while preventive maintenance, e.g., improving code quality or the system’s organization, is rather insufficient of left for later by developers. Consequently, developers may introduce design violations, code smells, or bugs, that will persist in the system. In this presentation, we will: (i) visit related work on the importance of checking and removing code smells early in the software lifecycle; and we will (ii) show recent work on recommending code transformations for developers to automatically correct code smells and lead the software system to a more desirable state.