---
title: "How Ideas Become Software (or Don't)"
tags: community
---
# How Ideas Become Software (or Don't)
## Desirable Characteristics of an Improvement
The most useful ideas have a high degree of these qualities:
```graphviz
graph {
rankdir=LR
Improvement [label="Improvement"]
Relevance [label="Relevance\n🎯\ndegree overlaps with the charter"]
Value [label="Value\n💰\namount of waste would be eliminated"]
Precision [label="Precision\n💎\nhow verifiable the details are"]
Simplicity [label="Simplicity\n🖲\nhow much complexity would be added"]
Timeliness [label="Timeliness\n⏰\nhow appropriate for tool's maturity"]
// The Graph begins here
Improvement -- Relevance
Improvement -- Value
Improvement -- Precision
Improvement -- Simplicity
Improvement -- Timeliness
}
```
## "States" for Improvements
An idea go through these states:
```graphviz
digraph {
new [shape="oval" style="bold" label="New"]
closed [shape="oval" style="bold" label="Closed"]
open [label="Open"]
relevant [label="Relevant and Valuable"]
ready [label="Ready"]
in_progress [label="In Progress"]
done [label="Done"]
stale [label="Stale"]
new -> open [label="create issue"]
open -> relevant [label="triage: accept"]
open -> closed [label="triage: reject"]
open -> stale [label="⏱\n(45 days)"]
relevant -> ready [label="add\nacceptance\ncriteria"]
open -> ready [label="add\nacceptance\ncriteria"]
ready -> in_progress [label="start"]
in_progress -> done [label="complete"]
done -> closed [label="deliver"]
# TODO: how do we ensure that stories that are candidates for prioriziation are sufficiently "precise"
stale -> closed [label="⏱\n(45 days)"]
stale -> open [label="review"]
}
```
With that, we can assess the priority of a given idea...
### Assessing Relevance
- how well does the user's goal relate to the target workflow steps the tool is charted to address?
### Assessing Value
- compared to right now (including known workarounds), how much would it ...
- speed up a task?
- eliminate a redundancy?
- help avoid mistakes?
- make more obvious important information?
- reduce consumption of some resource?
- how much of the community would benefit?
- what are the circumstances in which one would run into the deficiency?
- how many make use of the workaround(s)?
Improvement:
- Precision:
- Want -- a (vague) desire for a change
- Need -- explicit use-case
Complexity:
- Interface -- how hard it is to use the software correctly
- Implementation -- how hard it is to understand
- Intrinsic -- how much the realized complexity is sourced from the problem/need
Each GitHub issue is an idea:
- Want -- Improvement (vaguely) expressed as a desire for a change
- Need -- Improvement refined to
- Use-Case -- description of how an Improvement makes a workflow step better
- Story -- an increment of a Use-Case with enough details to design (a piece of) the feature
- Feature -- an increment of functionality
# Reference
- https://www.graphviz.org/documentation/