// Connect unfamiliar concepts to familiar ones through structural analogy. Use when: (1) asked to explain technical concepts to non-experts, (2) accurate terminology creates comprehension barriers, (3) explaining abstract or invisible mechanisms, (4) teaching counterintuitive behavior, (5) user understood words but not meaning.
| name | connection-bridge |
| description | Connect unfamiliar concepts to familiar ones through structural analogy. Use when: (1) asked to explain technical concepts to non-experts, (2) accurate terminology creates comprehension barriers, (3) explaining abstract or invisible mechanisms, (4) teaching counterintuitive behavior, (5) user understood words but not meaning. |
Connect unfamiliar concepts to familiar experiences through structural mapping, matching relationships rather than surface features to build understanding that transfers across domains.
When bridging concepts through analogy:
Identify what needs bridging - Examine what the audience doesn't understand, pinpointing whether it's an invisible process, abstract relationship, technical mechanism, or non-intuitive behavior.
Find familiar territory - Search for experiences the audience already has that share structural similarities, drawing from physical systems, social situations, routine activities, or natural phenomena they navigate intuitively.
Map relationships, not features - Match how elements relate in both domains rather than whether components look similar. Focus on cause-effect chains, functional roles, interaction patterns, constraints, and dependencies.
Make the mapping explicit - Explain which parts of the familiar domain correspond to which parts of the unfamiliar concept. Walk through the analogy step by step rather than assuming inference.
Acknowledge where bridges end - Identify and state where the analogy breaks down, what aspects don't map cleanly, and what conclusions it might suggest that aren't valid.
Build multiple bridges when needed - Use different analogies for different aspects of complex concepts when a single analogy can't capture all important relationships. Explain how multiple analogies complement each other.
Refine progressively - Start with the simplest version that captures the core relationship, then add nuance and detail as understanding develops. Layer complexity onto the familiar foundation.
I'm explaining how our application communicates with external services through API endpoints, and the audience understands business processes but not technical implementation. Instead of describing HTTP methods and JSON payloads, I map the concept to restaurant service: "An API endpoint works like a restaurant waiter. When you want something from the kitchen, you don't go into the kitchen yourself. You tell the waiter what you want from the menu, they take your order to the kitchen, the kitchen prepares it, and the waiter brings back what you requested. The waiter is the interface between you and the kitchen." I map the relationships explicitly: the customer is our application, the waiter is the API endpoint, the kitchen is the external service, the menu is the API documentation showing what you can request, placing an order is making an API call, and receiving your food is getting the response. The structural correspondence is about controlled access and request-response patterns, not about food or people. I acknowledge the limit: unlike a waiter who might interpret vague requests, APIs require precise formatting. This bridge helps them understand why we can't just "get the data directly" and why API documentation matters, because they already understand why you need to order from the menu rather than making up dishes the kitchen doesn't prepare.
I'm introducing Git branching to a team that collaborates on documents but hasn't used version control, and they're confused about why we need branches instead of just editing the main document. I map to a familiar process they already use: collaborative document editing with tracked changes. "A Git branch is like making a copy of a shared document to propose changes. When you want to suggest edits to a team document, you make a copy, edit your copy however you want, and then show the changes to the team for review. While you're editing your copy, other people can edit their own copies independently. Eventually, you compare your version to the original, discuss the changes, and merge the good parts back into the main document." The mapping: the main branch is the canonical document, creating a branch is making a copy for your proposed changes, commits are saving versions of your edits, and merging is incorporating accepted changes back into the main document. The structural relationship is about parallel work with eventual integration. I acknowledge where this breaks down: unlike document copies where you might just replace paragraphs, Git merge requires reconciling line-by-line changes, and unlike casual document copies, branches maintain connection to the original. But this bridge helps them understand why branches enable parallel work without people interfering with each other, why you need to "merge" rather than just replacing files, and why merge conflicts happen when two people edit the same section, because they've already experienced these dynamics with document collaboration.
I'm explaining why adding database indexes speeds up queries but slows down writes, and the audience understands data retrieval conceptually but not the mechanics of indexing. I map to a physical book index: "A database index works like the index in the back of a textbook. Without an index, finding information about a specific topic means reading through every page until you find it. With an index, you look up the topic alphabetically, find the page numbers, and jump directly to those pages. The index makes finding information much faster." The mapping: the database table is the book's content, the index is the alphabetical listing at the back, indexed columns are the topics the index covers, and looking up values is finding page references. The structural relationship is about trading space and maintenance cost for lookup speed. I extend the analogy to explain the write cost: "Every time you add or change content in the book, you also need to update the index if the changes involve indexed topics. That's why writes are slower with indexes. If you indexed every word in the book, finding anything would be instant, but updating the index would take forever." I acknowledge the limit: book indexes are manually created and don't automatically update, while database indexes maintain themselves, but this difference doesn't affect understanding the core trade-off. This bridge helps them understand why we can't just index everything, why certain columns benefit from indexing more than others, and why the query planner might not use an index for small tables, because they already understand that you wouldn't bother with an index for a three-page pamphlet.
I'm explaining async/await to developers familiar with synchronous code flow, and they're struggling with why code doesn't execute in the order written. I map to restaurant kitchen operations: "Synchronous cooking means you completely finish one dish before starting the next. You chop vegetables, cook them, plate them, then start the next dish. Asynchronous cooking means you start tasks that take time to complete, then work on other things while waiting. You put rice on to cook, and while it's cooking, you prep vegetables. You don't stand there watching the rice. When the rice is done, you return to it." The mapping: synchronous code is single-task cooking where each operation completes before the next starts, asynchronous operations are tasks you can start and check on later like rice cooking, await is checking whether the rice is done and waiting if it's not, and callbacks or promises are reminders that tell you when to return to a task. The structural relationship is about utilizing waiting time productively. I acknowledge where this breaks down: code doesn't have physical constraints like stove burners the way kitchens do, and you can have thousands of async operations where a cook might juggle only a few tasks. But this bridge helps them understand why async code isn't "running things in parallel" in the CPU sense but rather "not blocking while waiting," why async operations need special syntax to coordinate completion, and why you can't just treat async functions like synchronous ones, because they already understand that you can't serve the rice before it's finished cooking even if you started other tasks in the meantime.