Learning About Common System Design Patterns

Learn about common system design patterns; model-view-presenter, object-oriented architecture, and domain-driven design architecture.

In this chapter, we’ll cover two of the most important technical skills that a TPM possesses: system design and architectural landscape design. These are the levers we use to influence the technical direction of our organizations.

TPMs typically start out in their career focusing on system designs in individual projects and influencing the right design for the requirements and services. As they grow, they start looking at the architectural landscape around their projects and programs to see patterns of opportunity and areas of risk. They start to influence the teams around them and the organization as a whole.


We’ll explore system designs and the architectural landscape through the following:

  • Learning about common system design patterns

  • Seeing the forest and the trees

  • Examining an architectural landscape

Let’s dive in!

Overview

As a TPM, we split our time between the high-level scope, which spans across multiple systems, and the details of a specific feature design. It’s due to this breadth and depth that system design is one of the most important technical skills a TPM can have. It’s important enough that it shows up in most interviews for the bigger tech companies. We’ll cover the aspects of system design that we need to consider to ensure that our design is well thought out.

When we think about system design, we often conjure up a diagram of multiple services, each covering a single function or area of concern. However, system designs come in many different sizes and complexities. On a smaller scale, a feature design, such as a feature to add a new contact to our contact list in the Mercury messenger app, is its own system design. Somewhere in between these is a system design for an entire desktop or mobile application.

As a TPM, we need to be prepared to work with a design at any of these levels of complexity. Many designs will comprise more than one design pattern, especially for complex systems. The names and behaviors of these patterns may be used in the designs themselves and therefore need to be understood by a TPM. Knowing the behaviors and key features of design patterns will also make evaluating them more effective. As such, we’ll walk through some of the more predominant system design patterns (often referred to as architectural patterns) that are in use today.

Model-View-Presenter

The model-view-presenter (MVP) design pattern is a variant of the model-view-controller (MVC) pattern. Where MVC is popular in client-server applications, MVP is used often in desktop applications:

  • The model is the data model of the application. All the data manipulation and storage happens in this layer.

  • The view is the user interface at the top of the diagram. This displays all of the data in the application in ways that make sense to the user.

  • The presenter sits in between the model and view and acts as the connecting layer between them. The user interacts with the presenter, usually through input fields in the view, such as text boxes and buttons, which trigger events. The events live in the presenter and make changes in the model based on the event that occurred.

Let’s try to understand this better with the help of an example:

Get hands-on with 1200+ tech skills courses.