A successful software system requires both, a strong software architecture and a great user experience (UX). Although being a quality attribute, UX is surprisingly often neglected by software architects. The characters of people working as UX designers and software architects are often very different, as well as their educational background. Thus, they often don’t understand each other very well and also avoid overly busy communication. This further results in lack of respect for the others’ profession and contribution to the overall success of a software system.
With the example of Google Maps, we show many architectural decisions necessary to achieve an excellent UX, as it is expected from Google: Google-like simplicity, a large number of powerful features, and Google-like integration of all kind of helpful services. We take our audience on a journey through features of Google Maps and always put on question, how they might be realized in Google’s architecture. Among those architecture decisions are also such ones that many architects would not even consider as architecture decisions. We talk about features like seamless panning and zooming, different information overlays and street view, route calculation, or integration with flight-booking systems. We cover architectural concepts like data structures for different level of details, loading data in tiles, global distribution of data centers and data delivery (content delivery networks), optimized data structures and calculations for live changes of routes, …. The journey through Google Maps is explained in episodes with many screenshots to be well understood. Each episode is accompanied with lessons learned about the relationship between architecture and user experience and how architects and user experience designers should collaborate.
We aim at increasing the mutual understanding between architects and user experience designers. To motivate both sides we use many examples from a well-known system, Google maps. By providing concrete guidelines and best practices we encourage concrete and intensified collaboration in order to build excellent software systems.