How traditional value streams work
Value-stream mapping on wikipedia.
Each step is represented in a uniform fashion on the diagram. You can scan the diagram and find out that 6 days is the largest lead time, however this takes more effort to do the more steps we add. There's a high cognitive burden when trying to process numbers and find the largest one.
This isn't the only way we can represent the data, and our visulizations shouldn't stop here!
What if we could more easily visulaize the flow of work, and the biggest contraints in the system?
VSM Visualizer (The perfect companion to the VSM)
This script creates a Value Stream Map Visualization in Miro, using Google Sheets as in input.
It's a slightly different way to view the data that's captured in a VSM workshop that can compliment more traditional daigrams.
Running the script
The script connects to miro and sheets APIs, and expects some env vars and an authentication file
Once you have the required auth/setup, run the script with the following commands:
export MIRO_TOKEN='XXX' export MIRO_BOARD='XXX' export SHEET_ID='XXX' # or skip this to use the example sheet python3 ./vsm.py
Example sheet and miro board:
Controlling the grid (optional env vars):
This part isn't required, but for those wanting more control on how the diagram looks, there are two env vars that you can use.
||largest value in sheet which is calulated and stored in
||Specifies how large the grid should be along the X axis|
||Specifies how large the grid should be along the Y axis|
Default grid (one row)
The default values result in a single row for each step, with each neatly fitting below the other and no wrapping or varied spaces between steps.
It's easy to tell which steps are the longest, though for large numbers you'll have to zoom out to see the whole VSM.
It's possible to specify any grid size (e.g 5x5, 2x12, 100x3), with grids repeating in the X axis as needed. This can be desirable to make use of vertical space when you steps have large numbers.
The script ensure uniform spacing between steps based on the largest possible row size, in this case
GRID_Y=5. This means more space between steps that don't have large numbers.
Authentication and Setup
You will need authentication for both miro and google sheets.
Create miro token: https://developers.miro.com/docs/getting-started
Create miro board (or use existing):
curl --request POST \ --url 'https://api.miro.com/v1/boards?fields=foo' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer XXX' \ --header 'Content-Type: application/json' \ --data '
Env vars for the script:
export MIRO_TOKEN='Bearer XXX' export MIRO_BOARD='XXX'
https://console.cloud.google.com/apis/dashboard enable apis and services > sheets
https://console.cloud.google.com/apis/credentials oauth > desktop
Env vars for the script:
export SHEET_ID='XXX' # or skip to use the example sheet
Also posted as Value Stream Map (VSM) Visualization on drewkhoury.com