TechnologyExplain Like I'm 5Beginner
How Great Software is Structured, a free technology course on Tomo

How Great Software is Structured

Learn the foundational principles of software design that turn messy, fragile code into modular, reliable systems. Discover how to separate responsibilities, hide complexity, and evolve codebases without breaking them.

Like Duolingo, but for How Great Software is Structured. Tomo turns the whole topic into a game you play five minutes a day, until it actually sticks.

21 levels across 3 sections, about 42 minutes end to end, roughly 8 days at five minutes a day. It moves through Building Modular Pieces, Connecting the Components, and Maintaining and Evolving the System. It starts from scratch.

21 bite-size levelsAbout 5 minutes each

Free forever · No credit card · iPhone & Android

Barnaby the Beaver, the guide who teaches the How Great Software is Structured course
How Great Software is Structured
with Barnaby the Beaver
21
Levels
3
Sections
5
Min/day
What you'll learn

Key ideas in How Great Software is Structured

  • When one class or module manages multiple jobs, editing code for one job can accidentally alter or disrupt variables and steps used by another
  • Bundling unrelated tasks together creates hidden dependencies between features that should have nothing to do with each other
  • A component's responsibility is best measured by the real-world source of change that would force you to rewrite it
  • Database logic, visual formatting, external messaging, and calculation rules all change for completely different external reasons and belong in separate modules
  • Small, single-purpose functions let you write targeted automated tests to verify each piece of logic in total isolation
  • When a bug occurs in a modular system, the error stack trace immediately points to the specific focused component that failed rather than a giant block of mixed logic
  • Using words like 'And' or multiple verbs in a name is a clear giveaway that a component is bundling multiple distinct jobs
  • Vague catch-all words like 'Processor', 'Manager', or 'DataHelper' often hide a junk drawer of unrelated responsibilities
  • A clear, focused component can usually be named with a single concise noun or verb-noun pair describing its exact role
  • High-level coordination functions should read like a plain-language summary of business rules, delegating technical mechanics to helper modules
  • Low-level implementation details (such as raw SQL queries or HTTP headers) obscure the overall business flow when mixed directly into coordinator logic
  • Callers should only tell an object what goal to accomplish, not manage the internal steps to get there
  • Hiding mechanics like network ports or byte streams lets the object change its implementation without breaking calling code
  • Exposing a raw data field forces every caller to depend on that exact data structure
  • If you ever want to change a list to a map or a database query later, every piece of external code referencing the raw field will break
  • An interface contract specifies what goes in and what comes out without dictating how the work happens
Why not just Google it

You've tried the other tabs

Wikipedia

Thirty open tabs. Four facts you actually kept.

YouTube

You watched. You nodded. By Sunday it was gone.

ChatGPT

One answer, then back to scrolling.

Online courses

Eight weeks. You meant to finish. You didn't.

Tomo gives How Great Software is Structured the Duolingo treatment: levels, streaks, and quick quizzes that test what you just learned. That game loop is what the tabs above never had, so it's the one you actually finish.

Try a question

Here's what playing it feels like

A real question from this course. Take your best guess.

One Job for Each Toy

What happens when you bundle totally different tasks together inside the same module?

Get it right to open this lesson and 20 more in the app.

Course map

Where How Great Software is Structured takes you

  1. 1

    Building Modular Pieces

    • Dividing Responsibilities
    • Hiding Secrets Behind Interfaces
  2. 2

    Connecting the Components

    • Managing Coupling and Cohesion
    • Composing Behavior Without Fragile Hierarchies
    • Designing for Errors and Edge Cases
  3. 3

    Maintaining and Evolving the System

    • Recognizing Design Decay and Code Smells
    • Refactoring Toward Simplicity

3 sections · 7 units · 21 levels. Built to play, not to enroll.

New

Tomo is in ChatGPT

Tomo is also a ChatGPT plugin: the same playable courses, built and played inside your chat.

Add Tomo to ChatGPT
How it's taught

You pick the voice

This course
Explain Like I'm 5

How Great Software is Structured is taught in the Explain Like I'm 5 style: no big words. promise.. Want a different feel? In the app you can spin up the same topic in any of Tomo's teaching styles. Same facts, totally different vibe.

Keep going

More Technology on Tomo

Building Web Apps with Angular course icon

Building Web Apps with Angular

Storyteller

Construct dynamic, modern web interfaces using Google's Angular framework. Learn to bind data, craft reusable components, and fetch live network content with confidence.

12 levels24mBeginner
Building with Next.js course icon

Building with Next.js

Bestie

Transform your React skills into production-grade full-stack web applications. Learn how Next.js handles routing, server rendering, streaming, and data mutations without complex backend setups.

12 levels24mBeginner
Building Apps That Stick Together course icon

Building Apps That Stick Together

Professor

Move beyond writing code to building complete systems. Learn how to connect your logic to the real world, manage data flow without the mess, and make confident architectural choices that stop decision fatigue.

170 levels5h 40mIntermediate
Practical Mechanical Design course icon

Practical Mechanical Design

Bestie

Bridge the gap between textbook mechanics and hardware that actually works. Learn how to prevent binding, design joints that resist fatigue, and tame thermal expansion in real mechanisms.

11 levels22mIntermediate
Software Engineering: Systems & Science course icon

Software Engineering: Systems & Science

Professor

Bridge the gap between working code and rigorous software systems. Explore the cognitive mechanics of human-computer interaction, the internal machinery of modern databases, formal theoretical computer science, and empirical research methods for evaluating software in practice.

21 levels42mIntermediate
Designing Software Systems course icon

Designing Software Systems

Bestie

Learn how to turn messy business problems into clear, structured software blueprints. Master user story mapping, interactive wireframing, process modeling, and data architecture to design systems developers can build with precision.

25 levels50mBeginner
Start free

Start How Great Software is Structured today.

Download Tomo, search How Great Software is Structured, and play your first lesson in under a minute.