I have been reading more about the art of writing. In one article, they talked about the need for beta readers, who review in addition to your first draft readers. Another article talked about getting a plot idea vetted by editors or publishers before you embark on writing a novel. A third talked about how you revise and revise and revise until it's the best work you can do.
Then it hit me: writing a story is like writing software.
Getting a plot idea vetted: that's a design review. It's the high-level structure without too much detail except in a few troublesome areas. It lays out the idea and goal of the work with a little bit of how it will be accomplished.
First draft reviewers: that's the initial code review. A complete work exists, but it may not look right or it may not be as clean as it could be. You will probably go back and make substantial changes to the structure of the work, but the basic idea usually doesn't change. There are often multiple rounds of this as you refine the work.
Beta reviewer: that's the "approvals" code review. The work exists in a polished form that you believe to be ready for the world. The review is often done by someone not as familiar with the creation of the work who knows what they're looking for. They view the work overall and know where it fits into the world.
Thinking of writing in this form makes me much more willing to revise a story. Previously, I thought of the first draft as something fairly set in stone. After all, I took a lot of time to create it!
When I think of a story as software, I realize that telling the story is important, but how you tell the story is where the art is. I wouldn't reject a code review comment just because I really liked a function. Likewise, changing large parts of a work is a reasonable thing to do in the service of a better told story.
Of course, when all I have experience with is software, on some level, everything looks like software.