Over the years we have learned and applied several software design principles. Many of these principles have been very useful and have served as guiding principles and, at times, as guard rails to develop better software. However, the principles do not work in isolation. They interplay with each other and sometimes even against each other.
In this presentation we will look at the trade offs in applying well known design principles within the confines of the architectures that applications may be based on.