Software comes in all types of size and shapes. Every team has different though process, works differently and the outcome of the software depends upon various factors such as client requirement, budget, time, use of available solutions to common problems etc. And if all goes well, the application does what the user expects it to do. But modern software can be complex, which can lead to complex code. And complex code is difficult to work with. What if we could make software easier to work with? What if we could translate complex architectural problems to recognizable patterns?