Building large-scale applications is a demanding process -- no matter which framework you use. The true challenge, however, lies in maintaining these applications. To guarantee maintainability, we need to focus on the following three aspects: comprehensibility, modularity, and robustness. The importance of comprehensibility, both in overall design and structure of an application, as well as, in terms of readability of individual code fragments may not be underestimated. Producing code that is easily understandable by others and your future self certainly improves the maintainability of a system. Modularity in turn is key in order to maximize reusability of individual software components. And lastly, a robust system helps us to avoid regression and further implies good test coverage and well-defined interfaces. Adhering to these principals will reduce development cost in the long run, which makes your boss happy, and more importantly improves software quality, which hopefully makes you and your teammates happy.