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.
Free forever · No credit card · iPhone & Android

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
You've tried the other tabs
Thirty open tabs. Four facts you actually kept.
You watched. You nodded. By Sunday it was gone.
One answer, then back to scrolling.
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.
Here's what playing it feels like
A real question from this course. Take your best guess.
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.
Where How Great Software is Structured takes you
- 1
Building Modular Pieces
- Dividing Responsibilities
- Hiding Secrets Behind Interfaces
- 2
Connecting the Components
- Managing Coupling and Cohesion
- Composing Behavior Without Fragile Hierarchies
- Designing for Errors and Edge Cases
- 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.
Tomo is in ChatGPT
Tomo is also a ChatGPT plugin: the same playable courses, built and played inside your chat.
Add Tomo to ChatGPT- What to ask
- “Make me a Tomo course on black holes.” “Turn this chat into a Tomo course.”
- What you get
- Quick questions with instant feedback, hearts and stars, ready to play in about a minute.
- Where it goes
- No sign-up to start. Connect your Tomo account and your streak carries on in the app.
You pick the voice
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.
More Technology on Tomo
Building Web Apps with Angular
Construct dynamic, modern web interfaces using Google's Angular framework. Learn to bind data, craft reusable components, and fetch live network content with confidence.
Building with Next.js
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.
Building Apps That Stick Together
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.
Practical Mechanical Design
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.
Software Engineering: Systems & Science
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.
Designing Software Systems
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.
Start How Great Software is Structured today.
Download Tomo, search How Great Software is Structured, and play your first lesson in under a minute.