software-design-philosophy

Apply John Ousterhout's design philosophy to code reviews and architecture decisions.

2|Updated Oct 13, 2025
One-click install
npx skills add https://github.com/Max-Loo/multi-chat --skill software-design-philosophy-max-loo
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: software-design-philosophy
Source: https://github.com/Max-Loo/multi-chat/tree/main/.agents/skills/software-design-philosophy
Command: npx skills add https://github.com/Max-Loo/multi-chat --skill software-design-philosophy-max-loo

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This guide distills John Ousterhout's software design philosophy to help teams reduce complexity, improve modularity, and make better architectural decisions during reviews, API design, refactoring, and decomposition.

Core Features & Use Cases

  • Provides a structured framework for evaluating module depth, information hiding, naming, and comments to guide design choices.
  • Supports code reviews, architecture discussions, API design, and module decomposition with practical principles like deep modules, pull complexity downward, and define errors out of existence.
  • Use Case: during a code review, apply the philosophy to identify hidden dependencies and propose refactors to achieve simpler, more robust interfaces.

Quick Start

Summarize and apply John Ousterhout’s design principles to guide code reviews, architecture decisions, API design, and refactoring in your current project.

Frequently Asked Questions about software-design-philosophy

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I reduce software complexity during code reviews?

Reduce software complexity during code reviews by applying a structured framework that evaluates module depth, information hiding, and naming to identify hidden dependencies and propose refactors for simpler interfaces.

What is the best way to design deep modules for API architecture?

The best way to design deep modules for API architecture involves applying principles like pulling complexity downward and defining errors out of existence to achieve simpler, more robust interfaces with strong information hiding.

How does information hiding improve module decomposition?

Information hiding improves module decomposition by encapsulating implementation details within deep modules, which reduces system-wide complexity and prevents hidden dependencies from leaking into external interfaces.

Can I use John Ousterhout's design philosophy for refactoring existing projects?

Yes, you can use John Ousterhout's design philosophy for refactoring existing projects by evaluating current module interfaces, pulling complexity downward, and redefining errors to achieve cleaner, more modular architectures.

When do I need structured software design guidance for architecture discussions?

You need structured software design guidance for architecture discussions when evaluating module decomposition, API design, or refactoring scenarios to systematically reduce complexity and make better modularity decisions.

Why does shallow module architecture increase code complexity?

Shallow module architecture increases code complexity because it exposes implementation details and fails to hide information effectively, leading to hidden dependencies and interfaces that require extensive manual error handling.