Architecting Large Software Projects: A Modular and Resilient Approach

Eskil Steenberg

Summary:

This video discusses Eskil Steenberg's philosophy for architecting large software projects by breaking them into manageable, dependable modules.

  • Key Principles: Focus on dependability, extendability, team scalability, and development velocity, while prioritizing risk reduction by using robust, long-lasting languages like C89.
  • Modular Design: Modules should act as black boxes, communicating only through clearly defined APIs, allowing individual developers to work in isolation and enabling easy replacement of internal implementations without affecting other parts of the system.
  • Layered Architecture: Complex applications are built in layers (platform, drawing, text, UI toolkits), with a core that handles the application's primary data (e.g., timeline for a video editor, events for healthcare).
  • Plugin Architecture: Core functionality is kept minimal, while various features and data types are added via a plugin architecture, promoting extensibility and allowing for diverse teams.
  • Tooling Importance: Building robust tooling (recorders, simulators, loggers) is crucial for testing and development, especially for large, complex systems with many independent components.
  • Format Design: The core of software development is designing robust data formats and APIs that are simple, implementable, and offer flexibility for future changes and diverse implementations.

Introduction & Core Philosophy [00:00:02]

This video details Eskil Steenberg's approach to structuring large software projects, aiming to break them into manageable, individual modules. It serves as a follow-up to a previous talk about enabling single-person software development. The goal is to apply this philosophy to complex projects like a video editor, a digital healthcare system, and a jet fighter, focusing on process over specific domain expertise.

Video Editor Example: Base Layers [00:11:05]

The talk begins by designing a basic video editor, demonstrating a layered software stack suitable for native applications with a UI.

Video Editor Example: Core & Plugins [00:24:50]

Houdini Node Graph
Houdini Node Graph [ 00:26:29 ]

A screenshot of Houdini, demonstrating its node-graph-based interface where "everything is a node" with parameters.

Healthcare System Example [00:44:58]

Jet Fighter Example [00:50:50]

Key Architectural Principles (Wrap Up) [01:03:43]