If we start with the architecture of new software, we must think about many things. I use a list of 23 architectural aspects, like persistence, communication, translations, archiving, scaling, Security, Exception handling etc., to guide my design. By taking an evolutionary approach, we can tackle these aspects incrementally and allow us to learn a lot about the problem to be solved and possible solutions before deciding. Instead of a big-design-up-front based on many assumptions, we create options among which we can choose the optimal one as late as possible. After this presentation, you will know the architectural aspects that are important when working on architecture and how to implement them in many small steps.