How can the ideas that produce complex software be applied to write a better novel?
Over the last ten years, I have consumed many books, articles and courses on computer science and a similar number on how to write a novel. Both are complex projects which can easily fail. They soak up ever-increasing amounts of time and effort without ever resulting in a finished product.
I should know. I have many unfinished, unsatisfactory novels in my archives that I wish had turned out better. In my previous job as a software engineer, I also saw some projects fail to deliver the promised results and overrun their deadlines by months.
But I learnt how to produce software that satisfied the users and achieved its promised outcomes within predictable timeframes.
That is what I want for the novels I write, so how can the same ideas be adapted to write a better novel?
1. An RX approach to your writing
A big focus in computer projects is on making sure that the user experience (UX) is kept foremost. There is no point in developing software that no-one will use. From start to finish, you need to think about who your users are and what their experience will be of your software. Make clear promises to the user about what to expect from your software and then deliver on them. Bring users on a journey from their first encounter to becoming a fan.
A parallel exists in writing your novel. Keep the reader experience (RX) foremost. There is no point in writing a novel no-one will read. From start to finish you need to think about who your readers are and what their experience will be of your story. Make clear promises to the reader about what to expect from your book and then deliver on them. Bring readers on a journey from the first pages to becoming a fan.
2. KISS your novel
KISS is an important principle in software design that can save a project from spiraling in complexity. KISS stands for Keep it Simple, Stupid! Software projects are often subject to scope creep. As the project develops, it grows in scale, becoming more and more complex. Any initial ideas of completion within a timeframe go out the window as more and more features are added. KISS is a reminder that the simplest ideas are often the best.
Novels also have a tendency to become more complex over time. The number of protagonists, points of view, settings, time periods and objectives can increase until the story is bloated and hard to follow. But the best novels are often simple in structure. One protagonist, a single point of view, in one main area, over one short time period, with a single objective, gives a story that is easy to write and easy to follow. If your ambition is to write a huge epic with many of each of these, then great, but start with something easier. Keep it Simple, Stupid!
3. Consistent Look and Feel
One of the big draws of using a particular piece of software is that once you are familiar with how one part of it works, you can be sure that other parts will work in the same way. The buttons and menus will be in similar positions and will operate as expected. This is called a consistent look and feel and is a major idea when developing software. If the button on the left is normally used to send a message then the user will not be happy if on another page the button on the left deletes it.
When writing, it is important that the first few pages of a novel give the reader a sense of what is to come. They want to feel that they are in the hands of an experienced author who is promising a particular type of novel. If the cover, title and opening suggests a sweet romance with a happy-ever-after ending, they won’t be very happy if you kill the main characters in a vicious blood bath.
4. Choose a prototype for your novel
In software a prototype is model that is used in the development process. It has the same essential features of the final software, and gives a pattern that the developer can use to build from. It is a typical example that makes sure that what is built does not stray too far from expectations.
In writing your novel it can be very useful to identify a prototype novel that you can use as a guide when writing your novel. Think about the genre you are writing in and then choose a favourite book. Do some analysis of this book to make sure your novel doesn’t stray too far from what readers expect. Who are the key characters? What are the key scenes? What are the main storylines? What promises are made early on and how does the novel deliver on those promises?
5. An agile approach to writing
Amongst the novel writers there is the great plotter vs panster debate. Should you plan your entire novel before you begin to write, making sure you have a complete outline before you begin writing? Or should you just wing it by the seat of your pants and start writing to see what happens?
In the computer science world the plotters approach is called the Waterfall Methodology because each stage has to be completed before the next one can start and can be pictured like a series of waterfalls. No one starts to code anything until the analysis and design stages have been completed. It has been a poor model for long projects as the requirements often change once the project begins and more is known about what the final product should be, meaning a lot of the upfront analysis and planning also has to now change. There is a danger that the analysis and design phases will never complete as you get stuck in analysis paralysis, continually refining and improving and never ready to start implementing.
Similarly, when writing a novel, those who plan everything completely upfront don’t allow any room for discovery of what the novel will be as the writing unfolds. When newer, better ideas come along they can make a lot of the earlier planning redunEdant. They can also become enchanted with the research and planning phases, working on their outlines and never starting to actually write.
The parallel in the computing world to the pantsers would be starting to develop with no plan. This leads to spaghetti code. It may do the job but it is very difficult to change anything. One small alteration causes an avalanche of other changes and many fixes are needed to bring it back under control.
When writing a novel this way, the writer has to be prepared to do a large amount of rewriting at the end. Many thousands of words will be thrown away if they no longer serve the story that emerges.
So what is a better way?
Agile is a newer software development approach. The work is divided into small pieces, for example two weeks, called sprints. As you become aware of each piece of work required, the tasks, you add them to the backlog. Each sprint, you plan to complete a set number of tasks from the backlog. As you complete each task you move it to done and choose a new one. If you discover new work that is required, you add a new task to the backlog. At the end of the sprint, you review what you have achieved and plan the next sprint.
How could this help you write your novel?
Well initially the backlog would be discovery tasks:
- Who is your protagonist?
- Who is your antagonist?
- What are they fighting over?
- In what setting do they both first meet?
- In what setting does the protagonist have his lowest moment
You could also have some writing tasks:
- Write the scene where the protagonist and antagonist first meet.
- Write the scene where it looks like the protagonist won’t achieve their goal.
These tasks would differ in their details, depending on what you are writing, but the method remains the same. You will be both planning and writing in each sprint and will have something to review at the end. As new characters, settings and scenes arise you add new tasks to the backlog. You can see that you are making forward progress each sprint and if anything isn’t working you can spot it early and make changes.
So those are my five ideas for how computer science could help you to write a better novel, and hopefully do so quicker. I hope you find them useful. I am also working on story design patterns, based on the concept of software design patterns, could be used to describe regular story patterns. I hope to give some examples in future posts.