Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
System Design - Creating a functional design
Rating: 4.5 out of 5(31 ratings)
255 students

System Design - Creating a functional design

Functional Design - the first step to being a software architect/principal engineer
Created byAkshat Verma
Last updated 5/2022
English

What you'll learn

  • Create a functional architecture for large products or platforms
  • Define components and services using single responsibility principle
  • Component Design
  • Minimize service sprawl

Course content

5 sections8 lectures2h 18m total length
  • Introduction15:15

    How is an architect different from a developer? This lecture covers how an architect, responsible for functional design, needs to think differently from a developer.

Requirements

  • Some programming experience

Description

The ability to create an end-to-end system design differentiates a developer from principal engineers and architects. One of the most important aspects of system design is the ability to create a functional design outlining all the components and how they work together. This course provides a step-by-step approach to create a functional design for a system using single responsibility principle and architectural patterns.

In this course, you will learn how to

1) Define the users of a platform you want to build

2) Understand the most important problems for the users the platform is meant to solve and define the core functions that solve this problem.

3) A depth-first based approach to design the core functions one-by-one.

4) Define the components and their integration framework using the single responsibility principle.

5) Understand the difference between frontend and backend design and the need for a BEFE layer like GraphQL.

6) Detailed design of each component

7) Creating an end-to-end system view from the component design.

We will use a running example throughout this course to apply the approach described in this course. There are a set of assignments that every student should complete as part of this course. Finally, it is important for you to apply the learnings in your day-to-day work and improve your system design skills with time.

Who this course is for:

  • Developers who want to learn system design and up-level to principal engineer/architect