I stole this idea of this blog from Stephen Wilson's post of a similar name. And like all good borrows I've added, subtracted, and made some changes, because everything is a remix.
I don't know Stephen, but his post is provacutative. I'm assigned to a client outside my normal Defense Department and NASA comfort zone. The client needs a Release Management System integrated with a Change Control Board. Both are the basis of our defense and space software world. This client is trying to use agile, but has little in the way of the discipline needed to actually make it work.
The SWDev is like play writing is a beautiful concept that can be applied to the choas of the new client and also connected back to our process driven space and defense, which by the way makes heavy use of agile, but without all the drama of the it's all about me developer community.
Let's start here:
In both software and play writing, structure is almost entirely arbitrary. Because neither obey the laws of physics, the structure of software and plays comes from the act of composition. A good software engineer will know their composition from end to end. But another programmer can always come along and edit the work, inserting their own code as they see fit. It is received wisdom in programming that most bugs arise from imprudent changes made to old code.
It turns out of course neither of those statements is correct in the sense we may think. There is the act of composition, but that composition needs a framework in which to be developed. Otherwise we wouldn't know what we're watching or know what we're developing until it is over. And neither is actually how plays are written or software is written. It may be an act of composition, but it is not an act of spontaneous creation.
Let's start with play writing. It may be that the act of writing a play where the structure is entirely arbitrary is possible, but it's unlikely that would be a play you'd pay money to see. A Harold Pinter play may be unstructured Waiting for Gadot may be unstructured, but that's not really how plays are written. They follow a structured approach - there is a law of physics for play writing.
- You need characters - a protagonist and the supporting cast
- You need a setting - where are we and what's going on that supports the story
- You need some sort of imbalance between the characters, the setting
- You need some way to restore the imbalance or leaving it hanging
- You need to engage your audience in some way that will resonant with the personal feelings
That's about the story of the play. To actually write a play, here's a well traveled path to success. These guidelines are for the outcome of the writing effort starting in the beginning.
- A rough title is needed to anchor the play in the readers mind.
- An action statement, describing what the characters are going to do in the play, as a group, as individual. How are they going to change and who changes
- The form of the play describing the organization of the characters, the situation, the environment. How does the play's action relate to the emotional qualities of the characters and most importantly to the audience.
- The circumstances of the time and place of the action and other important conditions.
- The subject as an informational platform.
- The characters of course, describing what are the forces driving them and their relationships with each other, the circumstance, and the environment.
- The conflict. It's boring watching a play that is boring. What are the obstacles that have to be overcome by the characters?
- The meaning for the play. What is the point of view? What are the key thoughts for the play as a whole and the characters in the play?
- The style of the dialogue, the composition and manner of this dialogue?
- And finally a schedule for writing the play. When will it be done?
When we talk about writing software there is a similar story line
- Who are the protagonist? - they're the end users of the software.
- What is the setting? - there is a stated need for something new.
- What is the imbalance? - something is not getting done and it needs to be improved.
- How do we restore the balance? - by closing the gaps between the imbalance and the balance with a software solution.
The story line is the basis of Capabilities Based Planning. With the capabilities, the requirements can be elicited. From those requirements, decisions can be made for what order to deliver them to produce the best value for the business or the mission.
This process is about decision making. And decision making uses information about the future. This future information comes many times from estimates about the future.