I was going to save this as a draft because it is nowhere near publishable ready. I've literally just captured a few really interesting insights from conversations at work. I want to think about all of the concepts listed below in more detail and tell each section as a better story. But I'm leaving it raw, not going to hide anything until it's 'perfect' anymore.
In an imperative story, you only see what happens from the point of view of the main character. The other character 'sees' all of the other characters, but you don't get to see the story from the other character's points of view. The story is inflexible
Non imperative stories
In a non-imperative story, the story is told from the points of view of many different characters who each have their own individual stories. The main story is woven from the interactions between the characters, and depends on the mood of the characters at the time, and the environment that they are in. If the environment changes or the internal state of the characters is different, then you get an entirely different story.
Criminology, piecing perspectives
As a criminology student, this is how I wrote essays. I would start with the main case, the problem statement that was usually told from the point of view of one character. I would use that view as a baseline and then look for other perspectives without being judgemental. I'd take their stories and compare them to each other. In most cases, the different perspectives would reveal a different part of the story.
Boomtown is a TV series similar to CSI (Crime Scene Investigation) show. One event is told, but it is told from four or more different perspectives.
I find it hard to remember the storylines of TV shows or books that I have read. This is something that can make work difficult. When I work on my own projects I know the full story so it's easy for me to know how to make changes. At the moment I code in a more imperative style. At work, things are a mix of imperative and non-imperative. There is a lot of not so great legacy code that is being re-written. I find it hard to make changes because of the codebase being non-imperative. It's pretty big, so I don't know the existence of some characters. I'm not sure what the possible interactions could be or which character to ask for the specific information I need.