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