When you’re working as a creative, whether that is as a programmer, a writer, or a musician, it is important for you to recognize that creating and editing are two different mindsets. You need to separate the two processes. If you don’t, you will block the creative process. You’ll be at risk of tuning into “K-FKD radio”. You’ll also be less effective, as you’re not aligning the work in front of you with the mode you’re in.
Application for General Creative Thought
Fundamentally, you want to create and edit at different times or on different days. One way to approach this physically is with Walt Disney’s three-stage creative process.
What we are really trying to separate is the generative flow and the critic. When ideas are coming, we want to receive all of them. Their quality is not important when the ideas are flowing, just capture them while they are coming.
The time to review ideas, to edit a work, or to scope the effort is separate – nothing stops the flow of ideas like those types of activities. And when you’re in that critic mode,
Application to Writing
Start with a brain dump – don’t organize or edit or filter, just let it flow. Then, later, reorganize into a coherent outline.
Write your first draft by vomiting on the page. Then, later, go through and edit it into something more succinct and effective.
Recognize what mode you’re in, and tune your tasks to that.
Application to Programming and Product Development
Writing new code, in the sense of exploring a problem space or taking a first pass implementation, is more creative/generative in nature. So is coming up with the design for a (sub)system, brainstorming product features, and figuring out what kinds of tests you might need at the factory.
Code reviews, design reviews, refactoring code, running static analysis tools: these are tasks for the critic mode.
A common problem in software development is that we don’t often enforce good separation of these modes, often mixing the work. We set out to write new code, but end up getting sucked into refactoring work along the way. It would be much better to refactor first, then write new code. Or solve the new problem first, and then refactor to a more elegant solution. Similarly, the time to clean up commits is at the end of a working session, not in the middle of it.
Mob programming is often held up as an alternative to code reviews. The problem is that writing the code and reviewing code mixes the two mindsets, and the same separation idea applies. Also, if you’re focused on solving a problem as a group, you’re going to approach the work differently than if you’re focused on looking at the code as a group with the editor mindset applied.
In fact, how powerful would it be to have mob code reviews? Look over the code as a group and identify all the ways you can make improvements. Why not schedule that as a regular weekly team activity? How much better could you make your code base?
References
-
A Guide to Code Inspections by Jack Ganssle
The author is present to provide insight into his intentions when those are not clear (which is a sign there’s a problem with either the code or the documentation). If a people shortage means you’ve doubled up roles, the author may not also be the reader. In writing prose it has long been known that editing your own work is fraught with risk: you see what you thought you wrote, not what’s on the paper. The same is true for code.
-
Do the Work by Steven Pressfield
Let’s talk about the actual process—the writing/composing/ idea generation process. It progresses in two stages: action and reflection. Act, reflect. Act, reflect. NEVER act and reflect at the same time.
Unless you’re building a sailboat or the Taj Mahal, I give you a free pass to screw up as much as you like. The inner critic? His ass is not permitted in the building. Set forth without fear and without self-censorship. When you hear that voice in your head, blow it off. This draft is not being graded. There will be no pop quiz. Only one thing matters in this initial draft: get SOMETHING done, however flawed or imperfect. You are not allowed to judge yourself.
-
The Jerry Seinfeld Guide to Writing by David Perell
Writing and editing should be separate activities.
Seinfeld treats his writing self and editing self as two separate people. He treats his writing self like a baby. He nurtures it, loves it, and supports it. But once the editing phase begins, he changes his personality. He turns into a “harsh prick, a ball-busting son of a bitch” who says “that is just not good enough. That’s got to come out or it’s got to be redone or thrown away.”
-
Playing to Win: How Strategy Really Works by Lafley and Martin
At this reverse-engineering stage, there is absolutely no interest in opinions as to whether the conditions pertaining to a given possibility are true. In fact, expressing such opinions is counterproductive. The only interest is in ferreting out what would have to be true for every member of the group to feel intellectually and emotionally committed to the possibility under consideration.
-
Quintus Curtius, on Twitter
In my view, an author generally should not try to: translate his own work, narrate his own work on audio, or be the only person to edit his work. Reason? You need a fresh perspective. It’s too easy to slip into your own world, and overlook problems.
-
Clean Agile: Back to Basics by Robert Martin
The idea here is that writing code that works and writing code that is clean are two separate dimensions of programming. Attempting to control both dimensions at the same time is difficult at best, so we separate the two dimensions into two different activities.
To say this differently, it is hard enough to get code working, let alone getting the code to be clean. So we first focus on getting the code working by whatever messy means occur to our meager minds. Then, once working, with tests passing, we clean up the mess we made.
This makes it clear that refactoring is a continuous process, and not one that is performed on a scheduled basis. We don’t make a huge mess for days and days, and then try to clean it up. Rather, we make a very small mess, over a period of a minute or two, and then we clean up that small mess.