---
# System prepended metadata

title: How Ideas Become Software (or Don't)
tags: [community]

---

---
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/