More programmer nonsense Re: Atomicity - Writing and Thinking
I'm excited for the clarity of ideas I found, so here I want to share stuff from two seemingly distinct fields: programming and writing.
I'm aware that the following is not new. It's probably part of Plato's Collected Works, book 7 or so.
The elements of programming, according to Abelson and Sussman (Structure and interpretation of computer programs, 2nd edition, Cambridge, Mass.: MIT Press. (1996), page 4)
- Primitive Expressions: represent the simplest entities of the language;
- Means of Combination: building compound elements from simpler ones;
- Means of Abstraction: naming and manipulating compound elements as units.
When techies lament that everything is "abstractions upon abstractions", they lament the result of doing the process of combining small things into larger things, and then treating these larger things as new units which in turn can be combined to create a new composite. It goes the other way, too: you can pry open large units and see the smaller ones.
I've thought about these elements of programming, and also a book called Elements of Programming the past weeks. This was my frame of mind: technical, both analytical (thinking about pieces and identifying them) and creative (how to build larger systems, step by step, and aid the sensemaking).
Along came Oliver Reichenstein of iA with 50% of a (to me) interesting idea.
He linked an old blog post of his: The Ideal Paragraph. It's very short but has a couple of references, namely:
- Johnie H. Scott: Topic Sentence Paragraph https://www.csun.edu/~hcpas003/topic.html
- James Surowiecki: "One Thought Per Sentence", The New Yorker, 2008-11-17 https://www.newyorker.com/business/james-surowiecki/one-thought-per-sentence --- Surowiecki retells a Bloomberg rule to avoid 'but's in sentences so that readers don't have to keep conflicting ideas in mind. That's what "one thought per sentence" boils down to: to avoid conflict, state one thing, and one thing only, per sentence.
In his post, he references up the ideas of having one thought per paragraph and one thought per sentence.
I imagine this as two units on different levels: the paragraph, representing one idea, which is made of sentences, each representing one idea as well.
┌───────────────┐ │ Paragraph │ ───▶ Idea └─┬─────────────┘ │ ┌──────────┐ ├──┤ Sentence │ ───▶ Idea │ └──────────┘ │ ┌──────────┐ ├──┤ Sentence │ ───▶ Idea │ └──────────┘ │ ┌──────────┐ └──┤ Sentence │ ───▶ Idea └──────────┘
On Mastodon, Oliver mused about an ideal length of an article, and how long form writing needs to be denser. For context, he published a huge article recently, Unraveling the digital markets act, and found that short-form writing can get away with being chatty, but long-form writing needs to be dense because the length itself is an imposition already. (See around here https://mastodon.social/@reichenstein/110858524534665631 for reference)
The following leap of thought seemed obvious to me in my current frame of mind, but Oliver drifted off writing about rhythm and sentence lengths, missing to go the same way consequently in both directions: an article, and a longer piece of writing, should also be of one thought.
┌───────────────┐ │ Article │ ───▶ Idea └─┬─────────────┘ │ ┌──────────┐ ├──┤ Parag. │ ───▶ Idea │ └──────────┘ │ ┌──────────┐ ├──┤ Parag. │ ───▶ Idea │ └──────────┘ │ ┌──────────┐ └──┤ Parag. │ ───▶ Idea └──────────┘
After pointing that out, I processed his sources and systematized my idea a bit more.
Talking about 1 thingie per widget, or 1 X per Y, is a different way to talk about Atomicity.
My short summary is this:
1) Limit a unit to one thought.
2) Complex units represent complex thoughts.
3) Thoughts decompose into simpler thoughts, simple thoughts compose to form new abstractions.
4) Understanding requires decomposition (to follow along with something new), insight requires composition and abstraction (to grasp a complex idea as one idea).
It's the same old, same old: analysis/synthesis.
Analysis versus synthesis: contrasting both approaches, frames of mind, brain halves.
Analysis and synthesis: putting both tools under one's tool belt.
┌───────────────┐ ┌───────────────┐ │ Composite │ │ Sum │ └─┬─────────────┘ └─┬─────────────┘ │ ┌──────────┐ │ ┌──────────┐ ├──┤ Unit │ ├──┤ Part │ │ └──────────┘ │ └──────────┘ │ ┌──────────┐ │ ┌──────────┐ ├──┤ Unit │ ├──┤ Part │ │ └──────────┘ │ └──────────┘ │ ┌──────────┐ │ ┌──────────┐ └──┤ Unit │ └──┤ Part │ └──────────┘ └──────────┘
This can be nested, recursively.
Back to Zettelkasten, this is the unit-level pattern:
┌──────────┐ │ Zettel │ ───▶ Idea └──────────┘
Everything about writing applies still: articles should be about one thing (remember how Zettel should be blog posts? That's at least part of the German ZK book, 1st edition, and mentioned by @Sascha here and there); each paragraph should be about one thing, supporting its section/article/Zettel; and each sentence should be about one thing, supporting its paragraph.
Structure notes are atomic, too, because they group other notes under one banner for a reason, expressing a thought.
It's a larger level of abstraction -- that's how I think of it with the vocabulary of my craft. It's a larger unit comprised of smaller units, a writing project with many details, say, in the terms of a Zettler.
┌───────────────┐ │ Zettel │ ───▶ Idea └─┬─────────────┘ │ ┌──────────┐ ├──┤ Zettel │ ───▶ Idea │ └──────────┘ │ ┌──────────┐ ├──┤ Zettel │ ───▶ Idea │ └──────────┘ │ ┌──────────┐ └──┤ Zettel │ ───▶ Idea └──────────┘
This is where my exciting journey ends: I've left out cross-references to programming concepts like how to talk about composites and their coherence, which basically means "how well do the parts support the sum's existence". I'll milk this idea for a while longer. I've struggled with making a better "Atomicity" post than the 2014 one, and this feels good. But as Kent Beck says:
Optimism is an occupational hazard of programming: feedback is the treatment.
--- Kent Beck, Extreme Programming Explained : Embrace Change (2000)
So: feedback about the intelligibility of this idea is welcome I do recommend processing the linked sources for one's own ZK. They're not that long, but succinct and seem useful.
Edit 2023-08-10: Added the "Zettel → Idea" diagram at the end which I forgot to paste.
Author at Zettelkasten.de • https://christiantietze.de/
It looks like you're new here. If you want to get involved, click one of these buttons!