Carlos
De la Guardia

Create boundaries and interfaces between ideas

Boundaries make things tractable. They limit how much you have to keep in mind while you work on an idea. They help you Break problems down into easier problems. Interfaces make things usable. They provide an quick description of the content of an idea and a way to refer to it, and therefore build on it. This is why you should Write small, self-contained notes and link them together.

The clearest and perhaps most important boundary is the page boundary, but every spacebar, comma, period, paragraph/block break, or outline indent also creates an important boundary.

Similarly, the clearest and perhaps most important interface/interaction is the page link/reference. But, ideas interface with each other in many different ways and at many different scales. Words can be found in a single phrase, linked by the rules of grammar. Sentences can follow each other, linked by transitional phrases like ‘for example’. Paragraphs can be made adjacent, showing they are closely related.

Each of these boundaries and interfaces has a role to play. It would be preposterous to put everything in one sentence, paragraph, or page, or to put every idea in a separate page, say. In each case, the primary concern is about clarity. It’s hard to read things when they’re too long, whether they’re a phrase, sentence, paragraph, or page. When something is too long, break it down. Use a boundary of whatever sort is needed.

However, almost every time you create a boundary, you’re splitting up ideas which are related in an important way. After all, they were created in the same sentence, paragraph, or page for a reason. A boundary can make it hard to see how the ideas are related, or cause them to become separated from each other like a ripped halves of sheet of paper scattering in the wind. Both of these problems become more pronounced as you move from small boundaries like commas to large ones like separate notes. This is why it is important to tie sentences and paragraphs together with transitional phrases, and to tie notes together with links.

In practice, most writers will have already developed a sense for when and how to introduce boundaries and interfaces between ideas - except at the level of pages and links. Roam’s introduction of links - a kind of interface - changes the way you use boundaries, and it lets you break ideas into smaller chunks than you otherwise could. As I mentioned, breaking ideas apart always runs the risk of making their connections hard to see, or altogether losing the fact they are connected and should sometimes be considered together. Coping with that problem is uniquely easy with page links.

Ironically, linking to a note using its descriptive title makes the connections between ideas clearer. In a single note, you only know that one chunk of text follows another. It can be hard to tell where one idea ends and another begins. And, this problem becomes worse as more ideas are present in a document. So, page references offer a key tool that allows you to express connections in a very powerful way.

(All the same arguments apply to block references, too, though that is even more foreign than page links. At least with page links, we can rely on our knowledge of the web. Block references are a bit more like referencing tweets, which is less common.)

Working on boundaries and interfaces helps you better understand the ideas, incidentally, since you are working to find not only how to express them in a short, self-contained way, but also explicitly define the relationships between multiple such chunks. This has the effect of taking a very complex bundle of ideas and pulling it apart into distinct, coherent ideas with distinct, specific connections. So, this is largely about constraints. This is big with Elm, where the whole idea is that, as you scale up, you need to find ways to constrain things so that when you try to solve a bug, for instance, you can quickly determine a small set of possibilities, because only a few thing can possibly have affected the relevant code. If the system is less constrained, then many more things could have affected the code and caused the bug. Likewise here, one wants to specify the connections fairly precisely. Not quite for finding bugs.

By the way, tags allow you to put a note in a certain set of notes, and this is also a useful way to create boundaries. But, instead of being about making a single idea manageable, it’s about how to Chunk ideas into manageable groups using outlines.

References

Scaling Elm Apps Richard Feldman