Software System Design — Intro

A pragmatic perspective of designing software systems

Joseph Casey
2 min readMay 16, 2021

--

Preface

This series was written as a way to solidify and share my experience and perspective on system design interviews for software developers. Like many, I initially had reluctance to prepare myself for the interview spectacle of LeetCode and System Designs. Through years of practical experience, I’ve come to light in understanding the great value that comes out of having colleagues who were willing to spend their time preparing for these types of interview questions, and I hope this series will impart a new perspective to anyone reluctant to shoulder the preparatory burden of interviewing.

Introduction

Like many procedures in business, designing a software system is an Extract, Transform, and Load (ETL) procedure. It demonstrates a developer’s ability to extract business requirements from product owners, transform the requirements into structured technical requirements, and, for analogical consistency, loading the cumulative technical requirements into a clear and concise visual design that enables the company at large to organize and build the software system.

Article Structure

This series follows a standard layout for each article which aims to keep content to a minimum and aid readers with long-term retention of information. For each stage of designing a software system, readers will be presented with the following information:

  • Purpose
  • Goal
  • Article Topic
  • Recommendations
  • Interviews vs Reality
  • Closing Notes

Next Article

The series starts with an overview on collecting and synthesizing the technical requirements when designing a software system:

Software System Design — Collating Business Requirements

--

--