Thursday, July 23, 2020

Role, Goal, and Dole

In agile software development, a user story traditionally follows this template:
As a [person in a role], I want [some software feature (the goal)] so that I can [achieve some benefit to the user or business].
Some years ago I came up with an easy to remember rhyming mnemonic for this, "role, goal, and dole", where I use dole as a synonym for benefit. The user story template then becomes:
As a [person in a role], I want [some goal], so that I can [achieve some dole].

2021-09-25 Update

Recently I have learned that some are suggesting using Who, What, and Why as the user story template inputs. I like this better as there is some ambiguity in the distinction between "goal" and "dole".

Tuesday, July 14, 2020

Jigsaw Puzzles

For most of my career as a software developer, I have used statically typed programming languages such as Pascal, Ada, Java, and TypeScript.  Recently, however, I briefly dabbled in using the dynamically typed languages JavaScript and Python.  Debugging all of the run-time errors in the dynamically typed code reminded me of my earliest years of programming in BASIC in which I would have to spend time searching for misplaced commas.

When I switched from JavaScript back to TypeScript, I sensed an increase in my productivity and my confidence in the correctness of my code.  To explain to a layman the difference between programming in a dynamically typed language as compared to a statically typed language, I came up with the following analogy.  It is the difference between assembling a jigsaw puzzle in which all of the tiles are square versus one in which the pieces are of a variety of different shapes that can only interlock in the correct way.