Writing vs. Thinking

A few days ago, I came across a post by Mathias Verraes about writing a long essay.

He wrote that he was at the final stage. Everything was already on the page. The structure was there. The discoveries had already happened. What remained was the endless stream of “just one more edit.”

I replied with something I have believed for a long time: perhaps everything has already been said, but that does not mean we should stop saying things. We can revisit old ideas, look at them from another angle, and sometimes discover something useful in the process.

Mathias pushed back on one part of my comment.

He said he strongly rejected the idea that everything has been said. If we cannot imagine what has not been said, perhaps that is simply a failure of imagination.

But then he added something more interesting:

The discoveries and surprises he was talking about were the discoveries he had while writing. Even when he already knew the subject well, writing had a way of triggering new ideas.

That sentence stayed with me.

Because perhaps writing is not what happens after thinking.

Perhaps writing is one of the ways we think.


The thought we think we already have

We usually imagine thinking and writing as two separate activities. First, I think. Then, once I know what I think, I write it down. It sounds obvious.

Imagine that I want to explain an idea about software architecture. I might say:

“I know exactly what I mean. I just need to write it.”

So I open my editor and start. The first paragraph is easy. Then the second paragraph becomes slightly uncomfortable. I write a sentence and read it again.

Something is wrong. I change a word. Now the sentence means something slightly different. That new meaning makes the next paragraph weaker. So I change the next paragraph.

Then I realize that my original example does not actually support the argument. I replace the example. The new example raises another question.

And suddenly I am thinking about something I was not thinking about when I opened the editor. What happened? Did I simply do a better job of expressing the thought that was already in my head? I don’t think so. The writing changed the thought. The page became part of the thinking process.


Writing is not a printer for thoughts

We often imagine language as a kind of printer. There is a thought somewhere inside my head. I put words around it. The thought comes out.

But this model is too simple.

A thought is often much less precise than the sentence we eventually use to describe it. Before writing, I might have a feeling that two things are related.

I might have an intuition that something is wrong. I might have a vague idea that two concepts are being confused. But I may not know exactly what the relationship is.

Then I try to write it. And the language forces me to make choices. Is it A or B? Is this always true, or only sometimes? Is this a cause or a correlation? Are these actually two different things? What do I mean by “better”? What do I mean by “simple”? What exactly is the problem? Those questions are not decoration around the thought.

They are part of the thought.

There is an old idea in psychology that is relevant here. Lev Vygotsky argued that the relationship between thought and word is not a fixed relationship. It is a process, a movement from thought to word and from word back to thought. He described thought as being completed in the word, rather than simply being copied into it.

You (and I) don’t need to agree with every part of Vygotsky’s theory to appreciate the observation. We often discover what we mean by trying to say what we mean.


Try explaining something you think you understand

There is a simple experiment.

Pick something you believe you understand. Don’t pick something trivial. Pick something from your work. Maybe you understand why your team’s architecture has become difficult to change. You have lived with it for years. You have opinions about it. You could probably talk about it with a colleague for an hour.

Now write:

“The architecture became difficult to change because…”

And stop.

Finish the sentence.

Then continue:

“The reason this happened was…”

Then:

“The thing we misunderstood was…”

Then:

“If I had to explain this to someone who had never seen the system, I would say…”

You may discover that your understanding is not as complete as you thought.

This is not a failure. This is one of the reasons to write. The blank page is a rather polite way of finding out that you don’t know something.


Speaking is not writing

There is another reason writing is interesting. We sometimes treat speaking and writing as the same activity in different forms.

They are not. When I am speaking to you, we share a situation. I can point at something. I can change my explanation when I see your face. I can say:

“You know what I mean.”

And perhaps you do. Writing doesn’t give me that luxury. The reader is not there. I have to make the relationship between ideas explicit.

I have to explain what “this” refers to. I have to decide whether “it” means the architecture, the team, the decision, or the problem I mentioned three paragraphs ago.

Writing forces thought to become more explicit.

And writing has another unusual property:

it stays.

A spoken thought disappears. A written thought waits for you. Tomorrow you can come back and disagree with yourself. You can read a sentence written yesterday and think:

“What did I mean by this?”

Sometimes that is annoying. It is also useful. The page gives you something that your own mind does not easily provide: a stable external object that you can inspect.


The page remembers for you

Suppose I am thinking about three things:

A, B, and C.

Inside my head, I have to keep their relationships in working memory.

But if I write:

A causes B.
B depends on C.
C is actually the same thing as A.

Now the contradiction is sitting there on the screen. I don’t have to remember it. I can see it. This is one of the quiet powers of writing.

It moves part of the problem outside your head. Once an idea is on the page, you can move it, compare it, delete it, challenge it, and put something else next to it.

The page becomes part of the thinking system. This is why I often find that writing about a subject teaches me more about that subject than reading about it.

Reading gives me someone else’s finished thought.Writing forces me to construct my own.


Revision is not just cleaning

This also changes how I think about revision. Mathias described the final stage of writing as an endless stream of one more edit. Other people in the discussion described revision as tedious, annoying, satisfying, or all three at once. One comment said that the last 20% can feel like the other 80%.

Another described the final pass with a lawnmower that somehow manages to throw dog poo onto the front door. That may be the most accurate description of editing I have ever read. But there is another way to look at it. An edit does not always mean:

“This sentence is bad. Make it better.”

Sometimes an edit is a question:

“Is this actually what I mean?”

You remove one word. The sentence changes. You move one paragraph. The argument changes. You replace one example. The relationship between two ideas becomes visible.

You cut something you thought was important. And suddenly the whole piece becomes clearer. This is why Mathias’s observation about discoveries during writing is important. The discovery does not necessarily stop when the first draft is finished. Sometimes revision is where the next discovery begins.


And sometimes you discover that you were wrong

This is perhaps my favorite part of writing. You can start writing with an argument. Then, somewhere in the middle, you realize that your argument is wrong.

This sounds like a terrible outcome if we think writing is about producing content. It is a wonderful outcome if writing is about thinking.

Imagine starting with:

“Good architecture means having small components.”

You begin writing an article about it. Then you remember several systems where small components made everything harder. So you write about those examples. You notice that the real issue wasn’t component size. It was the relationships between components.

You revise the argument:

“Perhaps good architecture is less about the size of components and more about the cost of changing their relationships.”

Now you have a different idea. The article did not merely communicate your thinking. It corrected it. That is a pretty good return on a blank document.


This is also why language matters in software

This is where I naturally come back to software. I have spent a lot of time thinking and writing about language in software development.

Domain-Driven Design has been talking about language for decades. Teams need a shared language to understand a domain, model it, and communicate about it.

But I think there is something deeper here. Language does not only help us communicate a design. It can help us discover the design.

Consider a method called:

ProcessRequest();

It sounds harmless. But now try to explain what process means.

Maybe it does this:

Validate request
    
Check eligibility
    
Calculate amount
    
Create policy
    
Send notification

The problem may not be that the method is too long. The problem may be that the word process allowed us to avoid thinking about what actually happens.

The moment we try to replace it with meaningful words, the design starts becoming visible.

Perhaps we need:

ValidateEligibility();
CalculatePremium();
IssuePolicy();
NotifyCustomer();

The names did not merely make the code prettier. They exposed distinctions that were already hiding inside the behavior. The language helped us see the model.

This is one of the reasons I care so much about language in software.


Code is another form of writing

Programmers sometimes say:

“I don’t like writing.”

Then they spend eight hours writing code. Of course, they don’t call it writing. But it is. A class name is writing. A method name is writing. A test is writing. An API is writing. A domain model is writing. An architecture document is writing. A database schema is writing.

In each case, we are taking something that may be implicit in someone’s head and giving it a form that can be inspected by other people, including our future selves.

And once it has a form, we can argue with it. That is powerful.

You may think you understand a business concept until you try to give it a name. You may think two things are the same until you try to give them different responsibilities. You may think a behavior is obvious until you try to write a test for it. The act of writing exposes the gaps. Again, writing is not simply recording the thought. It is participating in the thought.


Have all the ideas already been said?

This brings me back to my original exchange with Mathias.

I said:

“Everything has already been said.”

He replied, quite reasonably, that he strongly rejects that idea. I think I would change my wording now. Maybe the useful question isn’t whether everything has already been said. Maybe the useful question is whether we can still see something differently. An idea can be old and still become useful in a new context. A concept can be familiar but badly understood.

Two familiar ideas can be put together in a way that reveals something neither one made obvious on its own. And sometimes you discover something that really hasn’t been said before. But there is an even more personal reason to write about an old idea. Sometimes you need to discover it yourself.

I did not invent Domain-Driven Design.

I did not invent the importance of naming. I did not invent the relationship between language and thought. People have been thinking about these things for a very long time. That doesn’t make thinking about them again pointless. Because reading an idea and understanding an idea are not the same thing. And understanding an idea and being able to explain it are not the same thing either. Sometimes you only really understand something after you have struggled to put it into words.


Writing as a conversation with your future self

There is one more thing I like about writing. The person who writes the first draft and the person who edits it are not exactly the same person. Five days later, you know things that you didn’t know when you wrote the first paragraph. The document becomes a conversation between different versions of yourself.

The first version says:

“This is what I think.”

The second version asks:

“Really?”

The third says:

“What about this example?”

The fourth says:

“That isn’t actually what you meant.”

And somewhere along the way, the argument becomes clearer. This is why I don’t think writing should be treated merely as a communication skill. It is also a thinking skill. And like most skills, it has to be acquired. We learn to speak naturally as part of growing up. Writing is different. We have to learn how to make our thoughts visible to someone who isn’t inside our head.

We have to learn how to structure an argument. How to make a distinction. How to explain an example. How to remove unnecessary words.

How to read our own sentences as if someone else wrote them. And perhaps most importantly, we have to learn not to be too attached to what we wrote five minutes ago. Because the sentence is not sacred. The thought is still developing.


The last edit

Maybe this is what I took from Mathias’s post. The last edit is not necessarily the end of thinking. Sometimes it is just another turn in the loop:

And around we go. Sometimes the result is a better sentence. Sometimes it is a better argument. Sometimes it is a completely different argument.

Sometimes it is the uncomfortable realization that the thing you wanted to say was not actually the thing you believed.

And occasionally, if you’re lucky, you discover something you didn’t know before you started writing.

That is the part I don’t want to lose. Not only because writing produces better articles. Because writing can produce better thoughts.

And perhaps this is also why language matters so much in software. We don’t only use language to describe what we already understand.

Very often, we use language to find out what we understand.

The code, the model, the name, the test, the document, the sentence on the screen: they give our thoughts somewhere to become visible.

And once a thought becomes visible, we finally have something we can argue with.

That is where the interesting part begins.

Leave a Reply

Your email address will not be published. Required fields are marked *