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.
Like Duolingo, but for Designing Software Systems. Tomo turns the whole topic into a game you play five minutes a day, until it actually sticks.
25 levels across 4 sections, about 50 minutes end to end, roughly 10 days at five minutes a day. It moves through Mapping User Needs to Functional Scope, Visualizing Interactions and Workflows, Structuring Data and Information Flow, and Ensuring System Quality and Coherence. It starts from scratch.
Free forever · No credit card · iPhone & Android

Key ideas in Designing Software Systems
- A user story links a specific persona to a clear need and a concrete business outcome ('As a... I want... so that...')
- Generic technical mandates hide who actually uses the feature and why they need it
- The 'so that' clause prevents building technical features that provide no actual human benefit
- Acceptance criteria define precise, unambiguous conditions that a tester or system test can verify as passed or failed
- Vague quality descriptors like 'intuitive' or 'fast' cannot confirm whether a feature is complete
- Specific limits, security rules, and error states provide clear boundaries for development
- A vertical slice cuts across UI, logic, and database to deliver a narrow but working piece of functionality
- Horizontal slices isolate a single architectural layer (like database-only or UI-only), which cannot be tested or used by an end user on its own
- Delivering vertically allows early feedback and proves the end-to-end architecture works
- The 'I' in INVEST stands for Independent: stories should be decoupled so teams can prioritize, schedule, and build them in any order
- Tight coupling between stories creates bottlenecks and makes sprint planning unreliable
- Stories with heavy dependencies should be refactored or combined to stand on their own
- Compound stories bundle multiple distinct user capabilities together, hiding complexity and ballooning estimates
- Words like 'and' or multiple verbs in the 'I want' clause often signal that a story can be split into smaller, atomic stories
- Splitting compound requirements lets teams deliver high-priority pieces (like basic search) before tackling secondary ones (like wishlists)
- The horizontal axis of a user story map represents time from left to right
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 Designing Software Systems 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.
Why is writing 'The system must support PDF exports' risky on its own?
Get it right to open this lesson and 24 more in the app.
Where Designing Software Systems takes you
- 1
Mapping User Needs to Functional Scope
- Writing Actionable User Stories
- Story Mapping the User Journey
- Defining System Boundaries with Use Cases
- 2
Visualizing Interactions and Workflows
- Wireframing and Interface Behavior
- Modeling Workflows with Activity Diagrams
- 3
Structuring Data and Information Flow
- Relational Data Modeling and ERDs
- Tracing Logic with Data Flow Diagrams
- 4
Ensuring System Quality and Coherence
- Non-Functional Requirements and Technical Integrity
4 sections · 8 units · 25 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
Designing Software Systems is taught in the Bestie style: your friend who just gets it. 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
Systems Analysis and Design
Learn to bridge the gap between business needs and technical solutions by mastering the art of designing robust, scalable software systems.
Building Your Life with AI
Move beyond basic chat prompts to build custom workflows, automate your side projects, and turn AI into a specialized partner for your unique goals.
AI Native Engineering
Build professional software from scratch using AI agents, even if you've never written a line of code. Learn to think like an architect and use the machine as your master craftsman.
Data Analysis from Excel to SQL
Transform messy raw spreadsheets into automated models, interactive dashboards, and robust database queries. Learn to clean data in Power Query, calculate metrics in DAX, and extract answers with SQL.
Dynamic Excel Workflows
Upgrade from fragile cell formulas to resilient, modern spreadsheet design. Learn how to leverage dynamic arrays, flexible lookups, and structured tables to build spreadsheets that never break when data updates.
Visual Systems for Digital Design
Bridge graphic artistry and product design by mastering layout rhythm, perceptual color palettes, and resilient interface systems.
Start Designing Software Systems today.
Download Tomo, search Designing Software Systems, and play your first lesson in under a minute.