This is one of my favorite figures that shows how we do solution engineering in patterns & practices at Microsoft:
It all starts with a scenario. It has to be a meaningful problem. You can’t evaluate an architecture in a vacuum. In order for us to build useful baseline architectures, we need to pick the right scenarios that flex the right engineering decisions.
Patterns are simply problem and solution pairs. In our case, we tend to focus on application, architecture or solution level patterns.
Baseline architectures are skeletal applications. They’re just enough code to show you how to solve the key engineering decisions. The ideal baseline architecture is durable, but evolvable.
Application Block Library
These are reusable components. You can think of these as the cross-cutting concerns and the key application infrastructure hot spots.
Once we have a repeatable solution, the next step is to add tooling support to help users with some of the boiler-plate code, choose relevant options, and help configure the solution.